通过工具或器件技术参考手册,确定可用于监控所需时钟源的 DCC 实例。
- 在 (1) 输入部分中:
- 在所使用 DCC 实例部分的 EXT_REFCLK 频率输入字段中输入作为外部参考时钟提供的时钟频率。
- 使用提供的下拉菜单输入要用作比较参考时钟的时钟源 DCCCLKSSRC0(参考时钟)。可用的选项有 EXT_REFCLK、RCCLK10M (10MHz)、RCCLK32K (32KHz) 和 XTALCLK (25MHz)。
- 使用提供的下拉菜单输入要用于验证的时钟源 DCCCLKSSRC1(待验证的时钟)。可用的选项包括 EXT_REFCLK、R5SS0_CLK (400MHz)、R5SS1_CLK (400MHz)、RCCLK32K (32KHz)、SYSCLK (200MHz) 和 XTALCLK (25MHz)。
- 输入您的应用所需的时钟精度 %。如果未提供输入,该工具将使用默认值 0.2 或可能的最小精度(以较高者为准)。
- 该工具根据作为输入提供的时钟源计算异步误差、DCC 误差、可能的最低精度、窗口、允许的频率误差、总误差(上一节中定义的公式)。
注: 最小可能精度不能大于 48(超过该值计数器种子值变为零),在这种时钟源组合中,系统会显示“ERROR”。
- 从 (2) 寄存器配置部分:
- 使用前一步计算的 Counter0 种子值的十六进制来对 DCCCNTSEED0 (@0x00000008) 进行编程。
- 使用前一步计算的 Counter1 种子值的十六进制来对 DCCCNTSEED1 (@0x00000010) 进行编程。
- 使用前一步计算的 Valid0 种子值的十六进制来对 DCCVALIDSEED0 (@0x0000000C) 进行编程。
- 使用相应的(A000 + 所选时钟源 0 的十六进制索引)对 DCCCLKSRC0 (@0x00000028) 进行编程。
- 使用相应的(A000 + 所选时钟源 1 的十六进制索引)对 DCCCLKSRC1 (@0x00000024) 进行编程。
- 完成上述所有配置后,使用 0x0000AAAA 设置 DCCGCTRL (@0x00000000),以在 SINGLE_SHOT 模式下设置比较,启用 DONE 信号,启用误差信号并开始比较。
注: 对于连续模式,将位 11:8 配置为 0101。
-
在 DCC 完成阶段结束时,如果时钟处于所配置的容差范围内,DCC 会生成到 R5F 的 DCC_done。寄存器 DCCSTAT(@0x00000014) 中的 Done 位(位 1)将被设定为 1 来表示完成。
如果 DCC 在频率测量中检测到错误,它会生成到 ESM 的 DCCx_error(错误信令模块),而不是生成到 R5F 的 DCC_done 中断。寄存器 DCCSTAT(@0x00000014) 中的 Error 状态(位 0)将被设定为 1 来表示错误条件。在这种情况下,ESM 可以配置为生成到 R5F 的中断或器件错误引脚,以采取进一步操作。有关配置和设置中断的详细信息,请参阅器件技术参考手册。
如果未使用中断模式,配置 SINGLE_SHOT 模式后,R5F 可配置为持续轮询 DCCSTAT(@0x00000014) 寄存器中的 Error 状态(位 0)和 Done 位(位 1)。
- 如果出现错误,可以读取 counter0、counter1 和 valid0 值(分别从地址偏移 0x00000018、0x00000020 和 0x0000001C),以确定错误类型(clock0/clock1 不存在,clock1 在 counter0 达到 0 之前到期,或 clock1 在 counter0 和 valid0 都达到 0 后到期)。
以上示例适用于 DCC0。按照类似的过程使用任何其他 DCC 实例 DCC1、DCC2 和 DCC3。