发布时间:2018-08-18 阅读量:2798 来源: 我爱方案网 作者: cicyxu
STM32的硬件I2C很多人都对它望而却步。因为很多工程师都说,STM32 硬件 I2C有BUG、不稳定、死机等等……最后都使用GPIO模拟I2C。因为很多人觉得模拟IIC比硬件IIC具有更方便的跨平台移植性!那么硬件I2C到底是不是个坑?真的是这么不好用吗?那今天就来看看这位工程师是如何为他正名的。
讨论资源来自技术问答,详情请入》》
zhangfei: 虚拟I2C更好移植性,不同的芯片未必有或者有那么多I2C 可以供开发者使用
Jacobs: 那个硬件IIC是有BUG的 所以大家都虚拟IIC
gyp0428: ST为了防止侵权,把硬件IIC整得有点复杂,还有BUG
哈里:我的系统里有几个芯片是IIC接口,刚开始用官方的库函数也花了挺长时间调试,好不容易调通了,可是待正式小批量使用时,出现了偶尔死机的情况,后来断点查看,是卡在了IIC处理上,具体在哪里也说不清楚。于是花了段时间,用模拟IIC接口方式,程序基本就稳定了。我的理解是这样的:1.硬件IIC的时序不能出差错,如果你在读写IIC时,此时若正好碰上两根线上有了干扰,时序就不对了,它等不到回信也就卡在了哪里;2.模拟IIC即使出了干扰,也只是此时读写出错,数据都不出来或写不进去,但程序还会继续运行,待下次轮到时再读写,最大的好处是不影响整个程序运行。3.至于运行时间,应该比硬件IIC要慢(慢多少我也没测过),但是慢这点时间,基本对程序没什么影响。
装X-BOY: 并不是IIC硬件有问题,是ST提供的库函数在设置IIC的API函数中出现了错误而且模拟的IIC同样很好用也有很多源代码,就不用再去改库函数里的BUG了,所以用模拟IIC的多
theuit: 我也想知道BUG在哪里?这么多人都说BUG,难道ST不会知道么?到底有没有改呢?如果没有改肯定有他的道理呀。我HW,没配过IIC的程序。
Linzw123: 。。。我遇到过有芯片,模拟I2C无论如何都不能准确配置,只有硬件i2c才能配置成功的情况,所以,两种都要会才是硬道理
追忆似水年华:的确,模拟I2C好用。但是在我看来在一个72M的Cortex-M3的MCU上这样做非常不妥。一般来说I2C是一种慢速总线,就算工作在400kHz的快速模式上,I2C传送每个字节仍需要至少23us——还没有计算地址、起始信号和结束信号的发送。如果使用GPIO模拟的I2C,这23us的CPU时间都在空转中浪费了,而这23us已经可以做不少的事情了,所以在STM32上I2C还是使用硬件为佳——虽然它多多少少有点缺陷。
从这个工程师的意思来看,STM32的硬件I2C不是不能用,只是用起来有点复杂。所谓萝卜白菜,各有所爱,每个人都有自己独特的使用方法,其实只要最终的结果实现了,何必执着于使用方法呢,你说对吗?
在现代汽车行业中,HUD平视显示系统正日益成为驾驶员的得力助手,为驾驶员提供实时导航、车辆信息和警示等功能,使驾驶更加安全和便捷。在HUD平视显示系统中,高精度的晶振是确保系统稳定运行的关键要素。YSX321SL是一款优质的3225无源晶振,拥有多项卓越特性,使其成为HUD平视显示系统的首选。
随着医疗技术的进步,心电监护设备在日常生活和医疗领域中起到了至关重要的作用。而无源晶振 YSX211SL 作为一种先进的心电贴产品,以其独特的优势在市场上备受瞩目。
对于可编程晶振选型的话,需要根据企业的需求选择。在选择可编程晶振的时候注重晶振外观、晶振的频率、晶振的输出模式、晶振的型号等等,这些都是要注意的,尤其是晶振的频率和晶振输出模式以及晶振的型号都是需要注意的。
在现代科技发展中,服务器扮演着越来越重要的角色,为各种应用提供强大的计算和数据存储能力。而高品质的服务器组件是确保服务器稳定运行的关键。YSO110TR宽电压有源晶振,作为服务器的重要组成部分,具备多项优势,成为业界必备的可靠之选。
其实对于差分晶振怎么测量方式有很多种,主要还是要看自己选择什么样的方式了,因为选择不同的测量方式步骤和操作方式是不同的。关于差分晶振怎么测量的方式,小扬给大家详细的分享一些吧!