历史上的今天
今天是:2025年04月15日(星期二)
2018年04月15日 | STM32-IIC模拟从模式
2018-04-15 来源:eefocus
这里是讲的模拟IIC,不是采用硬件IIC。为啥用软件模拟IIC而不用硬件IIC? 除了ST的IIC模块本身问题,还因为硬件IIC移植不方便,在不同的MCU中无法通用;而且有的项目需要在IIC主从模式切换。
网上的资料大部分都是模拟IIC主模式的,很少有资料告诉我怎么实现模拟IIC从模式。
因为特殊要求,我们在做汽车电容屏升级的时候,要扔掉原车屏的一个部件,即IIC从机部分,只保留IIC主芯片,并采用STM32替代被扔掉的IIC从机功能,而且在不同应用内容下,需要切换IIC的主从工作模式。
要实现IIC从机功能,最核心的部分就是如何精确的抓住IIC_SCL,也就是IIC主机发出来的时钟信号。只有抓住精确的时钟SCL,才能正确的读取到SDA的数据,才能真正模拟出IIC时序。
但是要抓住SCL信号可不容易,IIC最高速度有400K,最小有效脉宽达到1.4us(数字0/1),最小脉冲是0.8us(应答和STOP信号产生的尖刺),采用中断来识别SCL是不可能的做到的,因为即使在最高主频72MHZ情况下,STM32最小指令周期是1/72(us),从SCL中断发生到STM32进入中断响应,至少要要40个指令周期,也就是40/72(us),加上堆栈操作及变量,很可能已经错过了SCL信号。
图1.高速模式下IIC波形
图2 应答和STOP信号产生的尖刺
所以只能采用查询方式来识别SCL,而到目前为止,我还没有看到哪篇文章是采用查询SCL的方式来模拟IIC从模式。
所以很多文章说模拟IIC从模式的内容都是假的,要么骗人要么就是从来没有实践过。
写这篇文章,就是想提醒很多跟我一样的人,不要老是拷贝别人的程序,以为改改就行了的,这样的想法肯定是会吃苦头的;
越是简单的事情,越是要多花时间来理顺,因为这是大厦的基石;
这是花了好多时间走了很多弯路,很愤怒差点被带沟里的博主,写于20160711。
史海拾趣
|
过完春节准备离职了 现在的工作就是消磨意志 工资也特低 民工中的民工 每天浑浑噩噩浑浑噩噩浑浑噩噩的过 满怀激情的来 经历过很多次“洗脑” 还是没有被同化 还是有一股子傲气和不安分 失望的离开 憧憬新的开始… 查看全部问答> |
|
我在linux下开发短信,使用开源的smstools来开发。 使用pdu模式时,发现对英语与数字可以很简单地实现。 但使用中文信息时,发现移动发过来的pdu报文解不正确。 如报文:测试 =“6D4B8BD5” 将两位一组转换为16进制数值,再转换为无符号字符。 ...… 查看全部问答> |
|
寻求指引:不知如何问起的问题,关于和PC通讯方面(软硬驱动都需要) (我一直做软件,虽然对Windows核心也有所了解,但却从未真正写过驱动,也未写过单片机软件,提的问题可能很不专业,请多包涵,多给点指引) 简单的说,可能这样:公司安排我项任务,改进一些旧的仪器。以前所有的仪器都是用RS232跟电脑连接的,我 ...… 查看全部问答> |
|
各位大哥,你们好,我的朋友想学习plc但不知道用什么开发工具,希望你们能提供一些信息!谢谢 各位大哥,你们好,我的朋友想学习plc但不知道用什么开发工具,希望你们能提供一些信息!谢谢… 查看全部问答> |
|
LM3S9997 J-LINK KEIL 这几天做了个LM3S9997的最小系统。。。。 JTAG已经连接上了。。。读到的IDCODE是 0X4BA00477。。。然后用打开LM3S8662的一个LED例程。。。 有个错误。无法下载程序:error :flash DOWNLOAD FAILED - CORTEX-M3 好 ...… 查看全部问答> |
|
最近再使用STM8S207RB进行开发,以下是自己使用cosmic时遇到的一些常见问题: 1.printf/sprintf入口参数必须是u16类型,否则打印结果不正确,很奇怪 2.u32位类型的判断if ((val%0x1000) == 0)此判断前必须强制转换,即 if ((u ...… 查看全部问答> |
|
ZigBee CC2531,3块 智能家居开发板----演示绑定与控制 LED ZigBee 开发板 3块;视频:http://v.youku.com/v_show/id_XMzA1ODU1MzQ0.html$(\'swf_p4Q\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\ ...… 查看全部问答> |




