RE:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。
示波器显示的频率是8Mhz,根据寄存器的值算,可能是超范围了。现在单步可以读取,程序是对的,如果用中断的方式是不是也会出这样的问题呢?回复:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。
回复第 11 楼 于2014-07-11 10:21:37发表:示波器显示的频率是8Mhz,根据寄存器的值算,可能是超范围了。现在单步可以读取,程序是对的,如果用中断的方式是不是也会出这样的问题呢?
我用的查询法,还没有用中断试过。
RE:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。
我没用过STM8,其他的I2C都是类似的。但我不知道你读取SR3干什么用的,手册上写的是要清除ADDR时读取SR3。RE:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。
前一个stop发出去了么, 还有读之前是在写入么,写入需要等一段时间24C256才会有应答的, 程序应该改改, 不能这样写,很容易死机的,应该用超时判断, 错误恢复等容错能力回复:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。
回复第 13 楼 于2014-07-11 16:11:57发表:我没用过STM8,其他的I2C都是类似的。但我不知道你读取SR3干什么用的,手册上写的是要清除ADDR时读取SR3。
搞定了,I2C写数据和读数据的操作之间没有延时,延时10ms以上就能读写了,20ms以上的话时序比较稳定。
RE:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。
学习了:L回复:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。
回复第 14 楼 于2014-07-12 08:38:51发表:前一个stop发出去了么, 还有读之前是在写入么,写入需要等一段时间24C256才会有应答的, 程序应该改改, 不能这样写,很容易死机的,应该用超时判断, 错误恢复等容错能力
前一个STOP在示波器上发出去了,程序里面有加应答等待的。超时什么的死机问题应该有的,我目前只是先调出能读写,单单这块已经花我好几天时间了。之前网上看到都说STM8 的I2C硬件有点问题,这几天调试的时候也确实感觉有点不太对劲,数据信号的波形不是很好,不知道是不是因为用了内部晶振做时钟的缘故。
RE:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。
两个动作之间的间隔要注意冲突
页:
1
[2]