历史上的今天
今天是:2025年08月08日(星期五)
2019年08月08日 | STM32硬件i2c的EV卡死问题的终极解决(已通过老化测试40h)
2019-08-08 来源:eefocus
鉴于各位对于stm32的硬件i2c均存在质疑且在此处下载的所有硬件i2c程序均基于一个模板
大家对于硬件i2c的说法均在初始化上而对于发送接收程序并没有多少改动
所以我个人对这一段进行了优化,加上了超时自动跳出和标志位的动作,完美解决了硬件i2c的卡死问题

这里就是一个初始化的程序,应注意,clockspeed不应该高于100k

这是一个初始化的顺序,应注意,i2c的初始化应在RCC和GPIO之后进行

上面这一段就是新增的程序模块,为的是对于易卡死的while循环做出限制,防止死循环。
只需将已有的程序中所有的关于硬件i2c的while循环均加上这一条就可以使用了。
此处如果在I2C1_hardware_wait_circle之内仍然没有收到EV事件的话,直接跳出循环和整个大循环,并将标志失败位置1,等待下一次进入此整个读写过程进行i2c总线的操作。这样就可以在软件上避免因为i2c总线受到了干扰而产生的不可逆转的程序卡死问题。
亲测bmp180热插拔,带其他中断,连续运转40h无事故。
自此我们相信,任何一个成熟的硬件的bug都是可以通过软件进行一定程度上的规避,而stm32的硬件i2c我们也没有理由直接放弃掉。
史海拾趣
|
我使用的是友善之臂的mini2440光盘资料里带的2.6.29内核,自己配置后编译的映像下到板子里总是停留在那个开机界面上,请大家帮忙看一下怎么解决? … 查看全部问答> |
|
小弟初识,描点函数W_DOT void __fastcall TForm1:: W_DOT(int O_X,int O_Y) { unsigned char i,j,dat; unsigned int k; j=PARA;//PARA=0x30;   ...… 查看全部问答> |
|
我现在需要一个功能是直接打开Wince里的Settings而不是里的某一项 我试过\\Windows\\ctlpnl.exe cplmain.cpl这个命令行不行 直接运行ctlpnl.exe也不行。 跟踪了下系统的Settings是由Shell32.exe createprocess打开的 请教具体应该如何做? 谢 ...… 查看全部问答> |
|
西安安泰测试设备有限公司地处西安市高新技术开发区,是一家专注于电子测试及工业测试领域仪器销售与系统集成的专业公司。 西安安泰测试设备有限公司长期致力于国防、教育、航空航天、工业电子制造、科研、电力、石油化工、计量检测等领域的测 ...… 查看全部问答> |
|
我使用GPIO模拟IIC初始化OV9652 已经成功(我读出来和写入数值一致) 并且用应用程序打开摄像头驱动时候,摄像头驱动也已经能够不停的产生中断。 但是不知道怎么回事,但是图像死活不出现。——我用老的BSP 编译出NK 摄像头可以正常采集,排除了硬 ...… 查看全部问答> |
|
关于便携式仪器的电源问题:有时候会要求软件开关机,单片机和外围电路各用一个稳压模块。但是在仪器关机后在外围电路的电源上还存在残留电压。影响低功耗的设计。 这个问题主要是单片机的端口没有处理好,端口的高电平向外反灌电势,然后通过外 ...… 查看全部问答> |
|
在学习的过程中,发现PPT中有好多的资料下载链接,就做了个截图,方便以后再次学习,下载资料用,现在将分享一下。 第一讲的内容: 在这一进,能够学到自己所需的资料可以从什么地方下载,可以了解AM335x家族芯片的各类,让大家在以后的学习过程 ...… 查看全部问答> |




