【应用笔记】TAE32F5300 基于 LL 库的多通道 ADC 采集配置
该应用笔记主要演示如何利用 LL 库实现多通道的 ADC 采集配置。
Keil、TAE32F5300 学习板(最小系统板)、DAP 下载器。
此应用笔记以 TAE32F5300 ADC 例程 ADC_Continues_DMA 为基础,在此例程上修改实现多通道连续 ADC 采集的功能。该例程在 main.c 文件中默认运行 ADC_CONTINUE_DMA,即单通道的 ADC 的 DMA 连续采样例程。在此基础上,按照如下步骤即可配置多通道的连续采样模式。
3.1 数据存储数组定义
每个通道的数据采集值需要数组存储。在定义时,BUF_LEN 由用户自行定义。__SECTION(SECTION_RAMB)代表该数组存放于 RAMB,如图 3.1。根据.sct 文件,此处可选 SECTION_RAMA、SECTION_RAMB、SECTION_RAMC。
找到 User_ADC_Continue_Dma()函数,将在此函数中实现多通道的 ADC 采集。在 LL_ADC_Init()函数前的部分是不需要修改的,如图 3.2。此部分完成 ADC CR2 寄存器配置、同步选择、过采样模式使能(TAE32F5300 必须开启过采样才能保证精度)、数据溢出选择、以及过采样的配置。
TAE32F5300 可用于采集的引脚为 11 个,即 ADC_CHANNEL_0~10,这里配置为通道 1。可根据需要决定是否开启采样完成中断。此次例程采用软件触发采样且为连续转换模式。用户在使用时需要注意的是,转换序列长度需要根据转换通道数量配置,如果开启了 4 个采样通道,则配置 ADC_REG_RANK_4,TAE32F5300 序列长度为 1-16。转换序列位置(顺序)为 2。
接下来配置 DMA,配置 DMA 是为了将转换结果搬运到指定的 RAM,方便读取。同样选择通道 1。禁能 DMA 满中断,传输的方式为循环传输。给出用于存放通道 1 转换结果的空间起始地址到 address,给出数组长度到 length。最后配置通道 1 的增益偏置。同样的,选定通道 1,设置增益偏置分组为组别 1,设置增益为 0x2000,设置偏置为 0x00。需要注意的是,一路 ADC 增益偏置分组共 4 组分别是 ADC_CALIB_GROUP0~3,多个通道可共用同一组。
具体配置详见图 3.3。
对于通道 0 的配置,与通道 1 的配置只有如下的区别,及在常规配置、DMA、增益偏置的通道选择上,转换序列位置,用于存储通道 0 转化数据的数组地址和数组长度。至于增益偏置的分组可以保持为组别 1,这里修改组别为 0,但增益和偏置值与组别 1 保持一致,如图 3.4。
我们在上面配置了此路 ADC 为软件触发方式且为连续转换模式,即一经触发 ADC 将会持续转换。调用__LL_ADC_REG_StartConversion(Instance)函数,如图 3.5,将会开启此路 ADC 所有通道连续转换。
至此对于该路 ADC 的通道 0 和通道 1 的配置就全部完成了,在 main 函数中,将会调用 User_ADC_Continue_Dma()函数,实现两个通道的 AD 转换。
用户可通过 debug,在 watch window 观察到 adc_buf0 和 adc_buf1 里不断更新的数据,如图 4.1。