你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32硬件IIC之DMA传输数据

[复制链接]
STMCU小助手 发布时间:2021-12-29 23:47
  1. <p>这里给出一个实现用DMA传输IIC数据的实现过程</p>
复制代码

这里咱们说3个点
1.检查IIC总线上是否有指定地址的器件
2.IIC读取数据
3.IIC写数据
下面来一个一个详细说明

1.检查IIC总线上是否有指定地址的器件

  1. 1.判断是否总线忙,如果忙则等待
  2. 2.产生起始位
  3. 3.等待起始位产生完成
  4. 4.发送器件地址(这里选择读写都是可以的)
  5. 5.等待是否有ACK位回应,(这里有两种判断方法1.通过判断ACK标志2.通过判断ADDR标志),最好使用ADDR标志位
  6. 6.清楚ADDR标志位
  7. 7.产生停止位
  8. 8.通过判断是否有ACK,就可以判断是否有指定地址的器件
复制代码

2.IIC读取数据

  1. 1.判断是否总线忙,如果忙则等待
  2. 2.产生起始位
  3. 3.等待起始位产生完成
  4. 4.发送器件地址,这里方向上选择写数据
  5. 5.等待发送完成,通过判断ADDR标志位是否置位
  6. 6.清除ADDR标志位
  7. 7.同时判断TXE位,这个在发送数据完成之后,也会被置位
  8. 8.发送要读取内存的地址
  9. 9.等待TXE位置位
  10. 10.再次发送起始位
  11. 11.等待起始位产生完成
  12. 12.发送器件地址,这里方向上选择读数据
  13. 13.等待发送完成,通过判断ADDR标志位是否置位
  14. 14.使能LAST位,使能这个,就能做到在传输最后一个数据的时候,自动产生NACK
  15. 14.开始用DMA传输下面的数据
复制代码

3.IIC写数据

  1. 1.判断是否总线忙,如果忙则等待
  2. 2.产生起始位
  3. 3.等待起始位产生完成
  4. 4.发送器件地址,这里方向上选择写数据
  5. 5.等待发送完成,通过判断ADDR标志位是否置位
  6. 6.清除ADDR标志位
  7. 7.同时判断TXE位,这个在发送数据完成之后,也会被置位
  8. 8.发送要读取内存的地址
  9. 9.等待TXE位置位
  10. 10.开始用DMA传输下面的数据
  11. 11.在DMA传输完成中断中产生停止位
复制代码



收藏 评论0 发布时间:2021-12-29 23:47

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版