这个话题已经老生拒谈了,这是干问题还是让人很尴尬的一件事情,今天再来看看这些问题。 首先,我手里有两个I2C设备,一个是OLED屏(0.66寸),一个是MPU6050(六轴)。这两个设备都是支持高速400K的clk。为了同步验证,我分别用I2C1和I2C2两个口和他们通讯。为了测试方便,买的都是现成方案,EMI和ESD电路基本上都没有做。但不影响整体效果测试。 其次,接上两个设备正常运行。当我提高外设读写函数调用频率时,16MS调用一次,OLED的正常显示,而MPU6050的数据突然消失了,通过串口打印log信息,发现程序出现超时错误,LDA一直低电平,总线锁死状态。让我很诧异,是不是买的芯片质量有问题,还是因为我杜邦线太长的缘故。为了后期PCB设计方便,我是把外部两个上拉电阻焊掉了,用的MCU的内部上拉。左想右想,我又把外部上拉电阻焊上,把内部上拉去掉。结果意想不到的好转。 |
【解决STM32 I2C接口死锁在BUSY状态的方法讨论】
【关于stm32f103的硬件I2C锁死的重要解决办法】
【分享关于STM32f103 的硬件IIC I2C 调试心得与发现的问题】