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.

[参考译文] MSP-EXP430F5529LP:使用 XT2上的外部晶振(具有16MHz 频率)实现/维护相干 USCI B0 SPI 通信时出现的问题。

Guru**** 664280 points
Other Parts Discussed in Thread: MSP-EXP430F5529LP, MSP430F5529
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1296733/msp-exp430f5529lp-problem-with-achieving-maintaining-coherent-usci-b0-spi-communications-using-an-external-crystal-at-xt2-w-16mhz-freq

器件型号:MSP-EXP430F5529LP
主题中讨论的其他器件: MSP430F5529

问题:

 在16MHz 时、针对外部(XT2)时钟速度的 USCI B0 SPI 端口出现问题。

但是、115200bps UART 通信或计时器没有问题。

外部 OSC 输入:

XT1 =驻留在 MSP-EXP430F5529LP 开发套件上的32kHz 晶体。

XT2 = 16MHz 陶瓷谐振器(P/N ECS-CR2-1600-B.TR)、带内置电容器(15pF)

所需的时钟源。

  • XT1 (32 kHz)--> ACLK
  • XT2 (16 MHz)-->(DIV x 2)--> SMCLK (需要8MHz)
  • XT2 (16 MHz)--> MCLK (需要16MHz)  
  • CPU 的 MCLK。

 

目前、使用的是 USCI B0 SPI 通道3线制接口。

我们能够在4MHz 以及现在的8MHz 上针对 SPI 和 UART 接口获得成功的通信。 不过、SMCLK 和 MCLK 必须具有相同的速度、否则会有问题。

当针对 MCLK 移动到16MHz 时、这样 XT2不会被分频、SPI 总线将不再保持一致。 UART 通信继续工作、计时器当然继续工作。

不确定 MCU 设置是否不适合在此所需速度下运行、或者是否存在其他物理设置问题、例如 SPI 总线长度(导线长度)和结构。

我们在 MSP-EXP430F5529LP 分接引脚与另一个 SPI 器件(从器件)之间使用了一些6英寸跳线。

要开始借助 TI 提供的帮助、您还需要哪些其他信息。

为了实现所需的 MCLK (16MHz)和 SMCLK (8MHz)速度(源自外部(XT2 @ 16MHz))、我们还需要考虑哪些其他领域?

提前感谢。

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

    您好、Ronnie Wright

    我可以理解、在 MSP-EXP430F5529LP Launchpad 上使用 USCI B0进行 SPI 通信时存在一些问题。

    我可以在主器件还是从器件上连接该 SPI 吗? SPI 的波特率是多少?

    作为参考、您可以检查 MSP430F552x C 示例(IAR 和 CCSv4)(zip)上的 SPI 示例代码  — 240K  

    谢谢!

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

    你好,李晓东

     感谢您的答复和您的代码示例。 我们将回顾并确定如何应用它们。

     

    关于您在下面遇到的问题:

    尝试实现的 SPI 速率是16MHz。

    SPI 总线由主器件(MSP430F5529)驱动。

     

    时钟设置详细信息:

    来自 XT1的 ACLK (32kHz)

    来自 XT2的 SMCLK (具有内置15pF 电容的16MHz 晶振)

    MCLK 源自 XT2 (16MHz………)

     

    观察结果:

    这些4MHz 初始化工作:

    UCS_initClockSignal (UCS_MCLK、 UCS_XT2CLK_SELECT、UCS_CLOCK_DIVIDER_4);

    UCS_initClockSignal (UCS_SMCLK、UCS_XT2CLK_SELECT、UCS_CLOCK_DIVIDER_4);

    SPI 总线源自未分频的 SMCLK (即、SPI 总线速率为4MHz)

     

    这些8MHz 初始化工作:

    UCS_initClockSignal (UCS_MCLK、 UCS_XT2CLK_SELECT、UCS_CLOCK_DIVIDER_2);

    UCS_initClockSignal (UCS_SMCLK、UCS_XT2CLK_SELECT、UCS_CLOCK_DIVIDER_2);

    SPI 总线源自未分频的 SMCLK (即、SPI 总线速率为8MHz)

     

    这些16MHz 初始化不起作用:

    UCS_initClockSignal (UCS_MCLK、 UCS_XT2CLK_SELECT、UCS_CLOCK_DIVIDER_1);

    UCS_initClockSignal (UCS_SMCLK、UCS_XT2CLK_SELECT、UCS_CLOCK_DIVIDER_1);

    SPI 总线源自未分频的 SMCLK (即、SPI 总线速率为16MHz)

     

    使用 SPI 分析器、我们会注意到以下情况:

    (1)主 SPI 器件数据正确发送到从 SPI 器件。

    (2)从 SPI 器件将正确的数据写入 SPI 总线。

    (3) MSP430F5529 (主 SPI 器件)不能正确读取(解释) SPI 数据。

    (4) MSP430F5529 (主 SPI 器件)以移位版本(右侧1位)读取正确的 SPI 总线数据。   

     

    例如:

    SPI 总线具有:十六进制(54 43 41 4E)

    F5529读取:十六进制(27 20 21 2A)

     

    SPI 总线具有:十六进制(34 35 35 30)

    F5529读取:十六进制(18 1A 1A 1A 1A)

     

    我们尝试了其他不起作用的低速初始化组合

    此外、请记住、MCLK 和 SMCLK 源自 XT2 (16MHz)

     

    这些16MHz/8MHz 初始化不起作用:

    UCS_initClockSignal (UCS_MCLK、 UCS_XT2CLK_SELECT、UCS_CLOCK_DIVIDER_1);

    UCS_initClockSignal (UCS_SMCLK、UCS_XT2CLK_SELECT、UCS_CLOCK_DIVIDER_2);

    SPI 总线源自未分频的 SMCLK (即、SPI 总线速率为8MHz)

    大家有什么想法吗?

     

    这些8MHz/4MHz 初始化不起作用:

    UCS_initClockSignal (UCS_MCLK、 UCS_XT2CLK_SELECT、UCS_CLOCK_DIVIDER_2);

    UCS_initClockSignal (UCS_SMCLK、UCS_XT2CLK_SELECT、UCS_CLOCK_DIVIDER_4);

    SPI 总线源自未分频的 SMCLK (即、SPI 总线速率为4MHz)

    大家有什么想法吗?

     

    其他阅读材料:

    我们研究了数据表(SLAS590P、第39 - 41页)、其中讨论了 USCI (SPI 主模式)时钟频率。

    具体而言、该表提到 fUCxCLK = 1/2tLO/HI、其中 tLO/HI≥max (tVALID、MO (USCI)+ tsu、SI (Slave)、tsu、MI (USCI)+ tVALID、SO (Slave));

     

    当使用即使是最小(最低)值的时间参数时、我们可以得到65nS 的 tLO/HI。

    65nS tLO/HI 提供 fUCxCLK =7692307.692 Hz 或 7.692MHz

     

    我的问题是、fUCxCLK 是否决定 MSP430F552x 系列 MCU 的最大 SPI 总线速率?

    如果 fUCxCLK 是 SPI 总线速度限制因素、则可以深入了解我们所看到的16MHz SPI 问题。  

    请告知。

     

    提前感谢。

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

    尝试使用更短的导线。 (严肃处理。) 我甚至在8MHz 使用5-6英寸的导线时也发现位移/模糊。 此外、请尝试使它们的长度相同。

    一旦您进入项目的该阶段、PCB 迹线就更具适应性。

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

    你好,布鲁斯

    感谢您的评论!

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

    你好, 

    对未来发展的任何想法   fUCxCLK  参数 (SLAS590P、第39-41页))是否会成为 SPI 总线最大速度限制?

    谢谢。

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

    您将展示如何初始化时钟系统、而不是 SPI 端口。 这在讨论 SPI 问题时似乎非常重要。