主题中讨论的其他部件:OMAP-L138,
您好,
我们将在OMAP-L138设计中应用CDCE906时钟合成器。 硬件和软件在大多数情况下都可以正常工作。
CDCE输出的OMAP OSCIN时钟为24MHz,PHY输出的时钟为50MHz,A/D转换器输出的时钟为可切换的27/36MHz。 它由本地24MHz XCO提供,因此OMAP以CDCE906的默认设置启动(所有6个通道1:1馈通)。 CDCE通过OMAP的I2C总线进行控制,在ARM内核上运行Linux。
我有两个一般问题:
第一:对CDCE906的乘法器和除法器寄存器进行编程的最佳顺序是什么?
我们必须在每个PLL的M分禾器,N分压器和Px分压器寄存器中设置三个数字, 这些寄存器中的每一个都被分割成多个内部I2C可编程字节,因此我们必须按顺序写入几个字节,才能更改输出频率。 数据表对此没有太多的说明,我们对此很好奇,因为每个PLL都在每个字节写入后立即更改其行为和输出频率。 因此,在将PLL设置为新频率时,很可能会出现频率故障。
我们当前的解决方法如下:
我们设置了一个PLL (编号 5)通过,与冷启动默认值相同,并将OMAP时钟的输出多路复用器切换到该PLL。 然后,OMAP继续运行而不受干扰,并且可以在其输出关闭时逐步设置其它PLL寄存器(例如,用于ADC频率)。 完成设置后,我们给这些PLL几毫秒时间以稳定在新频率上,然后打开输出。
只要我们一次更改频率的PLL不超过两个,这种方法就有效,这符合我们当前的需求。
这是推荐的频率设置方法,还是您获得了更详细的说明/代码示例,如何更好地/更轻松地完成?
第二:我们希望通过将两个系统的主时钟(24MHz)连接在一起来实现同步。 我们的想法是,使用连接到CEDE906的CLKIN0的本地24MHz XCO启动每个系统。 同一主时钟通过差分线路输出到下一个装置,该线路连接到链中下一个系统的CDCE的CLKIN1输入。 如果我们随后通过I2C命令将从属CDCE的时钟输入从本地XCO切换到外部时钟线路,从属系统将在链中先前设备的主时钟上运行。 只要主时钟可用且未受干扰,此功能就会工作。 但是,如果主时钟突然停止,链中所有后继路由器的OMAP将不再需要时钟,并且无法作出反应。
通过可再触发的单路命令(例如 '122),其低活动输出连接至CDCE的S0控制输入? 如果外部时钟在单次启动的时间设置(例如100ns)内出现故障,其输出将升至高,重新启用本地XCO作为时钟源(只要在EEPROM中正确设置了CDCE寄存器)。 如果外部时钟再次出现,单声道将再次触发,并选择外部线路作为时钟输入。
一些时钟芯片似乎提供了这样一种设计上的回退机制,但CDCE906没有,是吗? 或者,是否有更简单的解决方案可用于此功能,例如作为TI的独立(小型,廉价)芯片?
感谢您的提示!
霍 斯特,此致