打印
[STM32F4]

启用STM32F407的 DAC

[复制链接]
128|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
咚了个咚|  楼主 | 2025-5-27 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用 Stm32CubeIDE 和STM32F407 开发 touchGFX(在 800x480 的 LCD 上正常工作)。
使用 DAC 通道(通道1-2)。无法启用 DMA 。
通过设置为 Digital Output 来测试通道1 (PA4) 引脚,引脚正常。
但是当我将此引脚设置为 DAC Out 模式时,引脚就像悬空一样。
我怀疑某些配置强制了 Pin 状态,而 没有按照*.ioc 文件配置 DAC。
哪些寄存器影响 DAC的 输出呢?

使用特权

评论回复
沙发
公羊子丹| | 2025-5-28 07:27 | 只看该作者
我之前也遇到过类似问题,后来发现是没有调用 HAL_DAC_Start(),确认你这步做了吗?

使用特权

评论回复
板凳
周半梅| | 2025-5-28 07:28 | 只看该作者
TouchGFX 有时候会重配置 GPIO 或者占用 DMA 通道,建议你检查一下 DMA 的分配情况,看是不是被别的模块占用了。

使用特权

评论回复
地板
帛灿灿| | 2025-5-28 07:29 | 只看该作者
你有没有在 SystemClock 配置里启用 DAC 的时钟?__HAL_RCC_DAC_CLK_ENABLE() 这一句也很关键。

使用特权

评论回复
5
童雨竹| | 2025-5-28 07:30 | 只看该作者
PA4 设置为 DAC OUT1 的时候,不能再用作 GPIO,确认 IOC 文件里已经取消了对 PA4 的其他用途绑定吗?

使用特权

评论回复
6
万图| | 2025-5-28 07:31 | 只看该作者
看你说引脚像悬空一样,建议你用示波器量一下 PA4,看是始终 0V 还是高阻状态,可能是输出没有 enable。

使用特权

评论回复
7
Wordsworth| | 2025-5-28 07:31 | 只看该作者
检查一下 DAC_CR 寄存器的 EN1 和 TEN1 位是否设置了,尤其是 EN1,没开 DAC 当然没输出。

使用特权

评论回复
8
Bblythe| | 2025-5-28 07:32 | 只看该作者
TouchGFX 在启动时会初始化 LTDC 和 DMA2D,确保这些设置没影响到你 DAC 所用的 DMA 通道,比如 DMA1_Stream5 这些。

使用特权

评论回复
9
Pulitzer| | 2025-5-28 07:33 | 只看该作者
如果你用 DMA 给 DAC 输数据,记得用 HAL_DAC_Start_DMA(),而不是普通的 Start,不然不会自动更新输出值。

使用特权

评论回复
10
Uriah| | 2025-5-28 07:34 | 只看该作者
你在调试模式下试过直接写 DAC_DHR12R1 寄存器吗?比如给它写个 0x7FF 看看引脚有没有 1.65V 输出。

使用特权

评论回复
11
Clyde011| | 2025-5-28 07:35 | 只看该作者
*.ioc 的确不一定是最终配置,CubeMX 生成的代码可能被你代码中的初始化顺序覆盖,建议看下 MX_DAC_Init() 是否被正常调用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

23

帖子

0

粉丝