50 IIC通信速度下限

博主在移植代码到新单片机时,发现IIC通信故障,经排查发现频率问题。通过调整GPIO操作方式,提升模拟IIC频率至100KHz以上,解决了通信问题。关键教训:IIC通信需100KHz以上频率,低于此可能导致从机不响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.引言

这两天又来调IIC了,很不开心的是,以前的GPIO模拟IIC的代码,移植到新单片机的时候,发生了不幸的事情,无法正常通信了!!!!!。

然后经过了近一天的各种方法的问题排除,发现IIC主机发送数据后,SDA引脚就一直是低电平,从机把引脚拉死了,原最后发现原因是SCK时钟频率不对,导致从机罢工!然后继续调试,最后在调试过程中生出一个想法,为什么从机死掉了,对比一下可以的IIC时序图,波形一毛一样,然后直觉的突然看到不同的地方!!!SCK的时序的频率是不是一样,然后经过查看,发现可以的IIC的频率必须大于100KHz,低于100KHz,主从就无法通信了!!经过查看,我IO模拟IIC的频率只有不到30KHz,所以对不起频率级别不够,用不起IIC。

 我模拟IO时序频率!才30KHz都不到,所以IIC无法正常通信!!!

 

2.问题解决

知道了问题所在那就好办了,目标就是提高模拟iO的频率!因为我调用的是厂家提供的库函数操作GPIO,而追进去发现这操作函数内容有点多,比较占用时间,所以想着直接操作寄存器不就好了吗,这样可以节省时间。。。。。按照这想法,终于对GPIO的操作,切换使用寄存器操作后,明显IO模拟的SCK切换速度大大增加,可以达到100KHz以上的切换速率,甚至达到IIC的快速模式!!故到此,主机和从机可以正常通信了!!!

至此要记录的内容就是:IIC通信速率是有要求的,不能低于100KHz,如果低于这个频率,那么从机可能就不响应了!!

over!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值