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.

[参考译文] MSP430F5529:如何在 Salve MCU 中配置4线 SPI 连接?

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1431074/msp430f5529-how-to-configure-the-4-wire-spi-connection-in-salve-mcu

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

工具与软件:

我已经为 SPI 配置编写了以下代码、但无法接收来自主器件的数据

void SPI_init (void)

P3SEL |= BIT0;// SOMI
P3SEL |= BIT1;// SIM0
P3SEL |= BIT2;// CLK
P2SEL |= BIT7;/CS

//P2DIR &=~(BIT7);// Slave Select

UCB0CTL1 |= UCSWRST;//**将状态机置于 RESET**中
UCB0CTL0 |= UCMODE_2+UCSYNC+UCCKPL+UCMSB;//启用4引脚、8位 SPI 从器件0
//时钟极性高、MSB
UCB0CTL1 &=~UCSWRST;//**初始化 USCI 状态机**
UCB0IE |= UCRXIE;//启用 USCI_B0 RX 中断

}

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

    嗨、 

    请参阅 MSP430的 SDK:

    C:\ti\msp\MSP430Ware_3_80_14_01\examples\devices\MSP430F5xx_6xx\MSP430F55xx_MSP430F55xx\C Code_Examples

    以下是4线 SPI 从设备示例代码:

    e2e.ti.com/.../6558.MSP430F55xx_5F00_usci_5F00_spi_5F00_standard_5F00_slave.c

    Regarads、

    Helic

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

    感谢您的答复。 此示例用于3引脚模式。 我想了解4引脚模式的设置

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

    嗨、 

    您可以获得从第10行至第21行的示例使用指南、P2.0用于芯片选择。

    您是说您需要 SPI 硬件 CS 引脚吗?

    演示代码中不是由软件控制的 P2.0?

    此致、

    Helic

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

    有。 我需要设置 SPI 硬件 CS 引脚 P2.7 (UCB0STE)

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

    嗨、 

    请参阅用户指南: https://www.ti.com/lit/ug/slau208q/slau208q.pdf

    40.3.4.1 4引脚 SPI 受控模式

    和表[表40-1. UCxSTE Operation ] in 40.3 eUSCI Operation–SPI Mode。

    此致、

    Helic

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

    我不会看到您的代码有任何明显的错误。 您的主设备是否也在使用(CPHA=1、CPOL=1)?

    您如何辨别您不是在接收数据? (ISR 中的断点? 数据字节不正确?)

    数据表(SLAS590N)表6-47注意(3)提到了如果您还将 UCA0用于 SPI、则可能与 P2.7发生冲突。 我以为你是我的女人,可是我完全错了。"

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

    void spi_init(void)
    {
        P3SEL |= BIT0;      // MOSI
        P3SEL |= BIT1;      // MISO
        P3SEL |= BIT2;      // CLK
    
        P1DIR |= 0xff;      // set all to output direction  CS10, CS9, CS8, CS7, CS6, CS5, CS4, CS3
        P2DIR |= BIT1 + BIT0; //Set to Output Direction CS1, CS2;
    
        UCB0CTL1 |= UCSWRST;                      // **Put state machine in reset**
        UCB0CTL0 |= UCMST+UCSYNC+UCCKPL+UCMSB;    // 3-pin, 8-bit SPI master
                                                      // Clock polarity high, MSB
        UCB0CTL1 |= UCSSEL_2;                     // SMCLK 8MHz
        UCB0BR0 = 0x08;                           // /8 = 1Mhz
        UCB0BR1 = 0;                              //
        //UCB0MCTL = 0x00;                             // No modulation
        UCB0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
    
    }
    
    void spi_init(void)
    {
        P3SEL |= BIT0;      // MOSI
        P3SEL |= BIT1;      // MISO
        P3SEL |= BIT2;      // CLK
    
        P1DIR |= 0xff;      // set all to output direction  CS10, CS9, CS8, CS7, CS6, CS5, CS4, CS3
        P2DIR |= BIT1 + BIT0; //Set to Output Direction CS1, CS2;
    
        UCB0CTL1 |= UCSWRST;                      // **Put state machine in reset**
        UCB0CTL0 |= UCMST+UCSYNC+UCCKPL+UCMSB;    // 3-pin, 8-bit SPI master
                                                      // Clock polarity high, MSB
        UCB0CTL1 |= UCSSEL_2;                     // SMCLK 8MHz
        UCB0BR0 = 0x08;                           // /8 = 1Mhz
        UCB0BR1 = 0;                              //
        //UCB0MCTL = 0x00;                             // No modulation
        UCB0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
    
    }
    

    这是主器件中的配置。 在我的程序中、我接收来自主器件的数据、然后将值分配给 GPIO 引脚。 我检查 GPIO 引脚、它不会提供输出。 我 将 UCB0用于 SPI 配置。