这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » [学习笔记]终于知道SMBus的I2C实现为什么不能使用DMA了

共5条 1/1 1 跳转至

[学习笔记]终于知道SMBus的I2C实现为什么不能使用DMA了

院士
2024-05-17 19:30:49     打赏
[学习笔记]终于知道SMBus的I2C实现为什么不能使用DMA了

最近的项目里面需要使用I2C外设来实现SMBus协议实现。编写了代码,测试也通过了,还是挺高兴的。在实现过程中,我发现SMBus的实现没有使用I2C的DMA接收与发送功能,当时就觉得奇怪。所以,我在实现的时候也没有规避这个问题,而是直接使用了简单的DMA发送功能。这样也可以为我的MCU节省一部分中断的开销!关键,我在测试的时候也没有发现问题。不过,今天再回头看SMBus的文档,终于发现了其中的缘由。

我们先看一眼官方的文档描述截图:

smbus_10.png

从上面的描述,可以清晰地看出来:SMBus是要主动拒绝非自己的响应的命令。是主动拒绝!而不是默默地丢掉帧,这也就说明了为什么不能使用DMA的方式!因为DMA方式在接收过程中,并不处理接收数据内容,DMA控制器仅仅是把数据”搬“到指定位置。

说明文档一定要看!仔细看!反复看啊!




关键词: 笔记     SMBus     中断     DMA    

高工
2024-05-17 21:19:56     打赏
2楼

学习了


高工
2024-05-17 22:07:15     打赏
3楼

学习了


菜鸟
2024-05-17 23:23:42     打赏
4楼

学习了


专家
2024-05-18 06:15:52     打赏
5楼

感谢楼主分享


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]