主机是硬件IIC向STM32发送data,但是STM32并没有回复响应位,主机通讯速率选择400K或者200K ,现象都是一样的。同样主机也读不到STM32发送的数据(数据均为0xFF),但是主机用IO模拟的话,可实现正常的通讯,通讯时间选择100K、200K速率。这是为什么呢?
我遇到过一个和楼主差不多的问题
使用USART3的时候(没有映射PB10 PB11) 数据接收完全正常 但是数据无法发送
原因:因为图方便 开时钟时用的是ALL 后来关闭I2C2的时钟 收发数据就完全OK。楼主可以看看是不是我这个原因造成的
回复 板凳 42960701 的帖子
我怀疑ARM的从在接收数据的时候会误判,进入stop。如果跑200K的速度,在主模拟那边,发数据的时候,先发SDA,然后抢占CLK,这个时候,ARM的从是没给出响应位的,如果先抢占CLK,然后发送SDA的话,ARM才能响应。如果用ARM做主从通讯,400K速度,ARM从这边也会给不出响应的,因为速度很快,SDA和SCL可能是同时给出的。所以如果带IIC的MCU硬件要和ARM通讯的话,就有可能出现这个问题。