STM32IIC-IIC模拟从模式如何实现

来源:互联网 发布:yum安装的软件在哪里 编辑:程序博客网 时间:2024/06/05 14:15

网上的资料大部分都是模拟IIC主模式的,很少有资料告诉我怎么实现模拟IIC从模式。

因为特殊要求,我们在做汽车电容屏升级的时候,要扔掉原车屏的一个部件,即IIC从机部分,只保留IIC主芯片,并采用STM32替代被扔掉的IIC从机功能。

要实现IIC从机功能,最核心的部分就是如何精确的抓住IIC_SCL,也就是IIC主机发出来的时钟信号。只有抓住精确的时钟SCL,才能正确的读取到SDA的数据,才能真正模拟出IIC时序。

但是要抓住SCL信号可不容易,IIC最高速度有400K,最小有效脉宽达到1.6us(数字0/1),最小脉冲是0.4us(应答和STOP信号产生的尖刺),采用中断来识别SCL是不可能的做到的,因为即使在最高主频72MHZ情况下,STM32最小指令周期是1/72(us),从SCL中断发生到STM32进入中断响应,至少要要40个指令周期,也就是40/72(us),加上堆栈操作及变量,很可能已经错过了SCL信号。

所以只能采用查询方式来识别SCL,而到目前为止,我还没有看到哪篇文章是采用查询SCL的方式来模拟IIC从模式。

所以很多文章说模拟IIC从模式的内容都是假的,要么骗人要么就是从来没有实践过。

写这篇文章,就是想提醒很多跟我一样的人,不要老是拷贝别人的程序,以为改改就行了的,这样的想法肯定是会吃苦头的;

越是简单的事情,越是要多花时间来理顺,因为这是大厦的基石;

这是花了好多时间走了很多弯路,很愤怒差点被带沟里的博主,写于20160711。

0 0
原创粉丝点击