坛里的帖子看了很多,大致了解了STM32的硬件I2C的确有一些BUG,或者说使用时有很多不方便满足的要求,比如DMA加最高中断。所以思考是否使用模拟方式替代。但有种观点是模拟I2C太耗资源。我认真分析了下,其实大部分I2C读写操作在程序中都是顺序类型的,及当读、写I2C从机时,必须读、写到想要的数据才能继续往下执行,如果其中出错,还必须重新来过。所以不管是用硬件查询,中断,DMA等方式还是模拟方式,都必须等待从机完成,所花时间决定与I2C速度和从机响应速度。如果可以这么理解,是否可以说其实模拟方式没有任何风险,速度差不多,故而是最好的选择?
望对这个问题有经验的朋友们不吝赐教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这样啊,学习了,目前还没涉及复杂系统,所以没遇到相关问题,看来还要继续努力啊
大家多交流。有些坑真的是掉进去才知道,这里吼吼,希望大家帮忙一起把咱们拽上来,谢谢了!
硬件是stm32L100+实时时钟rx8010,采用硬件IIC通信,跑freertos,间隔2s读一次时间,发现个别终端跑个几天就会死机,导致看门狗复位。后面改为模拟IIC就没再出现问题。不知道复位是因为软件问题,还是IIC硬件问题?请赐教
多谢兄弟的建议。如果非要用硬件,DMA应该是不错的选择。 我只是觉得对大部分I2C应用场合,都需要从机应答再决定下一步程序分支,所以即便使用DMA也需要等待I2C从机完成响应。因此DMA并不能节省CPU资源,仅仅是能够避免I2C出错。 不知在下的看法是否正确,请不吝赐教,谢谢!
一周热门 更多>