LAT1158
Local Application Tips
LAT1158 Rev 1.0 Oct. 2022
STM32H723 序列 ADC 无法启动转换
关键字:ADCSTM32H7
1. 前言
客户使用 ADC 进行序列转换,配置完成后,不调用 Cube 库函数而使用寄存器操作进行
ADC 转换,发现无法启动 ADC 转换,且无任何报错。如果只使用一个通道转换 ADC,则
可以正常启动 ADC 转换。
2. 现象复现
使用 CubeMx 配置下面的 ADC 序列转换程序
1. CubeMX 配置
LAT1158
LAT1158 - Rev 1.0 page 2/5
正常的使用 Cube 函数启动 ADC 函数为:HAL_ADCEx_InjectedStart(&hadc1),此种情
况下 ADC 可以正常转换,无任何问题;如果客户使用下面的操作进行启 ADC 转换则出
ADC 停止采样:
ADC1->CR |= 0x01; // ADEN =1
ADC1->CR |= 0x08; // JADSTART = 1
寄存器无报错,而且 JADSTART 一直等于 1,但 ADC 没有启动转换。
2. ADC1 寄存器
如果客户改为只采样一个通道,而不进行多通道序列采样,则上述写法也无任何问题,
ADC 可正常转换。
3. 问题分析与解决
HAL 库中启动 ADC 代码看上去,实际 Cube 库函数做了很多判别,因此我们关心下
ADC 启动序列在参考手册中的说明: