导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]谁能放出个MSP430F149的双SPI主从对发的例

* 65053: [求助]谁能放出个MSP430F149的双SPI主从对发的例子啊

   whaway 
whaway发表的帖子 

 [求助]谁能放出个MSP430F149的双SPI主从对发的例子啊
自己编了一个,可是怎么也调试不通。
IAR430,3.20a,4K限制版。
程序主要是想验证一下SPI通讯,从主设备1口发出0x12,从设备0口接收到后回发,通过查看0口的RXBUF0来验证通讯成功,现在的情况是RXBUF0不为0x12。
源程序如下:
/*
硬件接线:
STE:  P3.0-->  P5.0
SIMO: P3.1-->  P5.1
SOMI: P3.2-->  P5.2
UCLK: P3.3-->  P5.3
晶振:
XT2-4M
*/
#include   <msp430x14x.h>  
/**************************************************************wh
*初始化函数声明
***************************************************************wh*/
__monitor void InitCPU(void);
__monitor void InitUART0(void);
__monitor void InitUART1(void);

unsigned int Data;
/**************************************************************wh
*函数:main()主循环函数
*作者:wh
*日期:
*参数:
*返回:
*功能:
***************************************************************wh*/
void main(void)
{
  _DINT();
  InitCPU();            //init CPU
  InitUART0();          //init UART0,rx enabled
  InitUART1();          //init UART1,all about disabled
  _EINT();
  while (!(IFG2 & UTXIFG1));
  TXBUF1 =0x12;
  while(1);
}
/**************************************************************wh
*函数:InitCPU()
*作者:wh
*日期:
*参数:
*返回:
*功能:选择晶振,等待晶振稳定,关狗,选择分频
***************************************************************wh*/
__monitor void InitCPU(void)
{
  unsigned int i;
  WDTCTL = WDTPW + WDTHOLD;
  BCSCTL1 &= ~XT2OFF;                   // XT2on
  do 
  {
    IFG1 &= ~OFIFG;                       // Clear OSCFault flag
    for (i = 0xff; i >   0; i--);           // Time for flag to set
  }while ((IFG1 & OFIFG));               // OSCFault flag still set?   
  //BCSCTL2 |= SELM_2 + SELS;             // MCLK = SMCLK = XT2 (safe)
  BCSCTL2 |= SELM_2 + SELS + DIVS_3 + DIVM_3;
}
/**************************************************************wh
*函数:InitUART0()
*作者:wh
*日期:
*参数:
*返回:
*功能:UART0  Slave
***************************************************************wh*/
__monitor void InitUART0(void)
{
  P3SEL = 0x0E;                         // Setup P3 for SPI mode  
  U0CTL = CHAR + SYNC + SWRST;          // 8-bit, SPI, Slave
  U0TCTL = CKPL + STC;                  // Polarity, UCLK, 3-wire
  ME1 = USPIE0;                         // Module enable
  U0CTL &= ~SWRST;                      // SPI enable
  IE1 |= URXIE0;                        // Recieve interrupt enable
}
/**************************************************************wh
*函数:InitUART1()
*作者:wh
*日期:
*参数:
*返回:
*功能:UART1 Master
***************************************************************wh*/
__monitor void InitUART1(void)
{
  P5SEL |= 0x0E;                            // P5.1,2,3 SPI option select
  P5OUT &= ~0x01; 
  P5DIR |= 0x01;                            //Reset Slave
  P5DIR &= ~0x01;
  U1CTL = CHAR + SYNC + MM + SWRST;         // 8-bit, SPI, Master
  U1TCTL = CKPL + SSEL1 + STC;              // Polarity, SMCLK, 3-wire
  U1BR0 = 0x02;                             // SPICLK = SMCLK/2
  U1BR1 = 0x00; 
  U1MCTL = 0x00; 
  ME2 |= USPIE1;                            // Module enable
  U1CTL &= ~SWRST;                          // SPI enable
  IE2 |= URXIE1 + UTXIE1;                   // RX and TX interrupt enable
}
/**************************************************************wh
*函数:
*作者:wh
*日期:
*参数:
*返回:
*功能:1号口SPI的接收中断
***************************************************************wh*/
#pragma vector=UART1RX_VECTOR
__interrupt void UART1RX (void)
{
  while (!(IFG2 & UTXIFG1));
  TXBUF1 = 0x12;
}
/**************************************************************wh
*函数:UART0RX_VECTOR
*作者:wh
*日期:
*参数:
*返回:
*功能:0号SPI口的接收中断
***************************************************************wh*/
#pragma vector=UART0RX_VECTOR
__interrupt void UART0RX (void)
{
  while (!(IFG1 & UTXIFG0));  
  TXBUF0=0x12;// return data
 
}

发表时间:2004年10月23日18:49:52

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:什么原因会导致6264读写不正常???硬件:51+ 573+ 6264。
[下一篇帖子]:第一次回帖要东西忘记我的写邮箱了haiyang532@163.com