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.

[参考译文] TM4C123GE6PM:为什么 SPI 数据速率设置为16MHz 时为20Mhz

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/691169/tm4c123ge6pm-why-is-spi-data-rate-at-20mhz-when-set-to-16mhz

器件型号:TM4C123GE6PM

您好!

当我将 SPI 数据速率设置为16MHz 时、为什么它以20Mhz 的速率输出?  

SSIConfigSetExpClk (SSI0_BASE、8000000、SSI_FRF_MOTO_MOTO_0、SSI_MODE_MASTER、16000000、 8); 

我从数据表中注意到这一点:

该公式使用 CPSDVSR、因此基本上每次都将分母乘以偶数。  那么、这是否意味着您不能将 SYSCLK 除以奇数?  似乎是一个愚蠢的问题、但我很奇怪、您的数据速率会如此受限。  我以为我使用的是16MHz 的数据速率、但实际上不是20Mhz。  我已通过以下范围验证了这一点:

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

    我看不到您随附的数据表、想象一下、但我将复制数据表中的部分文本:

    我假设您提到的等式为:

    输出时钟 SSInClk 的频率由以下公式定义:SSInClk = SYSCLK /(CPSDVSR *(1 + SCR))

    原因如下所述:

    '串行比特率是通过分频输入时钟(SYSCLK)得到的。 时钟首先被2至254英寸的偶数预分频值 CPSDVSR 分频

    '时钟进一步除以1至256之间的值、即1 + SCR'

    因此、您无法使用 TM4C123x 系列器件上的 SSI 模块获得16MHz SSI 时钟信号、因为第一个分频段会将其降低至40MHz、而您无法将其分频为16MHz。 20MHz 或13.33MHz 是最接近的选项。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、这看起来很奇怪、数据速率的分辨率太差、但我只是想仔细检查。 我现在的跑步速度是20、它能够可靠地工作、所以不是什么大问题。