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.

关于MSP430F6733 SPI操作问题

第一次使用430单片机,在操作SPI上遇到了一些问题,请教一下

1.SPI初始化

void SPI_Init(void)
{
//UCA2 Init

P2SEL |=BIT2|BIT3|BIT5;

P2DIR |=BIT7;
P2OUT |=BIT7; //CS=1;

UCA2CTLW0 |= UCSWRST; // **Put state machine in reset**
UCA2CTLW0 |= UCMST | UCSYNC |UCCKPL |UCCKPH |UCMSB; // 3-pin, 8-bit SPI master
// Clock polarity high, MSB
UCA2CTLW0 |= UCSSEL_2; // SMCLK
UCA2BRW_L = 0x06; // /2
UCA2BRW_H = 0; //
UCA2MCTLW = 0; // No modulation
UCA2CTLW0 &= ~UCSWRST; // **Initialize USCI state machine**
//UCB0IE = UCRXIE; // Enable USCI_A0 RX,TX interrupt

__delay_cycles(100); // Wait for slave to initialize

}

2.SPI读写操作

unsigned char SPI_RWByte(unsigned char trs)
{
unsigned char T=0;

while(!(UCA2IFG &UCTXIFG));

UCA2TXBUF = trs; // Transmit first character

while(!(UCA2IFG &UCTXIFG));
T=UCA2RXBUF;

return T;

}

他是跟FRAM之间通信。FRAM的SPI模式模式0和模式3都可以用(既  UCCKPH=0&&UCCKPL=0 或者UCCKPH=1&&UCCKPL=1),

但是SPI读写一直有问题,请教一下这个SPI的读写操作有问题吗,还是说配置有问题?

望知道的指点一下

  • 你好,

    我初步看了一下程序,有如下几点排除建议:

    1.SPI 采样的3线还是4线?

    如果按照你程序的三线,CS另外用GPIO,我看到管脚初始化只有:

    P2SEL |=BIT2|BIT3|BIT5;
    P2DIR |=BIT7;
    P2OUT |=BIT7; //CS=1;

    CLK, MOSI要设置为输出

    2.用示波器截SPI发送波形。




  • SPI采用的是3线

    CLK和MOSI要设置输出?

    我理解的为只要引脚选择为第二功能,那引脚的输入跟输出我不用去管?

    CS脚我初始化为不选中。在具体操作芯片的时候我有用的。

     

    我这个SPI的读写是否有问题?