打印
[STM32H7]

ADC双通道采样并UART发送数据

[复制链接]
121|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
咚了个咚|  楼主 | 2025-3-2 20:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想要同时连续采样两个通道,采样率为10 ksps-12位,然后通过UART将数据发送给PC。我用Cubemx创建了配置和初始化,但没有使用HAL库来处理多通道ADC。
根据HAL驱动用户手册记性了多模式ADC的常规通道配置,选择多通道模式ADC(双模或三模),并使用HAL_ADCEx_MultiModeConfigChannel()函数配置DMA模式。
使用HAL_ADCEx_MultiModeStart_DMA()启动ADC外设,在这个阶段,用户指定每次转换结束时要传输的数据长度。
使用HAL_ADCEx_MultiModeGetValue()函数读取ADC转换结果。是否可以使用'HAL_TIM_PeriodElapsedCallback()'来触发ADC开始采样并通过UART发送其数据?

使用特权

评论回复
沙发
公羊子丹| | 2025-3-3 07:44 | 只看该作者
我之前也试过类似的方案,不过用的是单通道采样+DMA,你的双通道模式有测试过数据同步性吗?

使用特权

评论回复
板凳
周半梅| | 2025-3-3 07:48 | 只看该作者
用HAL_TIM_PeriodElapsedCallback()触发ADC采样是个不错的方法,这样可以精准控制采样率。你打算用哪个定时器呢?

使用特权

评论回复
地板
帛灿灿| | 2025-3-3 07:49 | 只看该作者
HAL_ADCEx_MultiModeGetValue()只能获取主ADC的数据,副ADC的数据你是怎么取的?

使用特权

评论回复
5
童雨竹| | 2025-3-3 07:51 | 只看该作者
UART的波特率设多少才能保证10 ksps的数据流不丢失?用DMA传输UART会不会更稳定?

使用特权

评论回复
6
万图| | 2025-3-3 07:52 | 只看该作者
我试过类似的多通道ADC采样,但用的是中断方式,感觉DMA模式效率会更高,想知道你的实际测试效果如何?

使用特权

评论回复
7
Wordsworth| | 2025-3-3 07:53 | 只看该作者
你考虑过用FIFO或者环形缓冲区存数据后再通过UART发送吗?这样可能更稳定一些。

使用特权

评论回复
8
Bblythe| | 2025-3-3 07:55 | 只看该作者
你的数据格式是怎样的?是直接把ADC的12位数据打包成16位发送,还是有其他编码方式?

使用特权

评论回复
9
Pulitzer| | 2025-3-3 07:56 | 只看该作者
STM32H7的ADC带双缓冲DMA模式,你有没有试过?这样数据可以更流畅地传输给UART。

使用特权

评论回复
10
Uriah| | 2025-3-3 07:58 | 只看该作者
你用的是同步模式还是异步模式的ADC?如果是异步模式,两个通道的数据可能不会严格对齐。

使用特权

评论回复
11
Clyde011| | 2025-3-3 07:59 | 只看该作者
这个方案很有意思,我正在H7上做类似的ADC采样,可以分享你的CubeMX配置吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

3

帖子

0

粉丝