启用STM32F407的 DAC
使用 Stm32CubeIDE 和STM32F407 开发 touchGFX(在 800x480 的 LCD 上正常工作)。使用 DAC 通道(通道1-2)。无法启用 DMA 。通过设置为 Digital Output 来测试通道1 (PA4) 引脚,引脚正常。但是当我将此引脚设置为 DAC Out 模式时,引脚就像悬空一样。我怀疑某些配置强制了 Pin 状态,而 没有按照*.ioc 文件配置 DAC。哪些寄存器影响 DAC的 输出呢?我之前也遇到过类似问题,后来发现是没有调用 HAL_DAC_Start(),确认你这步做了吗? TouchGFX 有时候会重配置 GPIO 或者占用 DMA 通道,建议你检查一下 DMA 的分配情况,看是不是被别的模块占用了。 你有没有在 SystemClock 配置里启用 DAC 的时钟?__HAL_RCC_DAC_CLK_ENABLE() 这一句也很关键。 PA4 设置为 DAC OUT1 的时候,不能再用作 GPIO,确认 IOC 文件里已经取消了对 PA4 的其他用途绑定吗? 看你说引脚像悬空一样,建议你用示波器量一下 PA4,看是始终 0V 还是高阻状态,可能是输出没有 enable。 检查一下 DAC_CR 寄存器的 EN1 和 TEN1 位是否设置了,尤其是 EN1,没开 DAC 当然没输出。 TouchGFX 在启动时会初始化 LTDC 和 DMA2D,确保这些设置没影响到你 DAC 所用的 DMA 通道,比如 DMA1_Stream5 这些。 如果你用 DMA 给 DAC 输数据,记得用 HAL_DAC_Start_DMA(),而不是普通的 Start,不然不会自动更新输出值。 你在调试模式下试过直接写 DAC_DHR12R1 寄存器吗?比如给它写个 0x7FF 看看引脚有没有 1.65V 输出。 *.ioc 的确不一定是最终配置,CubeMX 生成的代码可能被你代码中的初始化顺序覆盖,建议看下 MX_DAC_Init() 是否被正常调用。 DAC输出引脚为模拟功能,不用配置复用功能寄存器(AFR),设置为模拟即可。
页:
[1]