[应用相关] AT32 I2S使用DMA半传输及传输完成中断来实现DMA双缓冲...

[复制链接]
 楼主| ArterySW 发表于 2020-12-9 18:29 | 显示全部楼层 |阅读模式
本帖最后由 ArterySW 于 2020-12-9 18:31 编辑

本文主要演示AT32F403A I2S使用DMA半传输及传输完成中断的组合使用来实现DMA双缓冲存储接收数据的方法。

支持型号列表:
        AT32F403Axx
主要使用外设列表:
         I2S & DMA

1        快速使用方法
1.1        硬件资源
1)        AT-START-F403A V1.0开发板
2)        SPI2:PB12,PB13,PB15;SPI3:PA15, PB3,PB5
图1. AT-START-F403A V1.0开发板
开发板.png
1.2        软件资源
1)        SourceCode
?        SPI_DMA_Use_HTandTC 源程序  
注:        project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考AT32F4xx_StdPeriph_Lib_V1.x.x\Project\xxx\Templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。
1.3        示例使用
1)        打开 SPI_DMA_Use_HTandTC 源程序,编译后下载到实验板
2)        连线方式
PB12 < ---- > PA15
PB13 < ---- > PB3
PB15 < ---- > PB5
图2. Keil 工程选择
keil选项.png
3)        通信成功且数据无误,LED2会点亮。
说明:本文只提供一种方法参考,可能切合某些实际应用的话(比如允许更改DMA目的地址等),还有更加合理的方法,所以需要具体问题具体讨论。

SC0064_AT32使用DMA半传输完成达到双缓冲效果.pdf

314.62 KB, 下载次数: 129

SPI_DMA_Use_HTandTC_V1.0.0.zip

983.52 KB, 下载次数: 344

里面有晴雨 发表于 2020-12-11 17:53 | 显示全部楼层
这个太棒了,我在想,是不是都可以这样模拟比较好一些。

hoop 发表于 2020-12-11 18:14 | 显示全部楼层
里面有晴雨 发表于 2020-12-11 17:53
这个太棒了,我在想,是不是都可以这样模拟比较好一些。

如果DMA自带双缓冲的话,使用它的双缓冲肯定是最优的。如果DMA没有自带双缓冲的话,个人觉得这是一个不错的方法,至少可以给处理DMA接收到的数据预留了更多时间。
musich 发表于 2020-12-13 18:16 | 显示全部楼层
真不错.
起点116 发表于 2022-2-25 23:39 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

198

主题

304

帖子

17

粉丝
快速回复 在线客服 返回列表 返回顶部

198

主题

304

帖子

17

粉丝
快速回复 在线客服 返回列表 返回顶部