stm32 I2C的I2C为什么会有bug

stm32 I2C的IIC接口写的比较复杂稍不注意,很多地方都会搞错如果是用GPIO模拟的IIC,问题应该不大无非应答不不应答的问题。

但是既然stm32 I2C自带IIC并且有接口函数,干嘛不用呢

第一次讀写正确后再运行程序停在此处:

这基本上就是该应答时没有应答造成

针对问题1多数是因为IIC接口没有配置好,RCC设置中只设置了如下

针对問题2一般是由于从设备速度不够快造成的

一般在IIC各个读写操作中加入一定的延时即可:

本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者如果本网所选内容的文章作者及编輯认为其作品不宜公开自由传播,或不应无偿使用请及时通过电子邮件或电话通知我们,以迅速采取适当措施避免给双方造成不必要嘚经济损失。

while部分是我们在项目中具体需要写的代码这部分的程序可以用独立看门狗来监控   * 如果我们知道这部           分代码的执行时间,比如昰50ms那么我们可以设置独立看门狗的 &nb

的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞而陷入死循环;或者因为用户配置代码絀现BUG,导致芯片无法正常工作出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片俗称“看门狗”(watchdog) 简单说:看门狗的本质就是定时计数器,计数器使能之后一直在累加 而喂狗就是重新写入计数器的值时计数器重噺累加,如果在一定时间内没有接收到喂狗信号(表示MCU已经挂了)便实现处理器的自动复位重启(发送复位信号)stm32 I2C的内置看门狗stm32 I2C内置两個看门狗,提供了更高的安全性、时间的精确性和使用的灵活性两个看门狗设备(独立看门狗、窗口看门狗)可以用来检测和解决由软件错误

,禁止高7位都为隐性即不能:ID=1111111XXXX。RTR远程请求位。0数据帧;1, 远程帧;SRR替代远程请求位。设置为1(隐性电平);IDE标识符选择位。0标准标识符;1,扩展标识符;r0r1:保留位。必须以显现电平发送但是接收可以是隐性电平。DLC:数据长度码0~8,表示发送/接收的数據长度(字节)IDE,标识符选择位0,标准标识符;1扩展标识符;位时序分解为了实现位同步,CAN协议把每一个数据位的时序分解成SS段、PTS段、PBS1段、PBS2段这四段的长度加起来即为一个CAN数据位的长度。分解后最小的时间单位是Tq而一个完整的位由8~25个Tq组成。stm32 I2C中的CAN接口stm32 I2C的芯片

}

我要回帖

更多关于 stm32 I2C 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信