8482|9

7

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

msp430g2553 的usci_b0 spi模式问题 [复制链接]

主要用到了launchpad msp430g2553的硬件spi与nrf24l01通信,已经用了usci_A0的串口通讯,现在用usci_B0的spi与nrf24l01通信,用io模拟可以通讯返回正确的status值,但是用usci_b0的spi模式,返回的值不正确
  1. //==============================================================================
  2. //函数:uint SPI_RW(uint uchar)
  3. //功能:NRF24L01的SPI写时序
  4. //******************************************************************************
  5. char SPI_RW(char data)
  6. {
  7.   UCB0TXBUF=data;
  8.   while(!(IFG2 & UCB0TXIFG));//发送完成?发送缓存空置1
  9.   //data1=U0RXBUF;
  10.   while(!(IFG2 & UCB0RXIFG));//接收完成?接收缓存有数据置1
  11.   return(UCB0RXBUF);
  12. }
  13. //****************************************************************************************************
  14. //函数:uchar SPI_Read(uchar reg)
  15. //功能:NRF24L01的SPI时序
  16. //****************************************************************************************************
  17. char SPI_Read(char reg)
  18. {
  19.         char reg_val;
  20.         RF24L01_CSN_0;           // CSN low, initialize SPI communication...
  21.         SPI_RW(reg);            // Select register to read from..
  22.         reg_val = SPI_RW(0);    // ..then read registervalue
  23.         RF24L01_CSN_1;         // CSN high, terminate SPI communication
  24.         return(reg_val);       // return register value
  25. }
复制代码
这个是usci_b0的初始设置:
  1. //===========SPI设置=============//
  2.   UCB0CTL1 |= UCSWRST;
  3.   UCB0CTL0 |= UCCKPL + UCMSB + UCMST + UCSYNC + UCMODE_0;  // 3-pin, 8-bit SPI master
  4.   UCB0CTL1 |= UCSSEL_2;                     // SMCLK
  5.   UCB0BR0 |= 0x02;                          // /2
  6.   UCB0BR1 = 0;                              //
  7.   
  8.   UCB0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
复制代码

最新回复

我的也是啊,什么问题啊?怎么读出来的数一直是0 啊?  详情 回复 发表于 2016-4-8 13:49
 
点赞 关注

回复
举报

298

帖子

2

TA的资源

纯净的硅(中级)

沙发
 
SPI_RW()函数不是应该先判断,再往发送缓冲里写吗,改一下这个看行不行

点评

请问应该是判断什么?判忙? [ 本帖最后由 ayj12345 于 2013-4-6 07:54 编辑 ]  详情 回复 发表于 2013-4-6 07:52
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

回复 沙发 yunhaiking 的帖子

请问应该是判断什么?判忙?

[ 本帖最后由 ayj12345 于 2013-4-6 07:54 编辑 ]

点评

应该先判断是否有正在发送的事件 然后再写数据  详情 回复 发表于 2014-8-10 20:09
while(!(IFG2 & UCB0TXIFG)); UCB0TXBUF=data;  详情 回复 发表于 2013-4-6 14:42
 
 
 

回复

298

帖子

2

TA的资源

纯净的硅(中级)

4
 

回复 板凳 ayj12345 的帖子

while(!(IFG2 & UCB0TXIFG));
UCB0TXBUF=data;

点评

喔,是判断发送缓存器空  详情 回复 发表于 2013-4-6 23:05
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

5
 

回复 4楼 yunhaiking 的帖子

喔,是判断发送缓存器空

点评

这样还是不行啊!!!  详情 回复 发表于 2013-5-4 10:05
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 5楼 ayj12345 的帖子

这样还是不行啊!!!
 
 
 

回复

19

帖子

1

TA的资源

一粒金砂(中级)

7
 
你好  请问你调试出来没啊?我是卡在了while(!(IFG2 & UCB0RXIFG));//接收完成?接收缓存有数据置1   不知道为啥啊,我的扣扣34555162   希望能指教~
 
 
 

回复

75

帖子

1

TA的资源

一粒金砂(中级)

8
 
ayj12345 发表于 2013-4-6 07:52
请问应该是判断什么?判忙?

[ 本帖最后由 ayj12345 于 2013-4-6 07:54 编辑 ]

应该先判断是否有正在发送的事件  然后再写数据
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 
你有没有MSP430G2553的硬件SPI的NRF的程序,有点话给我发个,谢谢了。386176447@qq.com
 
 
 

回复

9

帖子

1

TA的资源

一粒金砂(初级)

10
 
我的也是啊,什么问题啊?怎么读出来的数一直是0 啊?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表