【NUCLEO-L496ZG评测】ADC时钟问题修复&ADC_DMA使用&过采样&LCD1602驱动 昨晚摸索了一下,发现ADC有三个时钟可选,其中PLLSAI1时钟只有ADC1能用, PLLSAI2只有ADC2能用,而SYSCLK则是ADC1和ADC2都能用。由于PLLSAI1时钟要给USB-OTG提供48MHz的高频时钟,而如此高的频率ADC1无法使用,因此就只能使用系统时钟再分频了,而事实上ADC1使用SYSCLK时钟之后的确也能正常工作。 关于DMA,CubeMX对DMA的封装也是达到非常傻瓜的程度,只需要简单配置下即可使用。这里我要说下DMA数据的格式问题,由于ADC的数据最高是可以上到几千(mV)的,因此一个字节8位显然存不下,但是一个字32位由多余了,因此,可以采用半字16位来存。另外,ADC DMA采集必须使用循环采集,不可以使用单次采集,否则就会只采集到一个数据。 再说下过采样。过采样是ADC提高精度的一个功能。L496的ADC1支持过采样,可以设置许多参数。 设置完DMA和过采样之后,我在驱动文件里设置了DMA和过采样的开关,各位坛友下载之后按实际情况来调用。 LCD1602在之前的帖子中已经介绍过了,采用一片74HC595芯片驱动,信号线只需要RS、EN、RCLK、SER、SRCLK五根。 上传一份工程文件和头文件。 |
谢谢大佬分享,非常感谢 |