共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电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 |