OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 13373|回复: 30
打印 上一主题 下一主题

nRF51822 AK II BLE 蓝牙4.0 开发板(实验3遥控传输)第三集

[复制链接]

  离线 

56

主题

386

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1304
金钱
1304
注册时间
2012-8-28
在线时间
22 小时
跳转到指定楼层
楼主
发表于 2013-12-11 20:03:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
正点原子公众号
上一章我讲了2个nrf51822之间的通讯


这次讲nrf24L01+和nrf51822之间的通讯。


关键的地方是地址,只有完全掌握地址每个bit才能玩好通讯


// 无线地址设置
//地址一共40个add_bit是add0~add39
//在2401地址add0先写(add0,add1,add2......add39)

//那2401和51822的地址关系如下
// 2401[add0 :add7] =PREFIX0[bit7:bit0](add7,add6,add5,add4,add3,add2,add1,add0)
// 2401[add8 :add15]=BASE0[bit31:bit24](add15,add14,add13,add12,add11,add10,add9,add8)
// 2401[add16:add23]=BASE0[bit23:bit16](add23,add22,add21,add20,add19,add18,add17,add16)
// 2401[add24:add31]=BASE0[bit15:bit8] (add31,add30,add29,add28,add27,add26,add25,add24)
// 2401[add32:add39]=BASE0[bit7 :bit0] (add39,add38,add37,add36,add35,add34,add33,add32)

//以上结论得出的2401地址是每8个bit首尾对调。以下是官方用的地址
//const u8  ip[6]={0xE7,0xE7,0xE7,0xE7,0xE7,0x00};//发射地址  从[bit0~7] [bit8~15] [bit16~23] [bit24~31] [bit32~39]
//const u8 ip0[6]={0xE7,0xE7,0xE7,0xE7,0xE7,0x00};//接收地址0 和51822通讯我调了(bit0先写)

//const u8 ip1[6]={0xC2,0xC2,0xC2,0xC2,0xC2,0x00};//接收地址1 bit39~bit8为"0x43"(bit0先写)

//const u8 ip2[6]={0xC3,0x00};//接收地址2    bit39~8和通道1共用,只写bit0~bit7
//const u8 ip3[6]={0xC4,0x00};//接收地址3 通道2345只能设置char
//const u8 ip4[6]={0xC5,0x00};//接收地址4 写的时候顺序是bit0~bit39
//const u8 ip5[6]={0xC6,0x00};//接收地址5 只有bit0~7有用。接收地址6:0xC7 接收地址7:0xC8



//无线功率4分贝,2424MHz,通道0地址FUCK0,通道1~7地址FUCK 1~7
//速率2MHz,数据字节3字节QXC(Q开始,C结束,x是数据char)
void radio_configure()//无线配置,准备和nrf24L01通讯
{
  //无线功率04:+4分贝,0:0分贝,FC:-4分贝,F8:-8分贝
//    F4:-12分贝,F0:-16分贝,EC:-20分贝,D8:-30分贝
NRF_RADIO->TXPOWER = (0x04<<0);//无线功率4分贝
  
NRF_RADIO->FREQUENCY = 24UL;//无线频率24MHz+2400MHz=2424MHz

//无线速率:00:1Mbit,01:2Mbit,02:250Kbit,03:1Mbit(蓝牙)
NRF_RADIO->MODE = (01<<0);//速率2MHz

// 无线地址关系设置
// * 51822[31:24] = 2401[24:31] 
// * 51822[23:16] = 2401[16:23]
// * 51822[15:8]  = 2401[8:15]
// * 51822[7:0]   = 2401[0:7]
// 通道3 到 0 的低字节
NRF_RADIO->REFIX0 =(0x23<<24) // 通道3的低字节地址C4 1100 0100
                  |(0xC3<<16) // 通道2的低字节地址C3 1100 0011
                  |(0x43<< 8) // 通道1的低字节地址C2 1100 0010
                  |(0xE7<< 0);// 通道0的低字节地址E7 1110 0111
// 通道7 到 4 的低字节地址
NRF_RADIO->REFIX1 =(0x13<<24) // 通道7的低字节地址C8 1100 1000
                  |(0xE3<<16) // 通道6的低字节地址C7 1100 0111
                  |(0x63<< 8) // 通道5的低字节地址C6 1100 0110
                  |(0xA3<< 0);// 通道4的低字节地址C5 1100 0101
 
  NRF_RADIO->BASE0   = (0xE7<<24)  // 通道0的高字节E7
                            |(0xE7<<16)
                   |(0xE7<<8)
                   |(0xE7<<0);

  NRF_RADIO->BASE1   = (0x43<<24)  // 通道1-7的高字节C2 1100 0010
                            |(0x43<<16)
                   |(0x43<<8)
                   |(0x43<<0);

  NRF_RADIO->TXADDRESS = 0x01UL;      // 发射使用的通道号:1通道
  NRF_RADIO->RXADDRESSES = 0x02UL;    // 接收的通道号:0通道

  // 配置包0的设置
  NRF_RADIO->CNF0 = (0<<16)| //S1领域的长度
                                    (0<<8) | //S0场的长度
                                    (0<<0);  //长度字段中的比特数

  // 配置包1的设置
   NRF_RADIO->CNF1 = (0<<25)| //效验位(0关,1开)
                                     (1<<24)| //数据大小端(高低字节哪个先发 0低字节,1高字节)
                                     (4<<16)| //通道1~7高字节长度( nrf24高低字节5字节:4个高+1个低)
                                    (32<<8) | //数据字节长度(255~1)32字节QxC
                                    (32<<0);  //硬件传输字节长度(255~1)32字节QxC

  // CRC 校验长度配置
  NRF_RADIO->CRCCNF = 2; // 校验长度 2个char
  if ((NRF_RADIO->CRCCNF & 0x03)== 2 )
  {
    NRF_RADIO->CRCINIT = 0xFFFFUL;      // 校验初始值
    NRF_RADIO->CRCPOLY = 0x11021UL;     // CRC poly: x^16+x^12^x^5+1
  }
  else if ((NRF_RADIO->CRCCNF & 0x03) == 1 )
  {
    NRF_RADIO->CRCINIT = 0xFFUL;        // 校验初始值
    NRF_RADIO->CRCPOLY = 0x107UL;       // CRC poly: x^8+x^2^x^1+1
  }
//接收寄存器是  NRF_RADIO->ACKETPTR
}





无线调试.zip

2.56 MB, 下载次数: 1948

QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

  离线 

1

主题

12

帖子

0

精华

新手入门

积分
36
金钱
36
注册时间
2013-10-28
在线时间
0 小时
2#
发表于 2013-12-11 20:41:47 | 只看该作者
顶起,难得好文章。

以上结论得出的2401地址是每8个bit首尾对调。


回复 支持 反对

使用道具 举报

  离线 

497

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
128161
金钱
128161
注册时间
2010-12-1
在线时间
1132 小时
3#
发表于 2013-12-11 23:17:12 | 只看该作者
51822还可以直接和NRF24L01通信???
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

  离线 

56

主题

386

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1304
金钱
1304
注册时间
2012-8-28
在线时间
22 小时
4#
 楼主| 发表于 2013-12-12 09:32:43 | 只看该作者
回复【3楼】正点原子:
---------------------------------
可以通讯的,我测试过,效果就和2个nrf24L01不应答通讯一样。我在找51822的应答函数。等我找到应答函数怎么用了就可以开启应答模式和2401通讯了。
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

  离线 

56

主题

386

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1304
金钱
1304
注册时间
2012-8-28
在线时间
22 小时
5#
 楼主| 发表于 2013-12-12 09:36:10 | 只看该作者
正点原子公众号
51822有01234567个通道可以用,每次传输最大255字节,最大速率2M,蓝牙模式速率1M
2401有012345个通道可以用,每次最大传输32字节,最大速率2M
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

  离线 

497

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
128161
金钱
128161
注册时间
2010-12-1
在线时间
1132 小时
6#
发表于 2013-12-12 10:13:40 | 只看该作者
不错,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

  离线 

56

主题

386

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1304
金钱
1304
注册时间
2012-8-28
在线时间
22 小时
7#
 楼主| 发表于 2013-12-12 12:50:10 | 只看该作者
库文件说明

nrf51_sdk.chm

6.77 MB, 下载次数: 1962

回复 支持 反对

使用道具 举报

  离线 

27

主题

765

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1350
金钱
1350
注册时间
2013-4-12
在线时间
44 小时
8#
发表于 2013-12-12 14:17:21 | 只看该作者
这个要挺
回复 支持 反对

使用道具 举报

  离线 

2

主题

5

帖子

0

精华

新手入门

积分
33
金钱
33
注册时间
2014-1-27
在线时间
0 小时
9#
发表于 2014-1-27 09:42:54 | 只看该作者
顶楼主!最近在学这个
菜鸟
回复 支持 反对

使用道具 举报

  离线 

0

主题

3

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2014-2-14
在线时间
2 小时
10#
发表于 2014-2-14 16:58:59 | 只看该作者
楼主写的真的很不错。
可见楼主的功底很深。
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2013-9-15
在线时间
0 小时
11#
发表于 2014-4-4 17:58:04 | 只看该作者
顶楼主!!!
回复 支持 反对

使用道具 举报

  离线 

42

主题

568

帖子

0

精华

高级会员

Rank: 4

积分
759
金钱
759
注册时间
2010-12-19
在线时间
0 小时
12#
发表于 2014-4-8 08:52:37 | 只看该作者
LZ能不能来个蓝牙一发一收的?
虽然我不属牛,但是我还是希望某一天能够像正点原子一样牛!
回复 支持 反对

使用道具 举报

  离线 

9

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2013-1-28
在线时间
8 小时
13#
发表于 2014-4-27 13:46:28 | 只看该作者
回复【4楼】750273008:
---------------------------------
你找到应答函数了吗,我看技术手册上没有关于应答的
回复 支持 反对

使用道具 举报

  离线 

56

主题

386

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1304
金钱
1304
注册时间
2012-8-28
在线时间
22 小时
14#
 楼主| 发表于 2014-4-30 14:36:39 | 只看该作者
回复【14楼】abcdelf:
回复【4楼】750273008:
---------------------------------
你找到应答函数了吗,我看技术手册上没有关于应答的
---------------------------------
开发板6310例程esb就是。不过库是加密的没公布函数体。我英语看不懂。你自己去了解吧。
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

  离线 

0

主题

2

帖子

0

精华

新手入门

积分
29
金钱
29
注册时间
2014-5-30
在线时间
1 小时
15#
发表于 2014-6-19 09:08:34 | 只看该作者
必须顶,楼主无线很强大
这个世界病了,为毛让我吃药???#@#&…(*…%¥%*…%¥($^*()—*&…%…¥
回复 支持 反对

使用道具 举报

  离线 

3

主题

6

帖子

0

精华

新手入门

积分
38
金钱
38
注册时间
2014-3-20
在线时间
0 小时
16#
发表于 2014-7-18 09:40:06 | 只看该作者
nordic的产品基本上都是可以互相通讯的
NORDIC?SEMICONDUCTER中国区代理。CALL ME 15219501942,0755-26674772 彭小姐
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2014-7-18
在线时间
0 小时
17#
发表于 2014-7-18 11:31:05 | 只看该作者
BLE4.0 和 2.4G不能同时工作吧。看规格书,要烧2.4G的固件才可以通讯24L01
回复 支持 反对

使用道具 举报

  离线 

4

主题

145

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2013-5-20
在线时间
7 小时
18#
发表于 2014-9-20 20:06:22 | 只看该作者
回复【4楼】750273008:
---------------------------------
我在坛子找到这么一段话:对于专有应用程序,nRF51822 提供了全新改进型 Gazell? 2.4GHz RF 协议堆栈,与 nRF24L 系列 Gazell 应用程序达至互操作性。与上一代的 nRF24LE1 相比,nRF51822 与全新 Gazell 协议堆栈的组合能削减高达 30% 的功耗。
这个意思是如果需要跟nRF24L通讯的话,需要在nRF51822中开辟一块堆栈用于存放支持nRF4L系列兼容的协议么?那么如果我需要两个功能都支持呢?也即蓝牙模式 和 兼容nRF24L模式都的协议栈支持,只不过在使用的时候只能选择其中之一处于运行。我理解可能有误,也可能是不是 这款芯片它芯片内部就有两个协议栈啊?需要后期下载烧录进去么?我看到国外的一款四轴飞行器选用的无线方案就是使用nRF51822,但是怎么实现两种模式切换到没有找到更多资料,也许我问的这些问题比较肤浅,还望大神指点迷津,万分感谢!!!
回复 支持 反对

使用道具 举报

  离线 

56

主题

386

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1304
金钱
1304
注册时间
2012-8-28
在线时间
22 小时
19#
 楼主| 发表于 2014-9-22 00:01:17 | 只看该作者
回复【19楼】tuyafei:
---------------------------------
你先想一下库是怎么来的,单片机是先有寄存器,然后厂家再写函数打包成库(SB的厂家把库加密了,看不到库函数原形,这该死的东西。。。)你们再操作这些库函数控制单片机,就拿8051单片机来说吧,厂家写库函数LED1(SET);LED1(RESET);你们用库函数就只会LED();你就不能看下P0引脚操作P0吗?蓝牙的库你可以烧录在里面,你用蓝牙库函数时不影响你操作寄存器(别冲突就行)。也就是说你可以操作寄存器。像我上面写的那样,操作寄存器。把它写到你的main里。另外我要说一下radio寄存器我看过,同一时刻,蓝牙和2.4g不能同时工作。必须分时。RADIO-> MODE(bit2~0)是控制   蓝牙和2.4G工作模式的,你只能切换他们。他们是不能同时工作的。但你可以让他们来回切换。
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

  离线 

56

主题

386

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1304
金钱
1304
注册时间
2012-8-28
在线时间
22 小时
20#
 楼主| 发表于 2014-9-22 00:04:06 | 只看该作者
回复【18楼】hellobaby:
---------------------------------
/*周边:RADIO*/
/ *说明:无线。 */

/*注册:RADIO_SHORTS* /
/ *说明:快捷的无线电。TASKS任务。EVENTS事件。 */
__O  uint32_t  TASKS_TXEN;                        /*!< TX模式(发射模式)                      */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
__O  uint32_t  TASKS_RXEN;                        /*!< RX模式(接收模式)                    */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __O  uint32_t  TASKS_START;                       /*!< 开始传输。                                         */
 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
__O  uint32_t  TASKS_STOP;                           /*!< 停止传输。                                     */
  / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
__O  uint32_t  TASKS_DISABLE;                     /*!<  关闭传输                                            */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __O  uint32_t  TASKS_RSSISTART;                   /*!< RSSI启动。 接收信号强度指示器(RSSI)开   */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __O  uint32_t  TASKS_RSSISTOP;                    /*!< RSSI停止。 接收信号强度指示器(RSSI)关     */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __O  uint32_t  TASKS_BCSTART;                     /*!< BC位计数器启动。                                             */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __O  uint32_t  TASKS_BCSTOP;                      /*!< BC位计数器停止。                                              */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   

  __IO uint32_t  EVENTS_READY;                      /*!<收发模式切换完毕     标志位                */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  EVENTS_ADDRESS;                    /*!><地址正确        标志位                                  */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  EVENTS_PAYLOAD;                    /*!>< 收到数据       标志位                          */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  EVENTS_END;                        /*!<    传输结束        标志位                       */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  EVENTS_DISABLED;                   /*!< 传输已关闭       标志位                                */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  EVENTS_DEVMATCH;                   /*!< 发生在最后接收到的数据包的装置地址匹配。         */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  EVENTS_DEVMISS;                    /*!< 序号器件地址匹配时发生的最后一个接收到的数据包。       */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  EVENTS_RSSIEND;                    /*!< RSSI结束。 接收信号强度指示器(RSSI)            */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  EVENTS_BCMATCH;                    /*!< BC位计数器达到指定的值。        */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  SHORTS;                            /*!< 无线电的运行状态   写0复位。                */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(W0)
                                                                                                           H    G F E  D C B  A
A:ready启动。
B:结束后禁用。
C:关闭TXEN(发射)。
D:关闭RXEN(接收)。
E:地址RSSI开始。
F:结束后开始。
G:BC位计数器启动。 
H:RSSI停止。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  INTENSET;                          /*!< 中断启用设置寄存器。                                       */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2  1  0(W1)
                                                                                                     I        H G F E  D C  B  A 
A:使能中断READY事件。
B:启用中断地址事件。
C:有效载荷情况下使能中断。
D:启用中断结束事件。
E:启用中断残疾人事件。
F:启用DEV匹配事件中断。
G:启用中断事件DEVMISS。
H:启用中断事件RSSIEND。
 I:启用中断事件BCMATCH。  
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  INTENCLR;                          /*!<中断清除寄存器。                                     */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2  1  0(W1)
                                                                                                     I        H G F E  D C  B  A 
A:关闭中断READY事件。
B:关闭 中断地址事件。
C:关闭有效载荷情况下使能中断。
D:关闭 中断结束事件。
E:关闭 中断残疾人事件。
F:关闭 DEV匹配事件中断。
G:关闭 中断事件DEVMISS。
H:关闭 中断事件RSSIEND。
 I:关闭 中断事件BCMATCH。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __I  uint32_t  CRCSTATUS;                         /*!>< CRC校验成功     标志位            */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(W0)
                                                                                                                                      A 
A: 读0:收到的数据包CRC 错误。 
    读1:收到的数据包CRC OK。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __I  uint32_t  RXMATCH;                           /*!< 收到数据的通道。                                                     */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(R)
                                                                                                                               A A  A 
A: 说明:收到数据的通道。 
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __I  uint32_t  RXCRC;                             /*!< 接收到的CRC校验码。                                                         */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                   A   A   A   A   A   A   A   A   A   A   A   A   A   A  A A A A A A  A  A A  A
A:说明:接收到的CRC校验码。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  DAI;                               /*!< 设备地址匹配指数。(信号强度)                 */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(R)
                                                                                                                               A A  A
A:说明:设备地址匹配指数。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  ACKETPTR;                         /*!< 数据包的指针。                      */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
 A   A   A   A   A   A  A   A   A   A   A   A   A   A   A   A   A   A   A   A   A  A A A A A A  A  A A  A 
A:收发数据用的buy的地址指针。地址是一个字节对齐的RAM地址。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  FREQUENCY;                         /*!< 频率+2400MHz                           */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                                                                                 A A A  A  A A  A
A:说明:设定频率+2400MHz
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  TXPOWER;                           /*!< 输出功率。                                                        */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                                                                              A A A A  A  A A  A
A: 0x04/*!< +4dBm. */
    0x00/*!< 0dBm. */
    0xFC/*!< -4dBm. */
    0xF8/*!< -8dBm. */
    0xF4/*!< -12dBm. */
    0xF0/*!< -16dBm. */
    0xEC/*!< -20dBm. */
    0xD8/*!< -30dBm. */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  MODE;                              /*!< 数据传输速率和调制。(传输模式)               */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                                                                                               A A  A
A:  0x00 /*!< 1Mbit/s的北欧propietary的收音机模式。 */
     0x01 /*!< 2Mbit/s的北欧propietary的收音机模式。 */
     0x02 /*!< 250kbit/s北欧propietary的的无线电模式。*/ 
     0x03 /*!< 1Mbit/s 的蓝牙低耗能* /
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  CNF0;                             /*!< 配置包0。                                            */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                       C   C   C  C                                   B                  A A  A
A:长度字段中的有效位。
B:S0场长度的字节数。
C:S1领域长度有效位数。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /  
  __IO uint32_t  CNF1;                             /*!< 配置包1。                                            */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                         E   D                            C  C   C   B   B   B   B   B   B  B B A A A A  A  A A  A 
A:定义硬件每次传输的最大长度(255~0)。15~8的长度受限于7~0的长度
B:用户设定每次传输的数据长度(字节255~0)。大于极限会溢出。
C:通道地址高字节有效长度(7~1)+低字节的8个bit(nrf24L01是5个字节,通讯的话4+1字节)
D:大小端(0低字节先传输,1高字节先传输)
E:是否启动数据包校验(1开,0关)
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /  
  __IO uint32_t  BASE0;                             /*!<通道0的高字节32bit                     */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /  
  __IO uint32_t  BASE1;                             /*!><通道1的高字节(1234567共用) 32bit                   */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /  
  __IO uint32_t  REFIX0;                           /*!>< 地址3~0的低字节(8bit代表一个通道)               */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
 D  D   D  D  D   D  D  C   C  C   C   C   C   C   C   B   B   B   B   B   B  B B A A A A  A  A A  A 
A:通道地址0。
B:通道地址1。
C:通道地址2。
D:通道地址3。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /   
  __IO uint32_t  REFIX1;                           /*!< 地址7~4的低字节             */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
 D  D   D  D  D   D  D  C   C  C   C   C   C   C   C   B   B   B   B   B   B  B B A A A A  A  A A  A  
A:通道地址 4。
B:通道地址 5。
C:通道地址 6。
D:通道地址 7。 
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 
  __IO uint32_t  TXADDRESS;                         /*!< 发射通道选择                                             */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                                                                                               A A  A 
A:发射通道(通道0~7)
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 
  __IO uint32_t  RXADDRESSES;                       /*!< 接收通道使能。                                             */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                                                                              H G F E  D C B  A
A:启用接收地址0。
B:启用接收地址1。
C:启用接收地址2。
D:启用接收地址3。
E:启用接收地址4。
F:启用接收地址5。
G:启用接收地址6。
H:启用接收地址7。  
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 
  __IO uint32_t  CRCCNF;                            /*!< CRC配置。                                                   */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                                                                           B                      A  A
A:CRC校验字节长度(3~0)。
B:CRC校验是否延后(1下一地址出校验。0本次地址)
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 
  __IO uint32_t  CRCPOLY;                           /*!< CRC校验密码。                     */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                   A   A   A   A   A   A   A   A   A   A   A   A   A   A  A A A A A A  A  A A
A:CRC多项式。决策点:开始任务。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 
  __IO uint32_t  CRCINIT;                           /*!<CRC的初始值。                                                   */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                   A   A   A   A   A   A   A   A   A   A   A   A   A   A  A A A A A A  A  A A  A
A: CRC计算的初始值。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 
  __IO uint32_t  TEST;                              /*!>< 测试功能使能寄存器。                                       */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                                                                                                  B  A
A:TXEN发射任务时恒定载波。 
B:TXEN或RXEN:收发任务时受PLL晶振控制。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 
  __IO uint32_t  TIFS;                              /*!<帧间间隔,以微秒为单位。                       */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                                                                              A A A A  A  A A  A
A:帧间间隔的微秒。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 
  __IO uint32_t  RSSISAMPLE;                        /*!>< RSSI样品。                                                        */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                                                                                 A A A  A  A A  A
A: RSSI样本结果。读取结果为正值,使ReceivedSignalStrength=-的RSSISAMPLE dBm
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 
  __I  uint32_t  STATE;                             /*!< 当前无线电状态。                                                 */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(R)
                                                                                                                           A  A A  A
A: 当前无线电状态。
(0x00UL) /*!< 收音机是处于禁用状态。 */
(0x01UL) /*!< 收音机是在Rx加速状态。 */
(0x02UL) /*!< 收音机是在Rx空闲状态。*/
(0x03UL) /*!< 收音机是在Rx状态。 */
(0x04UL) /*!<收音机是Rx禁用状态。*/
(0x09UL) /*!>< 收音机是在Tx加速状态。 */
(0x0AUL) /*!< 收音机是在Tx空闲状态。 */
(0x0BUL) /*!< 收音机是在TX状态。 */
(0x0CUL) /*!< 收音机是在Tx禁用状态。 */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 
  __IO uint32_t  DATAWHITEIV;                       /*!< 数据清空初始值。                                       */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                                                                                    A A  A  A A  A 
A:数据清空。位0对应LSFR到位置0,第1位至第5位...决策点:TXEN或RXEN任务。
 / / / / / / / / / / / / / / / / / / / / / / / / /    
  __IO uint32_t  BCC;                               /*!< 位计数器比较。                                                 */
 / / / / / / / / / / / / / / / / / / / / / / / / / / 
 __IO uint32_t  DAB[8];                            /*!< 设备地址基地段。(0~7)                                         */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / 
  __IO uint32_t  DAP[8];                            /*!< 设备地址的前缀。                                          */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                                           A   A   A   A   A   A  A A A A A A  A  A A  A
A:设备地址的前缀。
/ / / / / / / / / / / / / /
  __IO uint32_t  DACNF;                             /*!< 设备地址匹配配置。                                */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                                              O  N   M  L   K   J  I H G F E  D  C B  A 
A:启用或禁用设备地址匹配使用的设备地址0。
B:启用或禁用设备地址匹配使用的设备地址1。
C:启用或禁用设备地址匹配使用的设备地址2。
D:启用或禁用设备地址匹配使用的设备地址3。
E:启用或禁用设备地址匹配使用的设备地址4。
F:启用或禁用设备地址匹配使用的设备地址5。
G:启用或禁用设备地址匹配使用的设备地址6。
H:启用或禁用设备地址匹配使用的设备地址7。
I:设备地址0 TxAdd。
J:设备地址1 TxAdd。
K:设备地址2 TxAdd。
L:设备地址3 TxAdd。
M:设备地址4 TxAdd。
N:设备地址5 TxAdd。
O:设备地址6 TxAdd。
P:设备地址7 TxAdd。
/ / / / / / / / / / / / / / 
  __IO uint32_t  OVERRIDE0;                         /*!< 修剪值覆盖寄存器0。                                      */
  31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
   A  A   A   A  A   A    A  A   A   A   A   A   A   A   A   A   A   A   A   A   A   A A A A A A  A  A A  A
A:修剪值覆盖寄存器0。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /  
  __IO uint32_t  OVERRIDE1;                         /*!< 修剪值覆盖寄存器1。                                      */
  __IO uint32_t  OVERRIDE2;                         /*!< 修剪值覆盖寄存器2。                                     */
  __IO uint32_t  OVERRIDE3;                         /*!< 修剪值覆盖寄存器3。                                       */
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /  
__IO uint32_t  OVERRIDE4;                         /*!<修剪值覆盖寄存器4。         */
 31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
  B            A  A   A    A  A   A   A   A   A   A   A   A   A   A   A   A   A   A   A A A A A A  A  A A  A 
A:修剪值覆盖寄存器4。
B:启用或禁用覆盖默认的调整值。
/ / / / / / / / / / / / / / / / / / / / / / / / / / / /  / / / / / / / / / / / / / /  / / / / / / / / / / / / / /  
__IO uint32_t  OWER;                             /*!>< 外设的功率控制。              */
31 29 28 2726 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4  3  2 1  0(RW)
                                                                                                                                      A 
A:模块电源启用。
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

  离线 

56

主题

386

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1304
金钱
1304
注册时间
2012-8-28
在线时间
22 小时
21#
 楼主| 发表于 2014-9-22 00:09:27 | 只看该作者
回复【21楼】750273008:
---------------------------------
尼玛,这bit位跑这么多,还是去我QQ空间里看吧。我现在51822暂停学习了,现在补stm32知识,还是stm32mini3.0用的顺手,那个战舰一直在抽屉里吃灰ing。。。。等我stm32感觉学的差不多时,我再回来玩51822哈。
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

  离线 

56

主题

386

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1304
金钱
1304
注册时间
2012-8-28
在线时间
22 小时
22#
 楼主| 发表于 2014-9-22 00:13:27 | 只看该作者
回复【21楼】750273008:
---------------------------------
小提示:
__I是只能把寄存器的值读出,
__O是只能写入到寄存器
__IO可以读写
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

  离线 

4

主题

145

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2013-5-20
在线时间
7 小时
23#
发表于 2014-9-22 09:07:49 | 只看该作者
回复【20楼】750273008:
---------------------------------
谢谢,nRF51822和nRF24L通讯的时候,硬件天线兼容的吧,我想用蓝牙陶瓷天线设计电路,因为不太懂,所以问问前辈这个天线PCB设计需要哪些注意的地方?还是按照nRF24L的天线设计?照理应该和蓝牙的是通用的设计吧!再次感谢。
回复 支持 反对

使用道具 举报

  离线 

56

主题

386

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1304
金钱
1304
注册时间
2012-8-28
在线时间
22 小时
24#
 楼主| 发表于 2014-9-22 11:25:37 | 只看该作者
回复【24楼】tuyafei:
---------------------------------
天线只要不偏频就行。跪求这位仁兄设计个优盘那样的nrf51822。要板载jtag仿真器。引出所有io脚,在弄2排8个流水灯(上下2排,有的usb在右边。仿真调试好看流水灯状态)再留3.3和5V电压。这该死的淘宝越做越差,设计越来越脑残。天线最好再带个PA,设计到1100米。这样51822可以遥控1公里外的2401了。这样51822就可以控制(7f乘以bit40位)个无线设备了。这数量惊人。。。
QQ750273008有好的资料记得发给我哦。。。
回复 支持 反对

使用道具 举报

  离线 

4

主题

145

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2013-5-20
在线时间
7 小时
25#
发表于 2014-9-22 22:10:29 | 只看该作者
回复【25楼】750273008:
---------------------------------
前辈,我现在也在考虑设计天线+PA功能的,一直找不到可参考的天线功率放大器!国外有一一个开源四轴团队做的一个Crazyflie2.0,用的无线遥控方案就是nRF51822+PA,他们的博客写到,蓝牙测试距离达到1300米了,可以这个版本目前还没有发布,他们已经做了2.0测评、调试等等,发布出来就可以参考一下他们的设计,一个人在搞这些东西头真的很大。我自己设计了一个类Crazyflie四轴,这个蓝牙天线还有功率放大部分一直在犹豫,也没找到具体可靠设计资料。这是Crazyflie的蓝牙测试部分的博客:http://www.bitcraze.se/2014/08/crazyflie-2-0-bluetooth-low-energy-connectivity/。
回复 支持 反对

使用道具 举报

  离线 

4

主题

145

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2013-5-20
在线时间
7 小时
26#
发表于 2014-9-22 22:13:56 | 只看该作者
回复【26楼】tuyafei:
---------------------------------
应该是这个:http://www.bitcraze.se/2014/09/crazyflie-2-0-radio-range-test/,他们用的是20dBm RF amplifier.
回复 支持 反对

使用道具 举报

  离线 

27

主题

765

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1350
金钱
1350
注册时间
2013-4-12
在线时间
44 小时
27#
发表于 2015-3-14 11:37:30 | 只看该作者
楼主好久不见你更新蓝牙了。你有NRF51822的规格书吗?或者封装。
简单是多么的快乐,而快乐就因你而简单!微芯动力LTKKS
回复 支持 反对

使用道具 举报

  离线 

0

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2015-6-25
在线时间
0 小时
28#
发表于 2015-6-25 17:22:35 | 只看该作者
代理NORDIC蓝牙4.0芯片NRF51822
联系人:刘工
QQ:1330504646
手机:13714153746
NRF51822是一款为超低功耗无线应用(ULP wirelesss applications)打造的多协议单芯片解决方案。
它整合了Nordic一流的无线传送器,同时支持Bluetooth(R) low energy 和专用的2.4GHz协议栈。
基本情况是:
2.4GHZ多协议无线射频
32位ARM Cortex M0 处理器
128位AES硬件加密处理器
256kB flash / 16kB RAM
可编程外设接口PPI
全功能数字接口: SPI / I2C / UART
10位ADC
可编程的输出功率: +4dBm to -20dBm
应用开发和协议堆栈完全独立
与NRF24L系列完全兼容
与NRF51xxx系列管脚兼容
全局独立电源管理
工作电压范围(1.8 V ~ 3.6 V)
回复 支持 反对

使用道具 举报

  离线 

0

主题

3

帖子

0

精华

新手入门

积分
30
金钱
30
注册时间
2016-5-16
在线时间
7 小时
29#
发表于 2017-7-20 17:53:06 | 只看该作者
楼主,两个51822  radio调过吗?   我现在是发送好使,但是接收端死在:        while(NRF_RADIO->EVENTS_END == 0U)
                {
                        RLED_OFF();
                }
回复 支持 反对

使用道具 举报

  离线 

10

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2018-5-3
在线时间
15 小时
30#
发表于 2018-5-31 11:42:37 | 只看该作者
这个给的无线调试时24L01的吗?
回复 支持 反对

使用道具 举报

  离线 

8

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
215
金钱
215
注册时间
2017-7-10
在线时间
26 小时
31#
发表于 2018-6-8 09:18:38 | 只看该作者
楼主厉害啊
回复 支持 反对

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-6-20 13:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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