C8051F040初始化CH375程序库和CH375芯片失败[求助]

C8051F040初始化CH375程序库和CH375芯片失败,返回的错误代码是0x81

我使用的是单片机为C8051F040,晶振22.1184M,按照Readme.pdf上的设计3.3v产品的原理图连接,375是用的WCH公司提供的焊接好的的CH375vDIP28模块,子程序库使用的是FILELIB5文件夹中的CH375HF5.LIB,在给的例子程序CH375HFT.C基础上稍作修改,改动的部分如下: 1 按照自己做的板子的接口修改 sbit CH375_A0 = P1^5; sbit CH375_CS = P1^7; sbit CH375_WR = P1^1; sbit CH375_RD = P1^3; sbit INT0 = P3^2; 2 修改mDelay1_2uS( )函数,使得延时达到1.2us void mDelay1_2uS( ) { unsigned int i=100; while(i--); return; } 3 将C8051F040的P0口和P1口设置为推挽输出。

编译通过,但在使用子程序库中CH375LibInit( )执行初始化CH375程序库和CH375芯片时,即i = CH375LibInit( );后,返回错误代码0x81。这个错误代码我查看CH375HF5.H后发现是CH375硬件错误,可能需要复位CH375

#define ERR_CH375_ERROR 0x81 /* CH375硬件错误,可能需要复位CH375 */

可是复位电路是WCH公司提供的dip28上焊接好的,到底是复位电路有问题,还是有其他什么原因?请高手赐教,不胜感激。 谢谢!

库初始化返回0X81的话,那是硬件问题,需要用测试命令来测试你的硬件,参考CH375DS1,上面有测试命令的详细说明


接线有没有接好,程序中引脚的定义和实际电路是否一致都有可能出现0x81. 那你先发CMD_CHECK_EXIST测试命令测下,看读出来的数据是不是写进去的数据取反,来确定是不是硬件错误.


谢谢!我试一下:)


测试一下,程序如下: xWriteCH375Cmd(CMD_CHECK_EXIST); //写入0x06测试命令 xWriteCH375Data(0xaa); //写入0xaa测试数据 result=0x00; result=xReadCH375Data(); //读出数据

得到的结果是result=0xff

这个结果显然不对。我测试的时候用万用表CH375每一个相应的数据引脚和控制引脚都测试过电平,没有错误,但是结果还是不对。请问是不是片子有问题?


你的CPU是否有控制CH375复位??


返回0XFF一般来说要么是芯片没复位,要么375芯片的晶振没起振


查下CH375的晶振可起振了,在读出来数据不正确后面,循环发复位命令看下. 还有你的CH375是工作在串口方式还是并口方式?


你换一个普通的51单片机做下测试命令看下返回的数据是多少??


晚上示波器测试了下,DIP28模块上的晶振不起振,一直保持3.2v电压。 可是我是用WCH公司提供的焊接好的模块啊,而且买的两块都不行。会是什么方面的原因呢?郁闷。 请大虾赐教!


你买的是3。3V供电的转换板吗?转换版上面的VCC和V3有没有短接起来?


你买的我们的转换板是3.3V的吗? 会不会是你的供电是3.3V,而我们的转换板是以5V供电接线的,导致你所说的没有起振。


刚才技术支持打来电话,说3.3v的转换板测晶振时探针要打到*10档,否则会引起晶振停振。我昨天晚上测试的时候没有这样做。刚才按照这个要求重新做了一些,发现晶振工作是正常的,12M正弦波。

晶振工作是正常的,vcc(28脚)和v3(9脚)接3.3v,GND(12/23脚)和TXD(5脚)接地,并经过万用表测试。复位脚是转换板上经过电容接到3.3v的,数据总线接的是P0口,控制线A0 WR RD接到P1口的端口,CS强制片选接到GND端。INT接P3.2,这些都是经过万用表测试过的。

想不出哪边出错,郁闷。。。让大家费心了。。


那现在返回的数据是多少?还是0XFF吗??你输入的数据是多少??你给375上电的时候用示波器测试下看375的RSTI引脚上面有没有出现一个高电平或者你测下375的25脚和26脚的电压是多少,正常复位和晶振起振的话,25脚为低,26脚为高


25脚为低,26脚为高,RSTI(2脚)在上电瞬间有高电平,然后是低电平,低电平峰值为460mv


xWriteCH375Cmd(CMD_CHECK_EXIST); //写入0x06测试命令 xWriteCH375Data(0xaa); //写入0xaa测试数据 result=0x00; result=xReadCH375Data(); //读出数据

得到的结果是result=0xff


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