STM32CubeMX及所需环境阿里云盘下载地址(需要先安装Java环境):
1.功能需求:
所用核心板的芯片型号为STM32H750VBT6, 需要用到的功能有:
- 4路ADC(DMA方式)
- 1路DAC(作为输出给运放提供参考电压)
- 1路UART(DMA方式收发,接收中断用空闲中断)
打开STM32CubeMX软件,选择对应的芯片型号,进入配置页面:
2.RCC参数配置:
- 时钟系统对于CPU来说就相当于人的脉搏,系统会按照时钟信号执行代码(即每一条指令对应一个时钟周期),但是STM32的系统通常会有多个时钟源,这是因为外设不一定像CPU那样需要频率非常高的时钟信号(外设兼容的时钟上限不同)。
- 我们设置选项HSE和LSE的值为Crystal/Ceramic Resonator(使用晶振/陶瓷振荡器)。(Bypass ClockSource 是旁路时钟源的意思,即不使用晶振/陶瓷振荡器,直接通过外部输入 4-26MHz 时钟信号。)
- 在Configuration选项卡中将Power Regulator Voltage Scale选项改为:Power Regulator Voltage Scale 0,这个选项是稳压器的输出电压,直接关系到CPU的最大运行频率,分别是VOS0~3四个等级,默认VOS3是最低等级(功耗最低)。勾选为VOS0后我们可以根据需求在时钟树里面设置自己需要的频率。
- 在时钟树里的CPU Clocks中输入需要的频率值并按下回车键,系统会自动帮你设定好其他参数。
3.ADC参数配置
配置ADC参数之前先解释一下ADC_INP和ADC_INN的区别,通过数据手册可知是正、负输入通道,同时[0:5]是快速通道,[6:19]是慢速通道,在硬件设计的时候需要注意。
另外有几点需要注意:
- ADC 转换时间与 AHB 总线时钟频率无关;
- 可通过降低分辨率来缩短转换时间;
- ADCx_INNy 信号只能在相应的 ADC 输入通道配置为差分模式时使用。
下一步勾选用到的IO引脚,配置模式,通常用到的都是单端输入模式,因此选择Single-ended,如果是差分输入就选Differential。
3.1 Clock Prescaler(时钟分频器),选项有两大类,分别是Asynchronous clock mode divided by X(异步时钟模式分频数)和Synchronous clock mode divided by X(同步时钟模式分频数)。
通过查阅数据手册可以知道同步时钟即为AHB时钟源,分频系数可选1、2、4;异步时钟为一个特定时钟源,分频系数可选更多。
因为ADC最大可以接受的采样频率为36MHz,因此需要保证分频以后的频率小于36,而我配置的异步时钟频率(PLL2P时钟)为144MHz,所以选择异步时钟的4分频,给到ADC的频率正好是144/4=36MHz。
3.2 Resolution(分辨率),分辨率越高精度越高,相应的ADC转换时间也越长,根据需要选择对应的分辨率,这里我选择12位分辨率。
3.3 Scan Conversion Mode(扫描转换模式),单通道默认关闭,多通道时默认开启。
3.4 Continuous Conversion Mode(连续转换模式)和Discontinuous Conversion Mode(断续转换模式),如果要用DMA形式的话必须使能连续转换模式,且连续转换模式与断续转换模式不能共存,必须选择使能一个同时关闭另一个。连续转换模式下ADC会自动开启下一次采集,不用手动开启,如果对采集的时序有要求的话,比如采集之前要进行一些外设功能的切换等,就要考虑断续转换模式。
4.DAC参数配置
4.1 DAC的Output Buffer参数,使能后驱动能力更强,电压范围为:0.2V~Vdda-0.2V,外部电路可以省略运放;不使能的情况下驱动能力弱,电压范围为:0V~Vdda,需要搭配运放使用。
--------------------------------------------------未完待续2023.1.5--------------------------------------