最近刚学习IIC,买的STM32H7,觉得IIC设计十分不合理,速度很慢而且还很多芯片用的IIC(MPU9250,EEPROM等,触摸屏)。 现在书里还在用IO模拟IIC,那一堆延时觉得很可怕,一个400MHz的CPU模拟IIC占用了大量时间,现在芯片速度越来越快,难道死磕模拟IIC吗?网上说STM32 IIC有硬件BUG,但是书里写的太草率了。
假设一条指令5ns,模拟IIC一次发送延时68us,一次发送延时相当于CPU执行13600条指令,对于实时系统来说这种延时也很长了。
以前的STM32F1到无所谓,CPU本来就慢,延时68us也无所谓,但高速CPU延时太浪费了。
应该设计一种缓冲机制,CPU将数据写入缓冲区,由硬件按照IIC协议发送,这样不会让CPU死循环。 |