这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » USART,SPI 请教张先生几个关于USART模块同步通信(SPI方式)的问题

共2条 1/1 1 跳转至

USART,SPI 请教张先生几个关于USART模块同步通信(SPI方式)的问题

院士
2006-09-17 18:14:16     打赏
USART,SPI 请教张先生几个关于USART模块同步通信(SPI方式)的问题



关键词: USART     请教     张先生     先生     几个     关于     模块         

院士
2006-12-22 22:43:00     打赏
2楼
问 大侠您好!
我在用MSP430F149进行SPI方式通信时,出现无法接受数据的问题,下面是我的一段程序,请您看看有什么问题.
char conl=1;
WDTCTL=WDTPW+WDTHOLD;
BCSCTL1=0X80; //XT2关闭
BCSCTL2=0X04; //SMCLK的份频因子为4
UCTL0=CHAR+SYNC+MM; //SPI主模式,8位数据
UTCTL0=CKPH+STC+SSEL0+SSEL1; //主机模式,选择SMCLK为时钟源,
UCTL0&=~SWRST; //SWRST=0复位,USART允许
UBR00=0X05; //以4800bps传输
UBR10=0X00;
UMCTL0=0XDB;
ME1=USPIE0; //SPI0模块允许
P3SEL|=0X0E; //P3.1~3为模块占用
P3DIR&=~BIT2; / /P3.2位输入
P3DIR|=BIT0+BIT1+BIT3; //P3.0(STE0)、P3.1(SIMO)、P3.3(UCLK)输出
IE1|=URXIE0; //接收中断允许
P3OUT&=~BIT0; //STE0=0;
TXBUF0=0x52; //OPCODE=52H
while((UTCTL0&0X01)==0) ;
TXBUF0=0x01; //PA7~11,rrr
while((UTCTL0&0X01)==0) ;
TXBUF0=0x00; //PA0~6,BA8
while((UTCTL0&0X01)==0) ;
TXBUF0=0x00; //从第0个字节开始写
while((UTCTL0&0X01)==0) ;
_EINT(); // 开总中断
while(conl);
}
/*****************中断程序*****************************/
interrupt[UART0RX_VECTOR]void UART0RX(void)
{
NUM[k]=RXBUF0;
k++;
if(k>=5)
{ P3OUT|=BIT0; //STE0=1
conl=0; }
不知该段程序初始化USART模块对吗?是什么问题致使无法接受到数据?UCLK的时钟信号能测量到吗?是不是一直在该管脚(P3.3)向外输出时钟信号? 请您指教,谢谢! 1: 看不出原因,也许是硬件问题,您可以到www.lierda.com 网站的资料库里搜索“汇编”,然后下载“MSP430-FET430P汇编子程序”,里面有SPI的DEMO例程,供您参考。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]