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.

MSP430F448的SPI接口配置GP21

Other Parts Discussed in Thread: MSP430F448

用MSP430F448的SPI接口对GP21进行配置时,在发送和接收的过程中,可进入SPI的接收中断和发送中断,但是接收到的数据一直为0。

GP21采用四线SPI接口,Clock Phase Bit = 1,Clock Polarity Bit = 0,当F448的SPI设为四线时,不能进入发送和接收中断,改为三线后,将STE脚作为普通IO实现对GP21中SPI接口SSN的控制(发送和接收数据时将STE脚置低,发送接收完成后置高),此时可进入发送和接收中断。SPI的其他设置为:波特率为9600,ACLK做参考时钟,8位数据,UxTCTL |= CKPH;  UxTCTL &=~ CKPL;

另,将F448中SPI寄存器UxCTL |= LISTEN时,可接受到与发送相同的数。

本人是菜鸟,SPI配置程序是从网上下载的。想问一下,我是否能确定已将F448的SPI接口配置正确,能正常工作?

  • 我写的 MSP430F44X单片机SPI接口驱动C语言程序。。希望对你有帮助。。

    #include<msp430x44x.h>   

    char MST_Data=0X00,SLV_Data=0XFF;   

    void Init(void);   

    void main(void)   

    {    

      unsigned int i;   

      WDTCTL=WDTPW+WDTHOLD;   

      Init();   

      _EINT();   

      P3OUT&=~0X020;   

      P3OUT|=0X020;   

      i=50000;   

      do(i--);   

      while(i!=0);   

      while(1)   

      {   

        TXBUF0=MST_Data;   

        LPM0;   

      }   

    }   

    void Init(void)   

    {   

      P1OUT=0X000;   

      P1DIR=0X001;   

      P3SEL=0X00E;   

      UCTL0=CHAR+SYNC+MM+SWRST;   

      UTCTL0=STC+SSEL1+CKPL;   

      UBR00=0X02;   

      UBR01=0X00;   

      UMCTL0=0;   

      ME1=USPIE0;   

      UCTL0&=~SWRST;   

      IE1=URXIE0;   

     }   

    #pragma vector=USART0RX_VECTOR   

    __interrupt void SPI0_rx(void)   

    {   

      P3OUT^=0X010;   

      while ((IFG1&UTXIFG0)==0);   

      if (U0RXBUF==SLV_Data)   

      {   

        SLV_Data=SLV_Data-1;   

        MST_Data=MST_Data+1;   

        TXBUF0=MST_Data;   

        P1OUT|=0X001;   

        P1OUT&=~0X001;   

      }     

      else    

      {   

        TXBUF0=MST_Data;   

        P1OUT|=0X001;   

      }   

    }   

     

  • chaosong huang1 谢谢你的回复,我还是想知道为什么我的程序中,既然能进接收中断为什么收到的全是0,是否向你的程序一样,初始化后加一个延时,还是SPI配置完成而是GP21没有工作?