求教---用查询的方式,发送数据正常,接收数据只能接收不正常

参照官网的例程,我使用查询的方式,发送数据正常,接收数据只能接收不正常,5个字节的数据,发送OK,往回传的时候只能收到1-2个数据,例如发1,2,3,4,5,正常收也是1,2,3,4,5,但是实际收到的是第一次1,2,0,0,0  第二次1,2,0,0,0 第三次5,2,0,0,0 第四次5,2,0,0,0,但是实际收到的是第五次1,2,0,0,0  第六次1,2,0,0,0。如此重复,特地读取FCR寄存器数据查看,0x5c和0xc7一次交替。求教

您好,CH438的FCR寄存器是只写寄存器,您读取的应该是IIR寄存器(中断识别寄存器),其中IIR所读的意义可以在手册查到。

当接收的字节数到设置的FIFO触发点时,产生接收数据可用中断,可以读取相应的数据。如果没有到达FIFO触发点,且在超过四个数据的时间内未收到下一个数据,就会产生一个接收数据超时中断,读取的就是没有到达FIFO触发点的数据。

所以“接收数据可用中断”“接收数据超时中断”两种中断状态都需要读取数据。您可以检查一下是否在相应的中断时读取了数据。


j_0057.gif谢谢指导,已经能正常通信了,但是使用了一段时间,频繁的通电/断电后,会出现类似死机的情况,断电一段时间后才能从新用,用示波器看了晶振,一直起振了的。用示波器查看TX引脚一直是高电平,我用的是51内核单片机,3.3V电源,3.6864Mhz的晶振,CH438用的是 22.1184MHz的晶振,波特率都是 19200,它们之间的通信是直接地址方式,WR, RD,CS, DATA,ADDR等涉及到等待时 都是 等待3个空指令,NOP,NOP,NOP,


目前是能用,就是时好时坏,努力调试中,有类似情况的朋友请指导下,官方的大神看到的话麻烦指导指导,网上查询了下资料,有的朋友说是速度太快了,明天再试试,延长延时试试。


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