目录
五、多通道DAM转运
一、ADC的三种工作方式及优缺点
1.查询模式:查询模式下,占用CUP时间较多,cup效率较低。
2.中断模式:相比查询模式大大释放了cup,提高了cup的利用率。
3.DMA模式:该模式下基本不占用cup,能直接将ADC采集的数据存储到存储器。
二、ADC的转换
转换方式需要根据情况搭配使用,分为扫描模式(Scan Conversion mode)、连续转换模式(Continuous Conversion Mode)和间断模式(Discontinuous Conversion Mode)。
ADC单通道转换:
“单次转换,连续扫描模式关闭”:ADC使能一次,只能进一次转换;若要持续转换需要每转换一次重新使能一次ADC。
“连续转换,连续扫描模式将关闭”:使能一次ADC可以一直转换,不需要重新使能ADC。
ADC多通道:
“单次转换,连续扫描模式开启”:每个通道转换结束后停止,可以通过不断使能ADC持续对多ADC多通道的转换。
“连续转换,扫描模式开始”:可以一直进行多通道采集,不需要重新使能ADC。
三 、单通道阻塞模式
CubeMX配置:
我使用的是stm32f103c8t6最小系统板与面包板进行外接10K的可变电阻进行 ADC采集。
Data Alignment : 可选左对齐或右对齐。
Conversion Mode:由于只使用了一个通道,关闭就行。
Continuous Conversion Mode:这里关闭,我们使用软件开启ADC。
Discontinuous Conversion Mode:单通道模式间断模式自动关闭,不可选。
Enable Regular Conversions:是否使能转换,开启规则转换。
Number Of Conversion:转换的通道数,单通道当然只能是1。
External Trigger Conversion Source:选择由软件触发采集。
Rank :每个通道的编号,
每个Rank有如下参数配置:
Channel:所选择的通道
Sampling Time:每次采集ADC所需要的时间(采样周期),T = 采样周期 + 12.5个周期,(其中1周期为1/ADCCLK,设置的ADC时钟频率为12M),这里我设置的ADC的采样周期 为1.5Cycles,所以转化一次总的时间T=(1.5+12.5)/12=1.167us。
在main.c文件中添加函数:
创建接收变量
调用 HAL_ADCEx_Calibration_Start(&hadc1); ADC校验函数
调用 HAL_ADC_Start();函数
接收ADC读取数据,通过串口接收显示数据
延迟时间,防止一直转换程序卡死。
四、单通道中断模式
这里勾选开启中断,其他不变
代码编写:
使能ADC函数HAL_ADC_Star(&hadc1); 改为 HAL_ADC_Start_IT(&hadc1);
调用ADC中断回调函数添加:
五、多通道DAM转运
我这里选择两个通道
程序代码编写: