讨论: 波特率为115200,单片机应选多大的晶体误差最小啊!?
一般选择的话,都是选择比较好计算的,一般的拿51单片机来说,可以是18。432或者22。1184
while ( CH375DiskStatus != DISK_CONNECT ) xQueryInterrupt( ); /* 查询CH375中断并更新中断状态,等待U盘插入 */ LED_OUT_ACT( ); /* LED亮 */ /* 检查U盘是否准备好,有些U盘不需要这一步,但是某些U盘必须要执行这一步才能工作 */ for ( i = 0; i < 5; i ++ ) { /* 有的U盘总是返回未准备好,不过可以被忽略 */ mDelay100mS( ); if ( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查询磁盘是否准备好 */ } xWriteCH375Cmd(CMD_SET_BAUDRATE); //设置新的375波特率,设置为115200 xWriteCH375Data(0x03); //输入分频系数 xWriteCH375Data(0xCC); //输入分频常数 mDelay100mS( ); TH1 = 0xFF ;//重新设置单片机的波特率//, 单片机22.1184MHz
for(count=3;count>0;count--){
/* 开始操作U盘 */
以上部分有错误没啊?怎么不运行啊! LED_RUN_ACT( ); 一直没有亮. 但U盘的灯一直亮
你前面以默认波特率9600通信是正常的吗? 按你采用22.1184晶振的话,应该不存在误差大的问题了。设置波特率成功的话,会返回一个操作码,你看一下返回的操作码是否正确,也就是看一下波特率是否确实设置成功了。