本帖最后由 wenyangzeng 于 2018-1-12 11:46 编辑 Nucleo-L4R5ZI评测6 DAC+OPAMP_PGA STM32L4R5具有2通道12Bit的DAC和2通道可编程运算放大器,在STM32Cube_FW_L4_V1.10.0\Projects\STM32L4R5ZI-Nucleo-Nucleo演示包里没有DAC和OPAMP的演示代码。本次评测移植了STM32Cube_FW_L4_V1.10.0\Projects\STM32L4R9I_EVAL\Examples\OPAMP的代码到STM32L4R5ZI-Nucleo上来评测。 移植后的例子使用了内置的PGA模式(OPAMP可编程增益)。 1、DMA为DAC提供正弦波数据。 2、在DAC_OUT2 (PA5)上产生一个正弦波信号。内部连接到由OPAMP2运放输入。 3、OPAMP2的输出在PB0上,增益为2或4。当OPAMP仍然启用时,OPAMP增益被改变。 4、OPAMP应用了正常和低功率模式(采样和保持模式)。 5、OPAMP(和DAC)的低功耗模式也可以在内核为睡眠模式停留期间使用。。 6、内核设置为睡眠模式,没有直接存储器存取中断处理。 7、配置开发板上的"USER"按键在外部中断模式,在按键中断中改变不同的运行模式: 模式0: DAC: normal power mode OPAMP: normal power mode - gain = 2 DMA: circular mode - DMA half transfer IT handled by Cortex Cortex: run mode 模式1: DAC: normal power mode OPAMP: normal power mode - gain = 4 DMA: circular mode - DMA half transfer IT handled by Cortex Cortex: run mode 模式2: DAC: Low power mode OPAMP: normal power mode - gain = 4 DMA: circular mode - DMA half transfer - no IT handled by Cortex Cortex: run mode 模式3: DAC: Low power mode OPAMP: Low power mode - gain = 4 DMA: circular mode - DMA half transfer - no IT handled by Cortex Cortex: sleep mode 模式4: DAC: Low power mode OPAMP: Low power mode - gain = 2 DMA: circular mode - DMA half transfer - no IT handled by Cortex Cortex: sleep mode 评测中发现官方代码中的正弦波数据有误,不能生成正确的正弦波波形,修改后工作正常。 从评测结果可知,由于采用DMA传送正弦波数据,运行中没有消耗MCU系统资源,充分发挥了STM32L4+的低功耗特性。 运行结果,测试点在PA5(DAC)和PB0(OPAMG_PGA),从图中可以看出正弦波的波形底部有点压缩,判断应该是DAC输出数据0x00的时候输出端无法达到真正0V的缘故,这通过修改正弦波数据应该可以得到改善。 2倍增益 4倍增益 错误的正弦波数据的波形 |
ST的这个演示中正弦波只使用32个数据,我们完全可以自己增加数据位数得到圆滑的波形的,比如用的1024个数据。由于是DMA在搬运数据,只要DMA够快,输出频率可以高不少的。
https://www.stmcu.org.cn/module/forum/thread-614299-1-1.html