[求助]单片机与CH375的通讯问题

我连接好硬件后,用i = CH375LibInit( );i返回的是0x81,请问该如何排查。 晶振也起振,25和26也一高一低,2号复位引脚,我用电源串接了0.47u的电容。 还需要排查哪里,谢谢!!

(1)正常情况下,25应为低电平,26应为高电平 (2)0x81表示硬件连接或接口程序有问题,在LibInit前做测试2次命令,数据分别为0x55、0xaa。


25为低电平,26为高电平 您是说先 xWriteCH375Cmd(0x06); xWriteCH375Data(0x55); pp=xReadCH375Data(); 返回pp为00


首先需要看下你三个读写子函数是否有问题即写命令,写数据和读数据三个函数是否符合我们的时序要求。 其次你需要用示波器去看下在你写数据和写命令的时候,在WR的下降延数据是否有没有发送出来。同时在RD的低电平的时候CH375有没有把数据给你送出来。


我程序在另外一个板子上能用,都没有问题,换了块板子就不行了哈


如果程序完全一样的的话,换了板子,那应该硬件问题了,做个测试程,循环调用: xWriteCH375Data( 0x55 ); xWriteCH375Data( 0xAA ); 用示波器看看375的各个信号线的电平是否正确


如何查看那些引脚正常否? d0-d7应该为方波,示波器显示高电平:低电平为4:1 连A0都为4:1


按道理A0应该都为低电平才对吧


是否是CH375B坏了?


不是方波不方波的问题,你发数据0X55.CS,WR为0是采样,并且A0=0; 正确的时序为 CS = 0 WR = 0 D0 = 1 A0 = 0 也就是说CS,WR为0的时候,D0=1,A0=0.方法类似看其他的数据线.


CS与WR波形完全重合 WR与D0波形不完全重合,D0变化缓慢,WR是D0的二倍,也就是WR为0时,D0有时候为0,有时候不为0


按前面所说的,程序完全一样,一快板子好用,另一块不能用,那么应该是硬件上的原因,所以通过上述实验,分析375的各个信号脚上是否有信号来验证硬件连接和接口程序时序是否正确,请再确认一下2块板子的软硬件是否完全一致


DO有没有上拉?有的话去掉.还有就是你的读写时序明显出现问题了,WR应该先变为高.这个你去检查一下.按照同样的方法去测试其他函数.把你的读写375函数的代码贴出来吧,做好注释,说明硬件连接.


谢谢哈,是硬件连接出现错误了哈,,呵呵


for(m=0;m<10;m++) { i = sprintf( mCmdParam.ByteWrite.mByteBuffer, "%d\xd\xa",m); mCmdParam.ByteWrite.mByteCount = i; i = CH375ByteWrite( ); } 我用这段测试的话,U盘里应该是从1到10吧,怎么我的U盘里显示的是0,256,512,768,每次都增加256,望能给出指点。


原因是i = sprintf( mCmdParam.ByteWrite.mByteBuffer, "%d\xd\xa",m);有问题,具体原因请察看这个函数的解释,可以这么做: for(m=0;m<10;m++) { mCmdParam.ByteWrite.mByteBuffer[ 0 ] = m + '0'; mCmdParam.ByteWrite.mByteBuffer[ 1 ] = 0x0d; mCmdParam.ByteWrite.mByteBuffer[ 2 ] = 0x0a; mCmdParam.ByteWrite.mByteCount = 3; i = CH375ByteWrite( ); } 这样U盘中就是从0-9了


只有登录才能回复,可以选择微信账号登录