×
单片机 > 单片机程序设计 > 详情

STM32硬件IIC之DMA传输数据

发布时间:2020-08-24 发布时间:
|

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

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

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

2.IIC读取数据

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

3.IIC写数据

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


关键字:STM32  硬件IIC  DMA传输数据 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会