donatello1996 发表于 2017-5-8 17:50:15

【NUCLEO-L496ZG评测】ADC时钟问题修复&ADC_DMA使用&过采样&LCD160...

【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五根。

    上传一份工程文件和头文件。

lxl8511 发表于 2019-1-9 19:29:06

谢谢大佬分享,非常感谢
页: [1]
查看完整版本: 【NUCLEO-L496ZG评测】ADC时钟问题修复&ADC_DMA使用&过采样&LCD160...