智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 11787|回复: 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;
}

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
2#
发表于 2012-11-6 21:43:52 | 只看该作者
本帖最后由 野火 于 2012-11-6 21:49 编辑

我们已经开源了 用内部SPI模块来驱动的了……首家独家 开源的 K60 内部 SPI模块控制NRF24L01+……网上搜索“野火k60开发板开源代码 ”即可找到

而且实现了中断发送和中断接收……发送 80*60大小的二值化图像,可达30帧每秒(NRF24L01+的极限了),而且中断方式发送,可在发送过程中MCU处理其他数据……


回复 支持 反对

使用道具 举报

5

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1600
QQ
威望
835
贡献
405
兑换币
246
注册时间
2012-1-5
在线时间
180 小时
3#
 楼主| 发表于 2012-11-7 18:54:29 | 只看该作者
野火 发表于 2012-11-6 21:43
我们已经开源了 用内部SPI模块来驱动的了……首家独家 开源的 K60 内部 SPI模块控制NRF24L01+……网上搜 ...

太感谢了
回复 支持 反对

使用道具 举报

8

主题

37

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1346
威望
660
贡献
360
兑换币
60
注册时间
2011-11-23
在线时间
163 小时
4#
发表于 2012-11-7 20:00:48 | 只看该作者
野火 发表于 2012-11-6 21:43
我们已经开源了 用内部SPI模块来驱动的了……首家独家 开源的 K60 内部 SPI模块控制NRF24L01+……网上搜 ...

请问你们试过nrf24l01的半双工通信吗?
回复 支持 反对

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
5#
发表于 2012-11-8 08:53:00 | 只看该作者
whenov 发表于 2012-11-7 20:00
请问你们试过nrf24l01的半双工通信吗?

试过的啊……
回复 支持 反对

使用道具 举报

5

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1600
QQ
威望
835
贡献
405
兑换币
246
注册时间
2012-1-5
在线时间
180 小时
6#
 楼主| 发表于 2012-11-8 10:46:31 | 只看该作者
野火 发表于 2012-11-8 08:53
试过的啊……

K60不是有片选控制寄存器吗,那为什么NRF24L01的片选用的是GPIO口控制片选啊?求解释,谢谢
回复 支持 反对

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
7#
发表于 2012-11-8 13:24:28 | 只看该作者
loucyin 发表于 2012-11-8 10:46
K60不是有片选控制寄存器吗,那为什么NRF24L01的片选用的是GPIO口控制片选啊?求解释,谢谢 ...

因为GPIO更加灵活……
回复 支持 反对

使用道具 举报

8

主题

37

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1346
威望
660
贡献
360
兑换币
60
注册时间
2011-11-23
在线时间
163 小时
8#
发表于 2012-11-8 14:31:38 | 只看该作者
野火 发表于 2012-11-8 08:53
试过的啊……

就是手动切换发送模式和接受模式?有例程提供吗?
网上有人说可以在应答包里携带数据,是真是假?
问题有点多。。。谢谢


回复 支持 反对

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
9#
发表于 2012-11-8 15:14:11 | 只看该作者
whenov 发表于 2012-11-8 14:31
就是手动切换发送模式和接受模式?有例程提供吗?
网上有人说可以在应答包里携带数据,是真是假?
问题 ...

是必须要手动切换的,我们的函数库已经实现这功能,只不过例程仅仅用了单向传输

自动应答的时候,如果 TX_PLD  FIFO 有数据,就会自动把他发送出去

回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2380
威望
1043
贡献
449
兑换币
423
注册时间
2012-4-22
在线时间
444 小时
毕业学校
广东海洋大学
10#
发表于 2012-11-9 05:33:12 | 只看该作者
想问下硬件SPI和NRF2401哪些需要注意的,我就直接拿模拟IO的修改。。但是始终不行。。不太明白。。发送完要读就读不了。SPI0SR_SPIF总是自动清空的。。好怪!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-7 19:22 , Processed in 0.089680 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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