This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LAUNCHXL2-RM57L:Hercules 时钟

Guru**** 2333840 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/600576/launchxl2-rm57l-hercules-clocking

器件型号:LAUNCHXL2-RM57L

对 Hercules 中的时钟有疑问、我想一般而言、微控制器(对于微控制器来说仍然有些陌生、尤其是复杂的情况)。 对外设以及系统时钟和指令执行有何依赖? 因此、CPU 以高达330MHz 的频率执行、但当我打开和关闭 A 引脚(只需坐在 while 环路中、将引脚电压切换为高电平和低电平、没有其他方法)时、当外设时钟以75MHz 的频率运行时、我获得大约3.4MHz 的输出频率。 这是有道理的、因为这意味着切换大约需要140ns (一条加载和存储指令每个需要大约5个周期、而在75MHz 时为133ns、加上其中的另一条或两条指令)。

那么、我的问题是、每个时钟何时使用? 当执行一个需要外设的指令时、执行时钟是否"切换"(在外设寄存器中需要存储某个内容之前使用 CPU 时钟)、从而有效地降低了执行速度? 我想这种情况是这样的、因为在执行指令时可能需要依赖项/线性(如果基于外设的指令需要先完成、则不想启动指令)。

我还想知道、系统时钟和 CPU 时钟之间有什么区别? 我猜 CPU 时钟只是运行 CPU 指令(CPU 寄存器访问、ALU 填充等) 系统时钟在不同子系统(内存、高速缓存、总线访问等)之间进行数据传输。

希望这些问题有道理、我仍在尝试在头脑中对其进行一些整理。 此外、如果某些文档中已经存在此主题、请告诉我它的位置、因为我没有看到任何真正描述此内容的内容。

谢谢、

最大

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Max:

    MCU 中的时钟分为多个域。 每个域都有不同的时钟驱动它、这些域上的限制来自驻留在这些域中的模块/外设的限制。 CPU 通常由 GCLK 驱动、在您的示例中、执行的每条指令的完整330MHz 时钟将以330MHz 时钟速率执行(大多数指令是单周期指令)。 但是、有些等待状态会被强加给访问器件中较慢元素、或者可能是由于主机之间的仲裁等原因 如果您查看 TRM 和数据表中的架构方框图、您将看到各种主器件、外设、存储器等馈送到被称为开关中央资源(SWR)或器件总线间桥接器的块中。 这些 SWR 产品可执行多项任务、例如总线仲裁、总线协议转换和时序相关任务。 在外设访问的情况下、这些接口会为 CPU 和外设之间的每次访问增加大约24-25us 的延迟。 外设时钟仅对应于外设域内的时序、并将确定例如、访问外设寄存器所需的时间。 CPU 知道存在延迟、并在一定程度上适应、直到发生超时并标记异常。 在这方面,完全解释是相当复杂和不可能的。 当然、对哈佛架构的回顾以及对 MCU 架构的一些研究也会有所帮助。

    对于 Hercules、数据表中还有一个时钟树。 这显示了如何使用 OSCIN 时钟来获得器件内所有不同的时钟域、还包括器件架构内的其他时钟、例如 LF 和 HF LPO 时钟。