共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 跳转至页
回复
打赏帖 | |
---|---|
嵌入式LinuxC语言程序调试和宏使用技巧被打赏50分 | |
让代码中包含最新的编译时间信息被打赏50分 | |
rtthread硬件加密--2crc加密分析被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】mcxa156使用低功耗定时器适配硬件RTC框架被打赏26分 | |
【STM32F769】AI之与本地deepseek对接被打赏50分 | |
Buck电路工作在CCM模式下电感电流的计算公式是什么?被打赏5分 | |
buck电路工作原理被打赏5分 | |
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏100分 | |
我想要一部加热台+多合一调试工具被打赏18分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 |