共2条
1/1 1 跳转至页
USART,SPI 请教张先生几个关于USART模块同步通信(SPI方式)的问题
问
大侠您好!
我在用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例程,供您参考。
我在用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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |