返回0x51说明命令操作已经成功了,那你后面检测U盘连接和磁盘初始化有没有正常通过?
中断处理出错了,不要第一个if(S2CON&0x01),否则就会在接收时进入死循环 void Uart2() interrupt 8 using 1 { if(S2CON&0x02) { S2CON&=~0x02; //清除S2TI位 Uart2Busy= 0; } }
检测U盘连接和磁盘初始化没有正常通过,返回了0x51,但是INT电平是1.1V,对此我把我的原理图发到你邮箱了。请帮忙看下~
看了你的原理图,中断引脚那块连接有问题,已在邮件里回复。
谢谢,已经看到了,请问这个串口用的库函数是CH375HF9.H,还是CH375HF4.H?
串口属于非总线方式,你可以使用CH375HF5或者CH375HFC这两个库,我们没有CH375HF9,具体你可以看一下CH375HF.PDF
现在初始化CH375,有问题!测试指令,返回来的确实是51,根据您的意思已经把硬件电路修改了。
这说明硬件电路没有问题,你的lib库添加进去能正常操作了吗?
解决了,谢谢,还是硬件的问题。现在初始化通过了,我现在在U盘里面创建TXT文件,但是没有成功,请问 调用这个i= CH375FileCreate( );不成功,这个有可能是什么别的原因吗?
i返回值是多少?文件名需要大写符合8+3格式。
返回值是0,文件名/MY_ADC.TXT uchar path[]="/MY_ADC.TXT"; uchar charCount=0; uchar i=0; uint paraTemp=100,pidout=5000,iival=220; //获取时间---------------------------------------------------------------- //一天记录一个文件 // PCF8563_rd_time(); path[1]=time.year/10+'0'; path[2]=time.year%10+'0'; path[3]=time.month/10+'0'; path[4]=time.month%10+'0'; path[5]=time.day/10+'0'; path[6]=time.day%10+'0'; //写文件------------------------------------------------------------------ strcpy((char *) mCmdParam.Create.mPathName, path); //"/AM10.TXT"
// RESULT = CH375FileOpen( ); RESULT= CH375FileCreate( ); if(RESULT== ERR_SUCCESS) { UART_Send_Byte(RESULT); mCmdParam.ByteLocate.mByteOffset = 0xffffffff; //移到文件的尾部 RESULT = CH375ByteLocate( ); } else { UART_Send_Byte(RESULT); // i = CH375FileCreate( ); //新建文件并打开,如果文件已经存在则先删除后再新建 }
charCount = sprintf( mCmdParam.ByteWrite.mByteBuffer,"20%02d-%02d-%02dT%02d:%02d:%02d,%3.1f,%f,%ld,0,0\r\n",time.year,time.month,time.day,time.hour,time.minute,time.second, (float)paraTemp/10,(float)pidout,iival); mCmdParam.ByteWrite.mByteCount = charCount; RESULT = CH375ByteWrite( ); RESULT = CH375FileClose( ); //数据录入
补充上面,编译成功后有报警提示: *** WARNING L14: INCOMPATIBLE MEMORY MODEL MODULE: .\CH375HF5.LIB (CH375SEC) MODEL: SMALL 我用的MEMORY MODEL 是large model
返回值为0是正确的,你先用uchar path[]="/MY_ADC.TXT";创建试一下不要赋值。你 path[6]=time.day%10+'0'不是把'.'代替了吗?文件名就不对了?
现在解决了。不过添加了库之后,工程xdata溢出了,有没有办法解决这个问题呢?
xdata溢出不是你添加了库造成的,而是因为你定义了磁盘缓冲区和文件缓冲区占用了RAM,你可以不定义文件缓冲区,使用双缓冲区交替读写减少RAM。