STM32F4 HAL库 GPIO+DMA 控制AD9226(采样率可达16M)

本文介绍了使用STM32F4通过GPIO、定时器TIM8和DMA高速读取AD9226数据的方法。通过配置GPIO、定时器和DMA,实现数据的高速读取,同时利用PWM和UPDATE信号同步读取过程。然而,在实际应用中,发现当采样率较高时存在波形跳变问题,降低采样率后问题消失。最高稳定采样率受限于系统配置。


这里使用的是STM32F407,主频168M。

方案介绍

我使用的是gpio作为读取AD9226数据的外设。在一般的使用中,我们都是用CPU来控制gpio输入输出,往往忽略了gpio其本身拥有很高的读写速度。如果可以绕过CPU的控制过程,直接用定时器“指挥”GPIO读取数据,那么就可以达到很高的速度。我的大概方案是:GPIO连接AD9226的数据端口,将数据存储在GPIO的寄存器中,再通过DMA将数据传入CPU。同时用一个定时器输出两路同步的时钟信号,一路(PWM)输出到外部,作为控制AD9226的读时钟;另一路(UPDATE)给内部的DMA。这样就可以使进出GPIO数据传输速率相同,最终实现数据的高速读取。

图形化界面配置

引脚配置

这里使用GPIOD,需要注意的是,所用的引脚要来自同一个端口。
在这里插入图片描述
在这里插入图片描述

定时器配置

使用TIM8的原因

在STM32F4里,可以当DMA的触发源同时频率可以达到系统主频的定时器只有高级定时器(TIM8和TIM1)
在这里插入图片描述

基本配置

让TIM8产生上溢事件的的频率为主频的十分之一。

评论 84
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

森林344

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值