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.
工具与软件:
我已经为 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 中断
}
嗨、 Afkar
请参阅 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引脚模式的设置
嗨、 Afkar
您可以获得从第10行至第21行的示例使用指南、P2.0用于芯片选择。
您是说您需要 SPI 硬件 CS 引脚吗?
演示代码中不是由软件控制的 P2.0?
此致、
Helic
有。 我需要设置 SPI 硬件 CS 引脚 P2.7 (UCB0STE)
嗨、 Afkar
请参阅用户指南: 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 配置。