stm32 cubemx 硬件I2C的DMA问题

本文探讨了在使用Cubemx生成的I2C DMA代码时遇到的问题,即设备响应延迟导致的'I2C忙'错误。作者通过实例和逻辑分析发现,问题在于SCL信号未正确复位,解决办法是放弃DMA并手动控制I2C,强调了逻辑分析工具在问题排查中的重要性。
摘要由CSDN通过智能技术生成
目前项目需要使用I2C设备,使用cubemx生成的I2C并使用DMA的代码无法正常运行。第一次使用I2C正常,如果还想再次使用,错误代码返回I2C在忙。我以为我哪里没有设置好,导致官方代码有问题,网上搜了一天仍然没有解决。和大佬讨论后,大佬说:像很多EEPROM等I2C设备,它的I2C速度没有STM32快,导致STM32发送数据后,I2C设备没有应答,然后导致我上述问题。最后使用逻辑分析仪发现,I2C从设备(EEPROM)是应答了的。真正的原因是在完成第一次I2C访问后,SCL一直处于低电平。没有恢复正常的高电平。

在这里插入图片描述

结论:网上看有些人也在用cubemx官方的I2C的DMA,我却无法正常使用DMA。目前不知道是什么原因。也肯能是我画的板子有问题。
解决:不使用DMA可以正常使用I2C。

总结:遇到问题,多用逻辑分析仪或者示波器分析。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值