工具/软件:Linux
大家好、
我的客户正在使用具有25MHz OSC 的 AM3352进行电路板设计。 现在、该项目几乎已经完成并准备好试运行、但在此之前、它发现了 per_CLKOUT_M2输出的一个关键问题。 在某些电路板中、输出不是192MHz (192MHz 是预期频率)。 在某些电路板上、运行数小时或更多时间后时钟可能会发生变化(在今天的测试中、它会更改为129MHz)。
共有9块电路板在测试中、只有2块电路板存在此问题。 在问题重现流程中、重现问题的最短时间约为2小时。 最长的时间是12小时后。
当问题发生时、观察到 UART 波特率发生了变化、因此我们使用 CLKOUT1和 CLKOUT2来监控主25MHz OSC 和 PER_CLKOUT_M2时钟。 使用示波器进行测试后、发现 CLKOUT1的输出正确、为25MHz。
将频率设置为 PER_CLKOUT_M2 / 6 (将0x44E00700设置 为0xAB)时、正确的值应为192/6=32MHz、但 CLKOUT2的测试输出为21.5M、 这意味 着 PER_CLKOUT_M2大约为129MHz、但不是192MHz。
此外、我们将 0x44E00700设置 为0xB3、即 PER_CLKOUT_M2 /7、结果为18.3M (PER_CLKOUT_M2 = 18.3*7=128.1MHz)、但不是192/7= 27.4MHz。
因此,PER_CLKOUT_M2必须有问题 。
然后我检查 了 CM_CLKSEL_DPLL_PER (0x44E0049C)的寄存器值。 和 CM_DIV_M2_DPLL_PER (0x44e004AC)。
正确的值是
REG (0x44E0049C)= 0x0403C018、 // DIV:0x18 -> 24,MULT:0x3C0 -> 960
寄存器(0x44e004AC)= 0x00000285。 // DIV:0x5 -> 5.
发布的电路板显示了正确的寄存器值作为未发布的电路板。
此外、CLKOUT1在已发布电路板上的频率正确为25MHz。 因此、我不理解为什么 per_CLKOUT_M2 时钟不是正确的值。
有人能帮您对此发表一些评论吗?
谢谢!