一个判断 I2C 总线通信异常原因的方法

文章介绍了如何通过示波器检查I2C总线通信异常,强调了主机和从机低电平电压差异、电阻配置对通信的影响。针对STM32F4xxx的I2C总线挂起异常,提出了复位外设和初始化端口的处理方法。同时讨论了I2C死锁情况及相应的恢复技巧,包括主从设备间的同步问题和死锁预防。
摘要由CSDN通过智能技术生成

一个判断 I2C 总线通信异常原因的方法

 

参考链接

【经验分享】一个判断 I2C 总线通信异常原因的方法 (stmicroelectronics.cn)icon-default.png?t=N7T8https://shequ.stmicroelectronics.cn/thread-633302-1-1.html

至于如何在i2c总线中如何使用还没有弄明白。后续再看。

使用方法记录

阻值分配

图中的倍数关系很重要。

注意上图中低电平分压为三分之一

上图中低电平分压为十一分之一

总结:

①  需要使用示波器查看,不能使用逻辑分析仪。

②  从机和主机的差别再低电平电压不同。

③  如果从机没有回复则没有那个1/3电压的存在。

④  必须是主机边串联的电阻阻值较小。否则从机收到的低电平电压太高不无法判断为有效信号。

⑤  图中的10R是倍数关系,不是10Ω电阻。(实际使用可以考虑4.7K和470Ω的组合进行使用用)

实际使用电阻使用ttl的0.8v下限计算所得的电路如下图(图中不再是1/3  和1/11 )

从器件时24%  主器件时12%  当然此组阻值是在3.3v供电条件下的阻值分布方案。(从理论:如果都正确的化下面的电路时可以正常通信的) 而此组阻值都是常见阻值电阻比较容易获得。

 计算表格如上图。

补充使用记录

STM32F4xxx的I2C总线挂起异常处理

 

 

 

 参考链接【实战经验】STM32F4xxx的I2C总线挂起异常处理 - STM32/STM8单片机论坛 - ST MCU意法半导体官方技术支持论坛 - 21ic电子技术开发论坛icon-default.png?t=N7T8https://bbs.21ic.com/icview-1656548-1-1.html#:~:text=%E5%A4%84%E7%90%86%E6%96%B9%E6%B3%95,%E5%BD%93%E5%87%BA%E7%8E%B0%E4%B8%8A%E8%BF%B0%E5%BC%82%E5%B8%B8%E6%97%B6%EF%BC%8C%E5%86%99I2C%E5%A4%96%E8%AE%BE%E5%AF%84%E5%AD%98%E5%99%A8%E6%96%B9%E6%B3%95%E5%B0%86%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%8CI%2FO%E7%AB%AF%E5%8F%A3%E4%BA%A7%E7%94%9F%E4%B8%8D%E4%BA%86%E9%9C%80%E8%A6%81%E9%80%80%E5%87%BA%E7%9A%84%E6%B3%A2%E5%BD%A2%EF%BC%8C%E5%8F%AA%E8%83%BD%E9%80%9A%E8%BF%87I%2FO%E5%8F%A3%E5%BC%BA%E6%8B%89%E6%95%88%E6%9E%9C%E9%80%80%E5%87%BA%EF%BC%8C%E5%8F%AF%E4%BB%A5%E6%9C%89%E4%B8%A4%E7%A7%8D%E6%96%B9%E6%B3%95%E8%BF%9B%E8%A1%8C%E5%A4%84%E7%90%86%EF%BC%9A%20%E6%96%B9%E6%B3%95%E4%B8%80%EF%BC%9A%E5%BD%93%E5%87%BA%E7%8E%B0%E5%BC%82%E5%B8%B8%E6%80%BB%E7%BA%BF%E5%8D%A0%E7%94%A8%E6%97%B6%EF%BC%8C%E7%9B%B4%E6%8E%A5%E5%A4%8D%E4%BD%8DI2C%E5%A4%96%E8%AE%BE%EF%BC%8C%E4%BB%A5%E5%8F%8A%E9%87%8D%E6%96%B0%E5%88%9D%E5%A7%8B%E5%8C%96I2C%E7%AB%AF%E5%8F%A3%EF%BC%8CI%2FO%E5%8F%A3%E9%85%8D%E7%BD%AE%E4%B8%BA%E4%B8%8A%E6%8B%89%E6%A8%A1%E5%BC%8F%E7%9A%84%EF%BC%8C%E4%BA%A7%E7%94%9F%E8%99%9A%E6%8B%9F%E7%9A%84STOP%E6%B3%A2%E5%BD%A2%EF%BC%9B%E6%AD%A4%E6%97%B6%E5%9B%A0%E4%B8%BAMCU%E7%AB%AF%E5%8F%A3%E7%9A%84%E5%BC%BA%E6%8B%89%E4%BD%9C%E7%94%A8%EF%BC%8C%E5%B0%86%E4%BA%A7%E7%94%9F%E4%B8%80%E4%B8%AA%E7%B1%BB%E4%BC%BC%E4%BA%8ESTOP%E7%9A%84I2C%E9%80%80%E5%87%BA%E6%95%88%E6%9E%9C%EF%BC%9B

I2C死锁及恢复方法

 

参考链接

I2C死锁及恢复方法 - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/218202643#:~:text=1.%E4%B8%BB%E8%AE%BE%E5%A4%87%E5%9C%A8%E6%A3%80%E6%B5%8B%E5%88%B0SDA%E8%A2%AB%E6%8B%89%E4%BD%8E%E8%B6%85%E8%BF%87%E4%B8%80%E6%AE%B5%E6%97%B6%E9%97%B4%E5%90%8E%EF%BC%8C%E4%B8%BB%E5%8A%A8%E5%A4%8D%E4%BD%8D%E4%BB%8E%E8%AE%BE%E5%A4%87%E4%BB%8E%E8%80%8C%E4%BD%BF%E4%B9%8B%E9%87%8A%E6%94%BESDA%E3%80%82%20%E8%BF%99%E7%A7%8D%E6%96%B9%E6%B3%95%E7%9A%84%E5%89%8D%E6%8F%90%E6%98%AF%E4%BB%8E%E8%AE%BE%E5%A4%87%E6%9C%89%E5%A4%8D%E4%BD%8D%E5%BC%95%E8%84%9A%EF%BC%8CMCU%E5%8F%AF%E4%BB%A5%E6%8E%A7%E5%88%B6%E4%BB%8E%E8%AE%BE%E5%A4%87%E7%9A%84%E5%A4%8D%E4%BD%8D%E5%BC%95%E8%84%9A%E4%BD%BF%E4%B9%8B%E5%A4%8D%E4%BD%8D%E3%80%82%202.%E4%B8%BB%E8%AE%BE%E5%A4%87%E5%9C%A8%E6%A3%80%E6%B5%8B%E5%88%B0SDA%E8%A2%AB%E6%8B%89%E4%BD%8E%E8%B6%85%E8%BF%87%E4%B8%80%E6%AE%B5%E6%97%B6%E9%97%B4%E5%90%8E%EF%BC%8C%E6%8E%A8%E9%80%819%E4%B8%AAClock%E5%88%B0%E6%97%B6%E9%92%9F%E6%80%BB%E7%BA%BF%E4%B8%8A%EF%BC%8C%E5%8F%96%E8%B5%B0%E4%BB%8E%E8%AE%BE%E5%A4%87%E7%9A%84ACK%E4%BD%8D%E4%BB%8E%E8%80%8C%E4%BD%BF%E4%BB%8E%E8%AE%BE%E5%A4%87%E9%87%8A%E6%94%BESDA%E4%B8%BA%E9%AB%98%E7%94%B5%E5%B9%B3%E3%80%82,3.%E5%9C%A8%E4%B8%BB%E4%BB%8E%E8%AE%BE%E5%A4%87%E4%B9%8B%E9%97%B4%E4%B8%B2%E8%81%94%E4%B8%80%E4%B8%AAI2C%E7%BC%93%E5%86%B2%E5%99%A8%EF%BC%8C%E8%AF%A5%E7%BC%93%E5%86%B2%E5%99%A8%E5%8F%AF%E4%BB%A5%E8%87%AA%E5%8A%A8%E6%A3%80%E6%B5%8B%E6%AD%BB%E9%94%81%E7%8A%B6%E6%80%81%E3%80%82%20%E5%BD%93%E6%A3%80%E6%B5%8B%E5%88%B0%E6%AD%BB%E9%94%81%E6%97%B6%E4%BC%9A%E4%B8%BB%E5%8A%A8%E6%96%AD%E5%BC%80%E4%B8%8E%E4%B8%BB%E8%AE%BE%E5%A4%87%E7%9A%84%E8%BF%9E%E6%8E%A5%EF%BC%8C%E5%B9%B6%E5%8F%91%E9%80%819%E4%B8%AAClock%E7%BB%99%E4%BB%8E%E8%AE%BE%E5%A4%87%EF%BC%8C%E7%AD%89%E4%BB%8E%E8%AE%BE%E5%A4%87%E9%87%8A%E6%94%BESDA%E7%BA%BF%E5%90%8E%E4%BB%8E%E6%96%B0%E4%B8%8E%E4%B8%BB%E8%AE%BE%E5%A4%87%E5%BB%BA%E7%AB%8B%E8%BF%9E%E6%8E%A5%E3%80%82%20I2C%E7%9A%84%E6%AD%BB%E9%94%81%E9%97%AE%E9%A2%98%E6%97%A0%E6%B3%95%E4%BB%8E%E6%A0%B9%E6%9C%AC%E4%B8%8A%E9%81%BF%E5%85%8D%EF%BC%8C%E9%99%A4%E4%BA%86MCU%E7%9A%84%E5%BC%82%E5%B8%B8%E5%A4%8D%E4%BD%8D%E5%AF%BC%E8%87%B4I2C%E6%AD%BB%E9%94%81%EF%BC%8C%E4%BB%8E%E8%AE%BE%E5%A4%87%E5%9C%A8%E6%AD%A3%E5%B8%B8%E9%80%9A%E4%BF%A1%E8%BF%87%E7%A8%8B%E4%B8%AD%E4%B9%9F%E6%9C%89%E5%8F%AF%E8%83%BD%E5%BC%82%E5%B8%B8%E6%8B%89%E4%BD%8ESDA%E5%AF%BC%E8%87%B4%E6%AD%BB%E9%94%81%E3%80%82%20%E6%89%80%E4%BB%A5%E8%BD%AF%E4%BB%B6%E5%9C%A8%E8%AE%BE%E8%AE%A1%E6%97%B6%E8%A6%81%E8%80%83%E8%99%91%E5%BD%93%E6%AD%BB%E9%94%81%E5%8F%91%E7%94%9F%E6%97%B6%E8%A6%81%E8%83%BD%E5%A4%9F%E4%BB%8E%E6%AD%BB%E9%94%81%E4%B8%AD%E6%81%A2%E5%A4%8D%EF%BC%8C%E4%BD%BF%E5%BE%97I2C%E9%80%9A%E4%BF%A1%E5%8F%AF%E4%BB%A5%E7%BB%A7%E7%BB%AD%E8%BF%9B%E8%A1%8C%E3%80%82

I2C从机挂死分析和解决方法 - 简书 (jianshu.com)icon-default.png?t=N7T8https://www.jianshu.com/p/95f53ca2724e

基于 EEPROM 通信的 I2C 总线锁死解决方法-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/anlog/article/details/139005928?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22139005928%22%2C%22source%22%3A%22anlog%22%7D

特此记录

anlog

2023年7月11日

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32F4单片机的I2C总线,是一种用于实现设备间串行通信的通讯协议。I2C是一种串行总线,由I2C主设备(通常是微控制器)和I2C从设备(如传感器、存储器等)组成。它通过两根信号线(SDA和SCL)来实现设备间的通信。 使用STM32F4单片机的I2C通信,需要进行以下步骤: 1. 初始化:首先需要初始化I2C控制器,设置I2C通信速率、传输模式等参数。通过设置相应的寄存器,配置I2C控制器的工作模式和时钟频率。 2. 发送数据:在主设备通过I2C总线向从设备发送数据时,主设备发送起始信号,然后发送从设备地址和读/写位。接着,主设备发送要发送的数据,并等待从设备的确认信号。 3. 接收数据:在主设备通过I2C总线从从设备接收数据时,主设备发送起始信号和从设备地址以及读/写位。然后,主设备接收从设备发送的数据,并发送确认信号给从设备。 4. 错误处理:在I2C通信过程中,可能会出现错误,如通信超时、设备未响应等。需要在代码中添加相应的错误处理机制,及时捕捉和处理错误,保证通信的可靠性。 总的来说,STM32F4单片机的I2C通信使用简便,通过配置相应的寄存器,可以轻松实现设备间的串行通信。但是在实际应用中,需要注意处理错误和异常情况,以确保通信的可靠性和稳定性。 ### 回答2: STM32F4单片机是STMicroelectronics公司生产的一款高性能32位ARM Cortex-M4内核的单片机。其中的I2C(Inter-Integrated Circuit)总线是一种常用的串行通信协议,被广泛应用于数字设备之间的数据传输。 STM32F4单片机中的I2C总线模块提供了简便且灵活的硬件支持,使得开发者能够轻松地实现设备之间的通信。通过I2C总线,可以连接多个外部设备(如传感器、显示屏、存储器等),以便于数据的交换和处理。 在使用STM32F4单片机的I2C总线时,需要首先对I2C的相关寄存器进行配置。包括设置I2C的时钟频率、地址模式、确认模式等。然后,通过编程的方式实现数据的发送和接收。 I2C总线通信过程分为主机和从机。主机发送起始信号,然后发送设备地址和读/写位。接下来,主机发送或接收特定数量的数据,并在传输结束后发送停止信号。从机在接收到设备地址和读/写位后,根据主机的指令进行相应的数据处理。 当数据传输出错时,I2C总线提供了错误检测和处理的机制。通过检查相关的错误标志位,可以判断具体的错误类型,并采取相应的措施进行修复。 总的来说,STM32F4单片机的I2C历程主要包括配置模块、实现数据的发送与接收以及错误处理。在具体的应用中,可以根据不同的需求进行相应的配置和操作,以实现设备之间的可靠通信。 ### 回答3: STM32F4单片机的I2C历程可以追溯到该系列单片机首次推出的时候。I2C是一种串行通信协议,常用于连接微控制器和外部设备,如传感器、存储器等。在STM32F4系列中,I2C总线由两条线组成,分别是SDA(数据线)和SCL(时钟线)。单片机通过这两条线与外部设备进行通信。 在I2C的历程中,STM32F4单片机为我们提供了丰富的硬件资源和软件库支持,使得使用I2C变得相对简单。我们可以通过STM32的I2C外设控制器来配置和控制I2C总线。一般而言,使用I2C的步骤如下: 首先,我们需要初始化I2C外设控制器,设置I2C通信速率和工作模式等参数。然后,我们可以使用相应的库函数来发送和接收数据。在发送数据时,我们需要指定目标设备的地址,并将要发送的数据写入发送缓冲区;在接收数据时,我们需要指定源设备的地址,并设置接收缓冲区的大小。通过适当调用库函数,我们可以实现数据的传输。 I2C历程中,我们还需注意一些潜在的问题。例如,由于I2C总线一个多主机系统,可能会出现冲突。为了解决冲突问题,STM32F4单片机提供了软件和硬件解决方案,如使用中断和DMA传输等。此外,还需要注意I2C总线的电气特性,如上拉电阻的设置和设备的工作电压范围等。 总而言之,STM32F4单片机的I2C历程包括了外设控制器的初始化和配置、数据的发送和接收等过程。通过合理调用相应的库函数,我们可以轻松地实现与外部设备的通信。同时,我们需要注意一些潜在的问题,以确保I2C总线的正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值