共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
| OK1126B-S开发板的脚本编程及应用设计被打赏¥27元 | |
| 5v升压8.4v两节锂电池充电芯片,针对同步和异步的IC测试被打赏¥35元 | |
| 【S32K3XX】S32DS LPI2C 配置失败问题解决被打赏¥22元 | |
| 【S32K3XX】FLASH 的 DID 保护机制被打赏¥19元 | |
| OK1126B-S开发板串口通信及其使用被打赏¥18元 | |
| 【S32K3XX】多核 CORE ID 获取被打赏¥18元 | |
| OK1126B-S开发板的GPIO资源及其使用被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动屏幕(Arduino IDE环境)被打赏¥23元 | |
我要赚赏金
