基于 树莓派4 + STM32H7 构建支持云端应用的嵌入式系统平台 【二】

本文详细介绍了如何在树莓派4配合STM32H7微控制器上实现核心温度、参考电压和VBat电压的实时采样,利用DMA降低CPU负担,并通过定时触发和串口传输数据。同时讨论了STM32H7的DMA配置挑战和自定义ADC驱动。

上一篇 ->

基于 树莓派4 + STM32H7 构建支持云端应用的嵌入式系统平台 【一】

原创不易,转载请注明出处,互相尊重劳动成果,谢谢!

三. MCU 软件设计构建

1. MCU核心温度采样

先实现基于片内ADC采样核心温度的功能,数据采样使用定时采样方式,采样数据基于DMA传输,减少CPU占用。

(1)设计框架

H743内部有三个独立的ADC转换器,除了能够采样连接到外部的模拟引脚外,还有三个内部的模拟采样通道,分别为核心温度、参考电压、VBat电压。
在这里插入图片描述

所使用的开发板上,有一个可调电阻连接到了PC3引脚,查DataSheet可知,该引脚可作为 ADC3Channel 1 使用:

外部模拟采样输入电路
因此在建立片内采样驱动时,使用 ADC3 作为采样ADC,分别采样:
* 外部引脚PC3上的电压数值
* 内部参考电压
* 内部温度传感器
* VBAT电压
四路模拟信号数值。采样结果通过DMA传输保存到变量中。
采样使用定时100毫秒采样一次,既10Hz采样率。每次连续采样上述四个通道后,触发处理信号,通知检测任务,处理采样数据,并通过串口传输出去。

(2) 片内ADC初始化与驱动

片内 ADC3 的初始化,基于LL固件库接口,参考LL库中关于ADC的使用例程移植改造而来。初始化过程中,需要注意的是对于上述四个采样通道的设置。

目前仅在启动后的初始化中做一次通道的配置,之后运行不再动态改变,因此配置过程比较简单,基本是先配置通道,再启动ADC,之后运行过程中不再配置,因此不需要做配置时的复杂判断逻辑。而在运行过程中动态切换通道配置时,是需要先停止ADC,完全停止后再配置通道,之后再开启采样的。

通道配置中,采样模式设置为软件触发而不是连续自动触发,以满足10Hz的采样率控制;
调用 LL_ADC_REG_SetSequencerLength 接口,设置总采样通道数量为 4
要使能三个内部采样通道,需要调用接口 LL_ADC_SetCommonPathInternalCh,允许对指定通道进行采样;
最后,定义四个采样通道的顺序。
通道配置代码如下:

	if ((LL_ADC_IsEnabled(TEMP_ADC) == 0)               ||
	  (LL_ADC_REG_IsConversionOngoing(TEMP_ADC) == 0)   )
	{
   
   
		LL_ADC_REG_SetTriggerSource(TEMP_ADC, LL_ADC_REG_TRIG_SOFTWARE);
		LL_ADC_REG_SetOverrun(TEMP_ADC, LL_ADC_REG_OVR_DATA_OVERWRITTEN);
		
		LL_ADC_REG_SetSequencerLengt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值