您好,
目前,我正在尝试在 DDR Tool 中调整 PCA9450C 的 BUCK6 输出电压,但我遇到了一个问题。
我将以下命令烧录到 i.MX8M Plus 开发板上,并确认 PCA9450C 确实已连接到 I2C1:
内存集 0x30330200 32 0x00000010 # I2C1_SCL 多路复用器 (SION=1)
内存集 0x30330204 32 0x00000010 # I2C1_SDA 多路复用器 (SION=1)
内存集 0x30330460 32 0x000001C6 # I2C1_SCL 焊盘
内存集 0x30330464 32 0x000001C6 # I2C1_SDA 焊盘
sysparam set pmic_cfg 0x004A
sysparam set pmic_set 0x1E11
下载完 .ds 文件后文件执行后,UART 控制台返回了以下日志:
PMIC 在 DDR 脚本中初始化
I2C_I2SR(0x30a2000c):0x81
总线还没准备好
错误:PMIC 寄存器[0x1e]初始化失败,值为[0x11]
用示波器检查 I2C1 SCL 和 SDA 线时,我发现两条线都被拉低并锁存。只有在断电重启后,它们才会恢复到默认的高电平状态。
此外,我已经验证,如果我注释掉 #sysparam 命令,就可以在 I2C 总线上成功观察到默认的 PMIC 初始化波形,并且 UART 日志正确地表明 PCA9450 已被检测到。
我找到了根本原因。IOMUXC_I2C1_SDA_IN_SELECT_INPUT (0x303305A4) 和 IOMUXC_I2C1_SCL_IN_SELECT_INPUT (0x303305A8) 寄存器未配置。我建议将这些细节添加到应用笔记中,以供将来参考。谢谢!”
注释掉#sysparam后,我使用示波器捕获了 i.MX8M Plus 写入 PCA9450C 的默认配置。捕获到的序列如下:
0x25W,0x00
0x25R,0x31
0x25W、0x0C、0x29
0x25W、0x11、0x1C
0x25W、0x12、0x14
0x25W、0x10、0x59
0x25W、0x1E、0x14
基于这些发现,我将这些命令添加到了 .ds 文件中。文件:
# 2. IOMUX 配置。(SION=1,ODE=1,内部上拉)
内存集 0x30330200 32 0x00000010 # I2C1_SCL 多路复用器 (SION=1)
内存集 0x30330204 32 0x00000010 # I2C1_SDA 多路复用器 (SION=1)
内存集 0x30330460 32 0x00000176 # I2C1_SCL 焊盘
内存集 0x30330464 32 0x00000176 # I2C1_SDA PAD
sysparam set pmic_cfg 0x0025 # PMIC 地址
sysparam set pmic_set 0x0C29 # 将 BUCK1 和 BUCK3 设置为 0.85V,将 BUCK2 设置为 0.9V
sysparam set pmic_set 0x111C # BUCK1 DVS0 = 0.95V
系统参数设置 pmic_set 0x1214 # BUCK1 DVS1 = 0.85V
sysparam set pmic_set 0x1059 # BUCK1CTRL = 0x59(通过 PMIC_STBY_REQ 进行 DVS 控制)
sysparam set pmic_set 0x1E11 # BUCK6 设置为 1.025V
然而,UART 控制台仍然卡在这个阶段。与之前略有不同,它不再抛出任何错误信息,而是直接停止运行:
下载完成
等待目标板启动……
使用示波器检查 I2C1 SCL 和 SDA 线时,其行为与之前相同:两条线都被拉低并锁定,只有在断电重启后才会恢复到默认的高电平状态。
如果禁用预配置的 PMIC 初始化,则需要手动完成所有操作。
在i.MX 93 EVK板上,默认的 PMIC I2C 总线是 I2C 2。
要将其更改为 I2C 1,您需要设置正确的引脚复用:
然后你需要发送正确的命令:(例如)
命令说明:
| 数量 | Command | Value | 说明 |
| 0 | pmic_cfg | 0x0025 |
I2C总线1 (0 代表 I2C1,1 代表 I2C2,2 代表 I2C3,3 代表 I2C4……) PMIC 地址 0x25 |
| 1 | pmic_set | 0x0C29 |
寄存器=0x0C BUCKxOUT_DVS0/1 |
| 2 | pmic_set | 0x1118 |
寄存器=0x11 BUCK1OUT_DVS0=0.9V PCA9451_BUCK1OUT_DVS0 值=0x18 |
| 3 | pmic_set | 0x1718 |
寄存器=0x17 BUCK3OUT_DVS0=0.9V PCA9451_BUCK3OUT_DVS0 值=0x18 |
| 4 | pmic_set | 0x1428 |
寄存器=0x14 将 VDDQ 设置为 1.1V PCA9451_BUCK2OUT_DVS0 值=0x28 |
BUCK6 设置将位于寄存器 0x1D 和 0x1E 中。
希望对您有所帮助。
伯恩哈德。
哦,对了,就是著名的DAISY收银机。抓得好!
选择自定义配置时,所有设置都需要手动完成。你说得对,在引脚配置方面,DAISY 寄存器并不是重点。对于 UART 引脚复用设置,除了标准的引脚复用和焊盘设置外,它还出现在 RX 信号的 ds 中。但对于 I2C,固件会在后台进行默认配置,您在 ds 文件中看不到这些设置。
顺便提一下,对于 i.MX 93,I2C1 和 I2C2 没有 DAISY 链寄存器,但 I2C3-8 有。
我会将您的反馈意见反馈给我们的工具组,这个细节应该包含在配置工具的用户手册中。或者,或者此外,I2C 接口设置应该出现在 ds 文件中。
问候,
伯恩哈德。