STM32硬件IIC之DMA传输数据

这里给出一个实现用DMA传输IIC数据的实现过程

这里咱们说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,就可以判断是否有指定地址的器件

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传输下面的数据

3.IIC写数据

1.判断是否总线忙,如果忙则等待
2.产生起始位
3.等待起始位产生完成
4.发送器件地址,这里方向上选择写数据
5.等待发送完成,通过判断ADDR标志位是否置位
6.清除ADDR标志位
7.同时判断TXE位,这个在发送数据完成之后,也会被置位
8.发送要读取内存的地址
9.等待TXE位置位
10.开始用DMA传输下面的数据
11.在DMA传输完成中断中产生停止位
  • 4
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32F103是意法半导体推出的一款高性能Cortex-M3内核的32位微控制器,具有丰富的外设资源,包括IIC接口和DMA功能。下面将简要介绍STM32F103中IICDMA发送和接收操作。 首先,IIC接口是一种具有高速度和广泛应用的串行通信接口,适用于微控制器与外设之间的数据传输。STM32F103的IIC接口支持主机和从机模式,并能够通过硬件I2C控制器配置和驱动IIC外设。 在STM32F103中,使用DMA(Direct Memory Access)可以在不占用CPU资源的情况下实现数据的高速传输。DMA控制器是一种特殊的硬件设备,可以在外设和存储器之间直接传输数据,提高数据传输效率。 具体实现IICDMA发送和接收操作的步骤如下: 发送操作: 1. 配置IIC发送模式和相关参数,包括传输速率、地址等。 2. 配置DMA控制器,指定源数据地址和目标寄存器地址,并设置传输长度和传输方向。 3. 启动DMA传输并等待传输完成。 接收操作: 1. 配置IIC的接收模式和相关参数,包括传输速率、地址等。 2. 配置DMA控制器,指定源寄存器地址和目标数据地址,并设置传输长度和传输方向。 3. 启动DMA传输并等待传输完成。 4. 读取目标数据地址中的接收数据。 需要注意的是,使用DMA进行数据传输需要合理配置DMA通道和中断,可以通过DMA中断来判断传输是否完成,并及时处理传输结果。 综上所述,通过配置IIC接口和DMA控制器,可以实现在STM32F103上进行IIC数据的高速发送和接收操作,提高数据传输效率和系统性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值