踩坑无数所以基本每一行都有注释,方便大家阅读和移植。 STM32各系列ADC通道数量及管脚分配不同,可查询对应datasheet。本文档采用STM32F103C8T6。为方便大家理解、修改规则模式通道配置使用PA0、PB0、PB1。 移植注意事项: 1、引脚选择:根据datasheet自行选择。 2、通道数量:用于转换的通道数需按照实际数量修改; 3、规则模式通道配置:ADC_Channel_x为对应通道优先级,对应数据读取、存放在数组顺序。如本文档ADC_Channel_0对应PA0优先级为1,ADC_Channel_8对应PB0优先级为2。 修改完成即可使用。
2021-11-05 12:19:11 4KB stm32 AD采集 DMA
1
1.使用ADC采集音频信号 2.使用官方提供的FFT函数对采集到的信号进行处理 3.量化显示 4,在人耳能听到的频率范围(20-20KHz)中,故我们设置采样频率为44100Hz(根据采样定理,采样频率要大于信号最大频率的两倍,才能保证不失真)来采集这0-20KHz的音频信号。我们把采样点数设置为1024个点,那么在进行1024点FFT时,将得到44100Hz / 1024 = 43Hz的频率分辨率
2021-07-17 07:56:44 3KB FFT 音频节拍检测 STM32 AD采集DMA
1
调用了复位校准函数ADC_ResetCalibration()以及开始校准函数ADC_StartCalibration(),必须检查标志位等待校准完成,确保完成后才开始ADC转换.(建议是每次上电后都校准一次咯) ADC_SoftwareStartConvCmd(ADC1, ENABLE); 配置ADC1的模式为软件触发方式. 调用这个函数之后,ADC就开始进行转换了,每次转换完成后,由DMA控制器把转换从ADC数据寄存器(ADC_DR)中转移到变量ADC_ConvertedValue中,当DMA传输完成后,在main函数中使用 ADC_ConvertedValue的内容就是ADC的转换值了. 计算电压值: 在main函数中,ADC_ConvertedValueLoca是一个float类型变量,它保存了有转换值计算出来的电压值,计算的公式是ADC通用的 实际电压 = ADC转换值*LSB LSB为Vref+接的参考电压/ADC的精度( LSB =3.3/2的12次方) PS: 这里面ADC_ConvertedValue是用volatile修饰的,用 volatile 声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。因为 ADC_ConvertedValue 这个变量值随时都是会被 DMA 控制器改变的,所以用 volatile 来修饰它,确保每次读取到的都是实时的 ADC 转
2019-12-21 20:51:01 45.05MB STM32F4  DMA AD
1