智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 11863|回复: 27
打印 上一主题 下一主题

[其他] 哪位大仙用过K60 SPI 与NRF24L01实现无线通信啊

  [复制链接]

5

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1600
QQ
威望
835
贡献
405
兑换币
246
注册时间
2012-1-5
在线时间
180 小时
跳转到指定楼层
1#
发表于 2012-11-6 20:17:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    网上有GPIO口模拟SPI控制NRF24L01的,但是我用K60内部SPI通信时,读写不了NRF24L01的寄存器啊!求大神解释。


void spi2_init (void)
{
    //使能SPI2时钟
    SIM_SCGC3 |= SIM_SCGC3_SPI2_MASK;
    //spi2PCS0,SCK,SIN,SOUT端口初始化
    PORTB_PCR20 |= PORT_PCR_MUX(2) ;
    PORTB_PCR21 |= PORT_PCR_MUX(2) ;
    PORTB_PCR22 |= PORT_PCR_MUX(2) ;
    PORTB_PCR23 |= PORT_PCR_MUX(2) ;
    //SPI2主机模式,传输停止状态
    SPI2_MCR = (SPI_MCR_MSTR_MASK | SPI_MCR_HALT_MASK);
    //清除接受队列,发送队列,片选信号低电平有效
    SPI2_MCR |= SPI_MCR_CLR_RXF_MASK ;
    SPI2_MCR |= SPI_MCR_CLR_TXF_MASK ;
    SPI2_MCR |= SPI_MCR_ROOE_MASK ;
    SPI2_MCR |= SPI_MCR_PCSIS_MASK ;
    //每帧8比特,波特率为5M,双重波特率
    SPI2_CTAR0 = SPI_CTAR_FMSZ(7) ;
    SPI2_CTAR0 |= SPI_CTAR_PBR(2) ;
    SPI2_CTAR0 |= SPI_CTAR_BR(3) ;
    SPI2_CTAR0 |= SPI_CTAR_DBR_MASK ;

    //清除队列尾标志,传输队列下溢标志,传输队列满标志,接收队列溢出、损耗标志
    SPI2_SR = (SPI_SR_EOQF_MASK
               | SPI_SR_TFUF_MASK
                   | SPI_SR_TFFF_MASK
                       | SPI_SR_RFOF_MASK
                           | SPI_SR_RFDF_MASK);
    SPI2_MCR &= ~SPI_MCR_MDIS_MASK;//使能DSPI时钟
    SPI2_MCR &= ~SPI_MCR_HALT_MASK;//启动SPI模块
}

uint8 SPI_RW(uint8 value)
{
    uint8 rvalue;
    SPI2_SR = SPI2_SR;
    SPI1_PUSHR = SPI_PUSHR_TXDATA(value);
    SPI2_PUSHR = (SPI_PUSHR_PCS(1)
                  | SPI_PUSHR_TXDATA(*va));
    while(!(SPI2_SR&SPI_SR_RFDF_MASK));
    rvalue=SPI2_POPR;
}

6

主题

56

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1197
威望
604
贡献
363
兑换币
394
注册时间
2013-11-26
在线时间
115 小时
28#
发表于 2015-3-31 11:13:16 | 只看该作者
可以双向通讯吗
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

高级会员

Rank: 4

积分
668
威望
376
贡献
156
兑换币
150
注册时间
2014-11-5
在线时间
68 小时
毕业学校
南华大学
27#
发表于 2015-3-16 22:24:20 | 只看该作者
:$
回复 支持 反对

使用道具 举报

1

主题

62

帖子

0

精华

高级会员

Rank: 4

积分
593
威望
294
贡献
203
兑换币
187
注册时间
2013-12-4
在线时间
48 小时
26#
发表于 2015-3-9 21:30:57 | 只看该作者
野火 发表于 2012-11-6 21:43
我们已经开源了 用内部SPI模块来驱动的了……首家独家 开源的 K60 内部 SPI模块控制NRF24L01+……网上搜 ...

多少人会因为用无线模块再买一块K60啊
回复 支持 反对

使用道具 举报

1

主题

62

帖子

0

精华

高级会员

Rank: 4

积分
593
威望
294
贡献
203
兑换币
187
注册时间
2013-12-4
在线时间
48 小时
25#
发表于 2015-3-9 17:21:27 | 只看该作者
***,为啥不用SPI加中断服务函数来处理呢,这样移植多方便:(:(
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
384
威望
193
贡献
105
兑换币
124
注册时间
2013-1-22
在线时间
43 小时
毕业学校
华南师范大学
24#
发表于 2013-7-14 13:18:48 | 只看该作者
腾曦 发表于 2013-7-5 03:05
为什么我用的时候总是会停在检测是否插入24L01模块的死循环中呢,明明线连接好了

SPI通道没有设置好吧
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
175
威望
96
贡献
49
兑换币
51
注册时间
2013-1-5
在线时间
15 小时
毕业学校
南华
23#
发表于 2013-7-5 03:05:12 | 只看该作者
为什么我用的时候总是会停在检测是否插入24L01模块的死循环中呢,明明线连接好了
回复 支持 反对

使用道具 举报

4

主题

70

帖子

0

精华

高级会员

Rank: 4

积分
978
威望
549
贡献
283
兑换币
165
注册时间
2012-12-14
在线时间
73 小时
22#
发表于 2013-5-13 16:43:11 | 只看该作者
NRF240L能实现全双功通信吗
回复 支持 反对

使用道具 举报

2

主题

181

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1872
威望
1048
贡献
360
兑换币
250
注册时间
2011-11-11
在线时间
232 小时
21#
发表于 2013-3-11 23:00:37 | 只看该作者
回复 支持 反对

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
20#
发表于 2013-3-8 15:58:14 | 只看该作者
owenpcf1 发表于 2013-1-29 21:52
那是不是用IO去模拟时序比本来的SPI模块还稳定?模拟时序会不会加重MCU的负担?

稳不稳定,看个人写的代码吧……
模拟IO,肯定会加重CPU负担,但影响不会太大

回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 12:59 , Processed in 0.061118 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表