Other Parts Discussed in Thread: AM6412
器件型号: AM6412
我正在尝试在 GPMC0_FCLK (R17) 上输出自由运行的 133MHz 时钟、但到目前为止一直没有成功。 在测试过程中、我将时钟分频为 15,748,031Hz、以便于探测。
下面的配置是否有任何不正确的地方? 我们应该检查的任何其他寄存器? 感谢您的帮助!
硬件: TI AM6412 GPMC_FCLK 连接到 FPGA 输入引脚的定制电路板。 使用示波器探测测试点的信号。
TI SDK 版本:10.01.10.04
我的.dts 文件包含 k3-am642.dtsi 以及添加到 gpmc0 中的以下内容:
/* GPMC enabled so that, power and clock gates are enabled and pin is muxed */
&gpmc0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&main_gpmc0_fclk_pins_default>;
assigned-clocks = <&k3_clks 80 0>;
assigned-clock-parents = <&k3_clks 80 1>;
assigned-clock-rates = <133333333>;
};
main_gpmc0_fclk_pins_default {
pinctrl-single,pins = <
AM64X_IOPAD(0x007c, PIN_OUTPUT, 4) /* (R17) GPMC0_CLK.GPMC0_FCLK_MUX */
>;
};
确认 Padconfig 在模式 4 下针对 GPMC0_FCLK_MUX 输出正确、并确认在 GPIO 模式下可能会看到切换、作为完整性检查。
- 0x000f407c 的 PADCONFIG 读取 0x00010004(模式 4)。
-同一引脚上的 GPIO 健全性测试(模式 7, GPIO0 线 31 ):干净地通过 gpioset 切换~90mV→~1.75 V ,确认 IO 缓冲器正常工作,FPGA 没有将引脚保持在意外状态。
-在模式 0 (GPMC0_CLK) 下、引脚被主动驱动至~–34mV(控制器空闲状态,无事务)。
-在模式 4 (GPMC0_FCLK_MUX) 下、引脚设置为~851mV(≈Vio/2,经典高阻态特征)。
Linux 时钟框架显示根据 debugfs 配置:
-/sys/kernel/debug/clk/clk 80:0:
- clk_enable_count = 1、clk_prepare_count = 1
- clk_rate 最初= 13333333333;后来降低并报告为 15748031。 因此、clk_set_rate 通过 TI-SCI 传播到一个实数分频器。
- clk_parent = clk:80:1
- clk_scaye_paraments= clk:80:1 clk:80:2.
在两个时钟选项之间切换 CTRLMMR_GPMC_CLKSEL (0x43008180):
-分区锁定寄存器 0x43005008 确认解锁(设置位 1 )。
-写 0 和 1;读回确认写棒。
-在 CLK_SEL=0 和 CLK_SEL=1 之间、R17 电压略有漂移但保持直流 — 多路复用器确实会响应,但焊盘上的两个输入都是直流的。
MAIN_PLL0_HSDIV_CTRL3 (0x0068008C) 已正确配置并锁定 PLL。
-读为 0x0000807E:
- CLKOUT_EN(位 15) = 1
-复位(位 31) = 0
- SYNC_DIS(位 8) = 0
- HSDIV(位 6:0)= 0x7E (126)→OUTPUT = VCO / 127≈15.75MHz(与 debugfs clk_set_rate 之后 linux 的 clk:80:0 速率匹配)。
- 0x00680024 处的 MAIN_PLL0 PLLCTL.PLLSTAT 读取 0x00000001 - PLL 锁定。
