硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3761|回复: 7
收起左侧

[技术讨论] STM32F105,更换芯片后I2C异常讨论

[复制链接]

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2019-4-27 13:29:42 | 显示全部楼层 |阅读模式
原来的产品F105VB,后来芯片换成F105VC。
1、产品一个模拟I2C链接按键数码管驱动芯片
2、产品一个硬件I2C连接EEPROM  I2C2
3、产品一个硬件I2C链接一个IC,这个IC有 3.3和1.2两组电压供电。

原来的程序,在KEIL5重新选择F105VC的型号(RAM和ROM一样)原来的三组I2C IO口都没有改动,64脚换成100脚,脚号对接焊接。重新编译烧进去就正常开机了。

开机后,a.模拟I2C正常通信,数码管、按键正常。
            b.I2C2跟EEPROM正常通信,切换设置,断电记忆正常。
            c.I2C1 跟IC 通信异常,正常发start命令,接着发设备地址就出问题了,软件和硬件检查,都是SCL为低。

三套I2C 都是原来出货用的驱动,现在拓展一个功能需要换100脚的IC,两个硬件I2C的初始化逻辑,I2C读时序都一样。

在网上找过很多种异常的处理办法,暂时还没找到解决办法。麻烦经验人士提供一些测试手段,找问题。


硬件I2C其他异常.png
Releasing your creativity
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2019-4-27 13:30:26 | 显示全部楼层
仿真发现,PB6/PB7初始化后都是正常 高。
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2019-4-27 13:33:18 | 显示全部楼层
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY))   正常
...
          /* Send START condition */
          I2C_GenerateSTART(I2C1, ENABLE);  正常
          while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))   没问题

          /* Send device address for write */
          I2C_Send7bitAddress(I2C1, ChipAddress, I2C_Direction_Transmitter);     //这个仿真没问题,准备用逻辑分析仪继续看看

          /* Test on EV6 and clear it */
          while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))   ////现在通信 异常出现在这里


Releasing your creativity
回复

使用道具 举报

28

主题

178

回帖

262

积分

高级会员

积分
262
发表于 2019-4-27 17:01:47 | 显示全部楼层
不是传闻中STM32的I2C控制器有硬件bug的吗? 好像都采用软件IO自己模拟时序实现该通信过程的把~
不知道是不是这个原因。期待后续结果
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2019-4-28 13:50:26 | 显示全部楼层
mioc_hust 发表于 2019-4-27 17:01
不是传闻中STM32的I2C控制器有硬件bug的吗? 好像都采用软件IO自己模拟时序实现该通信过程的把~
不知道是 ...

我有个正常一点的产品,挂两个硬件I2C,三个版本硬件都没发现问题。现在硬件拓展测试模块,不知道是不是其他的电源纹波,或者模块会见的电器串扰。
Releasing your creativity
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2019-4-30 09:25:20 | 显示全部楼层
问题已解决
Releasing your creativity
回复

使用道具 举报

10

主题

140

回帖

170

积分

初级会员

积分
170
发表于 2019-4-30 11:18:17 | 显示全部楼层

怎么解决的?麻烦不要虎头蛇尾
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2019-5-4 08:53:41 | 显示全部楼层
lvehe 发表于 2019-4-30 11:18
怎么解决的?麻烦不要虎头蛇尾

板凳那里已经有软件分析的脉络。

然后外接逻辑分析仪,实测I2C通信的波形是否正常。

我的实际情况:A 发现I2C通信的波形不好,查到有个小原件焊错料
                    B,修复A问题后,发送设备地址的波形正常,但是没应答。然后就确定从设备有问题,更换从设备就搞定了。
Releasing your creativity
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-8 21:34 , Processed in 0.264232 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表