U盘读写模块编程-今日以来一直持续的困扰
U盘读写模块:
买的是标准板,模块的HEx被我重新下载了一次选择的是CH37XDL_.BIN
单片机:
我用的是51仿真板芯片是AT89C52
接线:
单片机 模块
P0 = D0-D7
RD = RD#
WR = WR#
P26 = CS#
P20 = A0
P15 = STA#
INT0 = INT#
程序:
PARA_INT
现象:
由于不能逐条跟踪程序的运行,我设置了P1.7接一个LED,每当执行过一条指令的时候就加入让P1.7输出0的指令,结果在“i = ExecCommand( CMD_SetupModule, 1 );”
这里程序就过不去了,也就是模块没有给单片机一个反馈。
把模块撤掉,单片机也是同样的反映,但是在没有插入U盘的情况下开机,P1.4也闪过之后插入U盘,P14开始闪动,或者是在接入U盘的情况下开机,后拔掉U盘P14也会开始闪动。

期待解决啊,急死了。

还有一个问题就是串口联机演示 标准版也可以使用吗?怎么用
[Emot]4[/Emot][Emot]4[/Emot][Emot]4[/Emot][Emot]4[/Emot][Emot]4[/Emot]
你在你的主程序开始的时候加大延时试下看可以不可以,延时到500MS以上,同时你看下你的模块的配置是否是并口的配置,还有一个问题就是你的并口线不能太长,最好不要超过20CM,串口联机演示你要将你的模块配置成3线制还要连上一个232才可以进行演示
E-MAIL:fqb@wch.cn TEL:025-52638375
您觉得这段程序延时的长不长
LED_OUT = 0; /* 开机后LED亮一下以示工作 */
mDelay100mS( ); /* 延时100毫秒,CH375模块上电后需要100毫秒左右的复位时间 */
LED_OUT = 1;
mDelay100mS( );
LED_OUT = 0;
mDelay100mS( );
mDelay100mS( );
LED_OUT = 1;
mDelay100mS( );
mDelay100mS( );
mDelay100mS( );
LED_OUT = 0;
mDelay100mS( );
mDelay100mS( );
mDelay100mS( );
mDelay100mS( );
mDelay100mS( );
mDelay100mS( );
mDelay100mS( );
mDelay100mS( );
LED_OUT = 1;
mInitSTDIO( );
并口线在15CM以内
模块是并口配置
还是不行

i = ExecCommand( CMD_SetupModule, 1 ); /* 设置模块配置 */
//mStopIfError( i );
P10=0;

这是中间的一段代码 如果i = ExecCommand( CMD_SetupModule, 1 ); 过的去的话P1.0上的LED应该会亮,结果没有亮。
问题出在哪里?



你通过串口将你程序执行到哪一步跟踪下,你看下是不是没产生中断还是出现错误
E-MAIL:fqb@wch.cn TEL:025-52638375
我用的是并口,怎么弄?感觉是一到ExecCommand子程序就有问题
是不是子程序库版本与模块的版本不匹配?
我的是5.1买的
程序是附送光盘的

程序是没有问题的,你确定你的硬件连线没有问题?
E-MAIL:fqb@wch.cn TEL:025-52638375
我确定

给个在线技术支持的方式吧,一步一步排除,我还想好好完成毕业设计啊

那你就换个例子试下,换PARALLEL文件夹下面的例子试下看可以不可以,还有就是你一定要知道程序死在什么地方,或者返回什么错误代码,不然的话没办法知道是什么问题
E-MAIL:fqb@wch.cn TEL:025-52638375
所有的程序都一样
我知道程序死在什么地方
运行到例如:i = ExecCommand( CMD_FileOpen, MAX_PATH_LEN ); 使用了ExecCommand函数的语句
在ExecCommand子程序中

。。。。。。。。。。。。。。
unsigned char ExecCommand( unsigned char cmd, unsigned char len )
/* 输入命令码和输入参数长度,返回操作状态码,输入参数和返回参数都在CMD_PARAM结构中 */
{
unsigned char i, j, status;
unsigned char data *buf;
CH375HM_INT_EN = 0; /* 关闭中断,防止中断应答修改模块的索引地址,如果是查询中断则不必关闭中断 */
CH375HM_INDEX_WR( 0 );
CH375HM_DATA_WR( cmd ); /* 向索引地址0写入命令码 */
CH375HM_DATA_WR( len ); /* 向索引地址1写入后续参数的长度 */
if ( len ) { /* 有参数 */
i = len;
buf = (unsigned char *)&mCmdParam; /* 指向输入参数的起始地址 */
do {
CH375HM_DATA_WR( *buf ); /* 从索引地址2开始,写入参数 */
buf ++;
} while ( -- i );
}
mIntStatus = 0xFF; /* 清中断状态 */
CH375HM_INT_EN = 1;
CH375HM_STA = 0; /* 产生下降沿通知模块,说明命令包已经写入,请求开始执行命令 */
//单片机发送一个下降沿信号,等待模块返回操作命令,就是死在这里的,单片机一直等待,模块没有相应
前面加再多延时也没用。
下面那条根本就是废话了

while ( mIntStatus == 0xFF ); /* 等待模块完成操作并返回操作状态 */

郁闷啊 面对这个东西一个星期,导师也帮我调了好久,谁能告诉我出了什么问题???????
留个QQ:4-4031-53-1求强人帮忙

我用的串口版的还行,至少能执行例子的程序,具体的工作我还没做。可是买的标准版的好像就有问题,也是执行到i = ExecCommand()就过不去。但我的问题是出在模块本身上,已经在联系调换了。
懒得说
我还能演示见鬼了
之后我调整了MAX_LEN的大小,莫名其妙好了………………

MAX_LEN你调了多少啊,我也是ExecCommand过不去
这人很懒,什么都没留下
我用的是标准版3线串口,问题和你一样
上电后加U盘,P1.4不停闪动,把模块撤掉,单片机也是同样的反映,但是在没有插入U盘的情况下开机,P1.4也闪过之后插入U盘,P14开始闪动,或者是在接入U盘的情况下开机,后拔掉U盘P14也会开始闪动。
这是什么问题
不插U盘的话,程序就卡到i = ExecCommand( CMD_QueryStatus, 0 )中的status = mRecvByte( );这一句了
这人很懒,什么都没留下
只有登录才能回复,可以选择微信账号登录