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.

[参考译文] MSP430FR6007:SPI 配置相关的问题

Guru**** 2938360 points

Other Parts Discussed in Thread: MSP430FR6007

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1653543/msp430fr6007-issue-regarding-configuration-of-spi

器件型号: MSP430FR6007
主题: MSP430WARE 中讨论的其他部件

我正在使用 MSP430FR6007IPZ 微控制器、并使用 UCA2CTLW0 寄存器配置 SPI。 但是、示波器上没有收到任何 SPI 信号(无时钟或数据活动)。

我已经检查了硬件连接和 SPI 引脚配置、但仍无法识别问题。

有人请查看我的 SPI 初始化代码并提出可能出错的建议吗? 任何有关在 MSP430FR6007 上正确配置 SPI 的指导都会非常有用。

这是我的 SPI 配置代码:

 INIT_SPI (void)

  UCA2CTLW0 = UCSWRST;   //使 eUSCI 保持在复位状态

    // SPI 引脚
    P5SEL0 |= BIT0 | BIT1 | BIT2;
    P5SEL1 &=~(BIT0 | BIT1 | BIT2);

    // CS 引脚
    P5OUT |=BIT3;
    P5DIR |=位 3;


    // CLR 引脚
    P5OUT |= BIT4;
    P5DIR |= BIT4;

   UCA2CTLW0 |= UCMST | UCSYNC | UCCKPL | UCMSB | UCMODE_1 |       UCSTEM;

   UCA2CTLW0|=UCSSEL__SSMCLK;

   UCA2BRW = 0x20;

   UCA2CTLW0 &=~UCSWRST;   //启用 SPI

}

Smyclk = 8MHz

SMCLK 频率:(例如 8MHz)

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

    您选择了 4 引脚 SPI 模式。 假设您没有为 STE 信号配置引脚、有一个显式的 CS 引脚、并且通常会对 4 引脚模式产生误解、那么您可能需要 3 引脚模式。

    但主要问题是端口选择位。 您需要 SEL0 = 0 和 SEL1 = 1。 (表 9-31)

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

    感谢您的回答、David Schultz。

    查看数据表后、我根据您的建议更新了我的代码。 现在、我在示波器上看到了一些活动、与之前相比取得了进展。 但是、SPI 波形似乎不正确或稳定、因此我认为可能仍然存在配置问题。

    我还有一个关于 MSP430FR6007 上的引脚多路复用的问题。

    我注意到相同的物理引脚可以分配给多种外设功能、如 SPI 和 UART。 例如、一个引脚可以支持 UCA2 SPI 信号和 UART TX/RX 功能。 您能解释一下如何确定哪个外设功能处于活动状态吗? 具体而言、如何 PSEL0 PSEL1 在 SPI、UART、GPIO 和其他替代功能之间选择和寄存器设置?

    此外、由于我现在在示波器上看到了一些响应、但没有看到预期的 SPI 波形、您能否建议我接下来要检查什么以验证 SPI 配置是否正确?

    如果对引脚多路复用机制的工作原理有任何澄清、以及对 SPI 信号进行故障排除提供任何指导、我将不胜感激。

    感谢你的帮助。

    UCA2CTLW0 = UCSWRST;//使 eUSCI 保持在复位状态


    // P5DIR |= BIT0;// CLK
    // P5DIR |= BIT2;// MOSI
    // P5DIR &=~BIT1;// MISO
    // SPI 引脚

    P5SEL0 <=~(BIT0 | BIT1 | BIT2);
    P5SEL1 |= BIT0 | BIT1 | BIT2;

    // CS 引脚
    P5OUT |=BIT3;
    P5DIR |=位 3;


    // CLR 引脚
    P5OUT |= BIT4;
    P5DIR |= BIT4;

    UCA2CTLW0 = UCSWRST;//**将状态机置于复位状态**

    UCA2CTLW0 |= UCMST | UCSYNC | UCCKPL | UCMSB | UCMODE_0;
    UCA2CTLW0 || UCSSEL_SMCLK;//
    // UCB1BRW = 0x20;
    UCA2BR0 = 0x02;//
    UCA2BR1 = 0;//
    // UCA0MCTLW = 0;//无调制

    UCA2CTLW0 &=~UCSWRST;  

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

    即使没有对意外波形的描述、我也没有任何东西。 向 SPI 端口发送数据的实际代码和输出图片将有所帮助。

    数据表的引脚图部分详细介绍了引脚配置。

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

    您好、

    我想我们在 MSP430 SDK 中  的以下文件夹中提供了几个 SPI 演示代码、您可以快速查看并将您的代码与我们的代码进行比较、看看是否存在任何潜在问题。

    “C:\ti\sdk\MSP430Ware Code_Examples

    此致、
    彼得

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

    好的  、但我的问题 是、我注意到相同的物理引脚可以分配给多个外设功能、如 SPI 和 UART。 例如、一个引脚可以支持 UCA2 SPI 信号和 UART TX/RX 功能。 您能解释一下如何确定哪个外设功能处于活动状态吗? 具体而言、如何 PSEL0  PSEL1 在 SPI、UART、GPIO 和其他替代功能之间选择和寄存器设置?  

    例如 pin spi 选择  psel0=0、psel1=1 那么 UART 呢?

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

    您好、

    感谢您的答复。

    我回顾了演示代码、但它不包括所有 eUSCI 模块(例如 UCA1、UCA2、UCB0、UCB1 等)的示例、 因此、很难仅根据演示来确定特定模块的正确配置。

    PSEL0 两个电路 PSEL1

    在这种情况下、如何确定引脚上哪个协议处于活动状态? 该引脚将用作 SPI (SIMO) 还是 UART (TXD)? 活动功能是由 UCA1CTLW0 寄存器的配置决定(SPI 模式与 UART 模式)、还是涉及其他机制?

    当多个外设功能共用同一引脚时、希望能得到一些关于 MSP430 如何在 SPI 和 UART 功能之间进行选择的澄清。

    感谢您的帮助。

    我还有一个关于引脚多路复用的问题。 例如、在数据表中、一个引脚可能列示为:

    UCA1SIMO / UCA1TXD

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    例如 pin spi selection  psel0=0、psel1=1 那么 UART 又该怎么办?

    引脚不知道也不管。 模块配置确定它是 UART 还是 SPI。

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

    您好、

       有关详细信息、请参阅《MSP430Tm MCU 上常见 eUSCI 和 USCI 串行通信问题解决方案》。

    此致、
    彼得