MSP430技术论坛
直播中

刘柳

7年用户 198经验值
私信 关注
[问答]

msp430f149的同步SPI通信没反应

以下是我写的程序:(请问哪里配置有问题吗?怎么自己收不到呀,数据应该发出去了的)

#include"msp430x14x.h"
unsigned char swp[10] = "0123456789";
void init_1602(void);
void delay(unsigned char v);
void write_com(unsigned char com);
void write_dat(unsigned char dat);
int main()
{
  int i;
  
  WDTCTL = WDTPW + WDTHOLD;
  
  P4DIR = 0xff;//液晶管脚配置
  P5DIR = BIT5 + BIT6 + BIT7;


  3SEL = BIT1 + BIT2 + BIT3;
  
  init_1602();//初始化液晶
  
  U0CTL = SWRST;
  U0CTL |= CHAR + SYNC + MM + LISTEN;//SPI主机模式,自己接收(用于测试)
  U0TCTL = CKPH + STC + SSEL0;//ACLK,3线模式
  
  U0BR0 = 0x03;//ACLK,9600
  U0BR1 = 0x00;
  U0MCTL = 0x00;//用不到,全部写0就是
  
  ME1 = UTXE0 + URXE0 + USPIE0;//允许收发
  ME1 = USPIE0;
  IFG1 &= ~UTXIFG0;
  IFG1 &= ~URXIFG0;
  IE1 = UTXIE0 + URXIE0;
  
  U0CTL &= ~SWRST;
  _EINT();
  while(1)
  {
    if (i > 1000)     i= 0;
    while(IFG1 & URXIFG0 == 0);//等待接收完成
    U0TXBUF = i;
    while(IFG1 & UTXIFG0 == 0);//等待发送完成
    IFG1 &= ~UTXIFG0;
  }
}
#pragma vector = USART0RX_VECTOR
__interrupt void SPI_RX(void)
{
  unsigned char res;
  
  while(IFG1 & UTXIFG0 == 0);//等待发送完成
  res = U0RXBUF;
  while(IFG1 & URXIFG0 == 0);//等待接收完成
  IFG1 &= ~URXIFG0;
  //得到的值放在res中,以下为处理函数,就不贴上了;  
}
是不是还要把SIMO0与SOMI0用线连上呀?可连上了也没反应呀?帮我看看看看是哪儿的问题?

回帖(10)

陈平

2019-1-21 06:18:49
还有就是中断都没进去呀?
举报

谭子薇

2019-1-21 06:33:30
430没玩过.
建议你先调通中断吧.
不要一次写很多代码,一步步来.
举报

张奕

2019-1-21 06:49:12
原子大哥,我只有一块板子呀?
举报

陈小红

2019-1-21 06:56:06
程序倒是能理解,也不多,主要都是SPI的配置
举报

王桂香

2019-1-21 07:13:42
今天晚上我要回去睡觉。
举报

康伟

2019-1-21 07:32:56
中断函数有问题吧                                             ,在官网下个例程,直接抄上去就OK了。
举报

陈桂兰

2019-1-21 07:52:49
额,,,我写的是自发自收的,例程是多机通信哒,帮我看看,谢谢啦!!!
举报

李玲

2019-1-21 08:03:57
参考TI官网给出的例程!!
举报

尹丽

2019-1-21 08:22:03
回复【9楼】艾科:
--------------------------------
-好嘛,谢谢!
举报

刘磊

2019-1-21 08:30:17
楼主好,我不太理解这个SPI,不知道您完成了430的这个SPI的实验了吗,能不能讲解一下啊,我也只有一块实验板
举报

更多回帖

发帖
×
20
完善资料,
赚取积分