搜索
bottom↓
回复: 95

[nRF51822 AK]教程目录,规划九章,最终会有穿戴设备项目。

  [复制链接]

出0入0汤圆

发表于 2013-8-31 07:11:34 | 显示全部楼层 |阅读模式
nRF51822-AK开发板预售的时候曾经承诺过会有配套教程。
目前,上手指南已经完成了,请看:
http://www.amobbs.com/thread-5549079-1-1.html

但是,对于想深入学习这款BLE的Soc芯片的同学,有深度的教程应该是更好的选择。

事先声明,由于是个人业余爱好,请大家多提宝贵意见,切莫对进度抱怨。
另外,个人精力有限,等不及并有能力的朋友可以先行完成相关章节。如果共享出来,我会给予资金支持并非常感谢!!

先上目录,请大家多提想法


最后,上预计进度:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2013-8-31 20:46:29 | 显示全部楼层
本帖最后由 overheat 于 2013-9-1 11:45 编辑

本教程默认用户熟悉nRF51822 AK的基本操作,否则请看楼主位的nRF51822 AK上手指南。

第一章:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入25汤圆

发表于 2013-8-31 20:48:01 | 显示全部楼层
mark 支持!

出0入0汤圆

发表于 2013-8-31 21:02:53 | 显示全部楼层
lz  真厉害                                                                                                     
看着lz这么一步一步做过来 、、      

出0入0汤圆

 楼主| 发表于 2013-9-1 15:10:47 | 显示全部楼层
本帖最后由 overheat 于 2013-9-2 05:42 编辑

怎么附件都丢了呢?重新上一下。

进度

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-9-1 16:22:28 | 显示全部楼层
想问问楼主对比CC2540的优势,资料我下载了。谢谢、

出0入0汤圆

 楼主| 发表于 2013-9-1 20:38:26 | 显示全部楼层
rejoice818 发表于 2013-9-1 16:22
想问问楼主对比CC2540的优势,资料我下载了。谢谢、


第一章,介绍及开发环境配置。里面专门有一个我总结的表格:

项目CC254xnRF51822CSR1010
最高输出功率0 dBm4 dBm7.5dBm
接收器灵敏度–94 dBm-93 dBm-93 dBm
工作模式 RX 低至17.9 mA13 mA16mA
工作模式 TX (0  dBm):18.2 mA10.5 mA16mA
电源电压范围2 V–3.6 V1.8 V to 3.6 V1.8 V to 3.6 V
封装6 x 6 mm6 x 6 mm5 x 5 mm
注:自己理解,仅供参考


这里主要对比的是功耗。

另外还有几点,非常引人注意:

nRF51822是Cortex-M0内核,CC2540是增强51内核。
nRF51822的蓝牙协议栈和应用程序完全分开,入门不需要学习TI自己的RTOS,CC2540则反之。
nRF51822与noridc的nRF24系列无线兼容,不需要改动硬件,换软件就能与nRF24xx通讯。CC2540好像不行。
。。。

当然nRF51822也有缺点,就是技术支持没有CC2540那么强。毕竟TI很大,而且nRF51822今年6月份才量产,CC2540已经出来几年了。
我写这个教程,也是想让大家上手快一点。

出0入0汤圆

发表于 2013-9-1 21:12:24 | 显示全部楼层
到手好几天了,还没入门,有道不断的画词,一词一词的啃!!!

出0入0汤圆

 楼主| 发表于 2013-9-1 22:29:57 | 显示全部楼层
xlwq 发表于 2013-9-1 21:12
到手好几天了,还没入门,有道不断的画词,一词一词的啃!!!

辛苦了!不过你这样看原版的理解的深入。

另外,给偷懒的朋友准备的:
http://www.amobbs.com/forum.php? ... p;page=1#pid6937209

出0入0汤圆

发表于 2013-9-1 23:08:17 | 显示全部楼层
穿戴设备开发可以带上我嘛?
开发过nrf24le1无线通信设备

出0入0汤圆

发表于 2013-9-1 23:08:45 | 显示全部楼层
overheat 发表于 2013-9-1 22:29
辛苦了!不过你这样看原版的理解的深入。

另外,给偷懒的朋友准备的:

穿戴设备开发可以带上我嘛?
开发过nrf24le1无线通信设备

出0入0汤圆

发表于 2013-9-1 23:11:03 | 显示全部楼层
能否提供开发板?

出0入0汤圆

发表于 2013-9-3 17:27:29 | 显示全部楼层
听楼主一说,值得一试,我有用过24L01,感觉不错。

出0入0汤圆

发表于 2013-9-4 11:05:07 | 显示全部楼层
本帖最后由 tyoo 于 2013-9-4 11:20 编辑

昨天拿到了DONGLE玩到现在才将资料等作用理清楚,看来官方教程真不是给我等菜鸟准备的。
所以给楼主提个建议,不必要按照官方资料来写教程,以一种面对完全新手的姿态来写,可分基础与进阶篇,基础篇就是手把手教大家先将板子跑起来,熟悉开发流程,熟悉各种资料作用,知道阅读哪节内容来实现目标即可。
我作为新手的思维来看,拿到板子后:
首先有一份说明来介绍nRF51822-AK与Dongle的特点、区别,特别是两者的作用,还有各种要用到的资料及作用。这部分内容看了不一定明白,但后面两个实验一做就容易明白了。
看完上面开始动手实践一些简单的例程,目标就是快速成功运行例程。
然后就是发挥想象力修改这些简单的例程,在此过程基本上能够熟悉整个开发流程及资料。
最后开发使用了,用到哪,资料查到哪。

教程我想到了几个内容:
开发环境搭建。  
Dongle上按键与点灯
nRF51822-AK上按键与点灯,这里涉及到分别用Dongle和J-link下载,我的Jlink没法用,暂未做过。
Dongle与nRF51822-AK通信,通过按键控制Dongle上的灯。
手机与Dongle(或nRF51822-AK)连接。

我的学习目标也是实现上面5节的功能。

出0入0汤圆

 楼主| 发表于 2013-9-4 11:35:46 | 显示全部楼层
tyoo 发表于 2013-9-4 11:05
昨天拿到了DONGLE玩到现在才将资料等作用理清楚,看来官方教程真不是给我等菜鸟准备的。
所以给楼主提个建 ...

上手指南写的还有点生硬吧?开头应该加上你说的资源介绍和区别。
里面的例程都能跑起来吧?

这个书的确还是太简单了,需要配合上手指南一起看。另外你提到的几点,我也在写,书里应该都会有提及。

出0入0汤圆

 楼主| 发表于 2013-9-4 19:44:39 | 显示全部楼层
本帖最后由 overheat 于 2013-9-4 19:53 编辑

1 跑马灯
对于学习单片机编程的人来说,“跑马灯”这个词再熟悉不过了,它基本是我们入门的第一个例子。

本章我们就以“跑马灯”为例子,讲解nRF51822软件编程的第一课:GPIO。(PDF格式,如果下载后缀不对,请自行修改。)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-9-8 15:37:27 | 显示全部楼层
3 Hello, world


重点讲UART。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-9-12 14:13:57 | 显示全部楼层
4 Radio

普通2.4G的无线通讯,需要AK board和USB Dongle。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-9-14 10:57:31 | 显示全部楼层
感谢楼主的教程。。辛苦了。。

出0入0汤圆

发表于 2013-9-14 12:10:18 | 显示全部楼层
overheat 发表于 2013-9-12 14:13
4 Radio

普通2.4G的无线通讯,需要AK board和USB Dongle。

板子也搞了几天了,问下,怎么在中断中收发?
RTC中断已可以了,这个RADIO怎么中断收发呢

出0入0汤圆

 楼主| 发表于 2013-9-14 15:36:23 | 显示全部楼层
ccyhyxt 发表于 2013-9-14 12:10
板子也搞了几天了,问下,怎么在中断中收发?
RTC中断已可以了,这个RADIO怎么中断收发呢 ...


既然RTC中断OK了,RADIO也一样。我也准备在书中加一个interrupt的章节。

你参考一下nrf51.h中的中断定义,仿照RTC修改就行。

出0入0汤圆

发表于 2013-9-14 17:03:58 | 显示全部楼层
我建议咱们建一个学习群吧,交流方便

出0入0汤圆

发表于 2013-9-15 09:25:20 | 显示全部楼层
overheat 发表于 2013-9-14 15:36
既然RTC中断OK了,RADIO也一样。我也准备在书中加一个interrupt的章节。

你参考一下nrf51.h中的中断定义 ...

重点讲讲RADIO的啊,还是搞不定

出0入0汤圆

 楼主| 发表于 2013-9-15 21:49:29 | 显示全部楼层
ccyhyxt 发表于 2013-9-15 09:25
重点讲讲RADIO的啊,还是搞不定


想用中断发Radio?
ok,明天。

出0入0汤圆

 楼主| 发表于 2013-9-15 21:52:16 | 显示全部楼层
MPU6050的连接例程(入门版本):

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-9-17 14:01:36 | 显示全部楼层
overheat 发表于 2013-9-15 21:49
想用中断发Radio?
ok,明天。

楼主还在没,RADIO中断标志在哪设都没找到..

出0入0汤圆

 楼主| 发表于 2013-9-17 20:28:05 | 显示全部楼层
ccyhyxt 发表于 2013-9-17 14:01
楼主还在没,RADIO中断标志在哪设都没找到..

Nordic\nrf51822\Include\nrf51.h中的:
第58行:RADIO_IRQn                    =   1,              /*!<   1  RADIO   */
这个是中断的句柄(handler),再往下看:
第285行起:
/* ================================================================================ */
/* ================                      RADIO                     ================ */
/* ================================================================================ */


/**
  * @brief The radio. (RADIO)
  */

typedef struct {                                    /*!< RADIO Structure                                                       */
...
  __IO uint32_t  EVENTS_READY;                      /*!< Ready event.                                                          */
  __IO uint32_t  EVENTS_ADDRESS;                    /*!< Address event.                                                        */
  __IO uint32_t  EVENTS_PAYLOAD;                    /*!< Payload event.                                                        */
  __IO uint32_t  EVENTS_END;                        /*!< End event.                                                            */
  __IO uint32_t  EVENTS_DISABLED;                   /*!< Disable event.                                                        */
  __IO uint32_t  EVENTS_DEVMATCH;                   /*!< A device address match occurred on the last received packet.          */
  __IO uint32_t  EVENTS_DEVMISS;                    /*!< No device address match occurred on the last received packet.         */
  __IO uint32_t  EVENTS_RSSIEND;                    /*!< Sampling of the receive signal strength complete. A new RSSI
...

进入handler后,查看以上这几个event的寄存器,就可以判断发生了什么事件。然后做相应的处理。

出0入0汤圆

发表于 2013-9-18 10:36:54 | 显示全部楼层
楼主应该把入手指南写的再基础点,尤其是开头部分,怎么把板子跑起来,
对于一个小白想学习的,表示可以再改进一下。

出0入0汤圆

发表于 2013-9-18 20:49:07 | 显示全部楼层
overheat 发表于 2013-9-17 20:28
Nordic\nrf51822\Include\nrf51.h中的:
第58行:RADIO_IRQn                    =   1,              /* ...

这个我知道,关键是,一直进不了中断……

还有个问题:
这是我RTC的中断

  1. static uint8_t volatile ledtimeout=0;
  2. void RTC0_IRQHandler()
  3. {
  4.   if ((NRF_RTC0->EVENTS_TICK != 0) && ((NRF_RTC0->INTENSET & RTC_INTENSET_TICK_Msk) != 0))
  5.   {
  6.                 ++ledtimeout;
  7.                 if(ledtimeout>=4)
  8.                 {
  9.                         ledtimeout=0;
  10.                         NRF_RTC0->EVENTS_TICK = 0;
  11.                         nrf_gpio_pin_toggle(23);
  12.                         nrf_gpio_pin_write(21,1);
  13.                         nrf_gpio_pin_write(22,1);
  14.                 }
  15.   }
  16. }
复制代码
这是我MAIN中的while(true):
  1. NRF_RADIO->PACKETPTR = (uint32_t)packet;
  2.                 NRF_RADIO->EVENTS_READY = 0U;
  3.     // Enable radio and wait for ready
  4.     NRF_RADIO->TASKS_RXEN = 1U;
  5.                
  6.     while(NRF_RADIO->EVENTS_READY == 0U)
  7.     {
  8.     }
  9.     NRF_RADIO->EVENTS_END = 0U;
  10.     // Start listening and wait for address received event
  11.     NRF_RADIO->TASKS_START = 1U;
  12.     // Wait for end of packet
  13.     while(NRF_RADIO->EVENTS_END == 0U)
  14.     {
  15.     }
  16.     // Write received data to LED0 and LED1 on CRC match
  17.     if (NRF_RADIO->CRCSTATUS == 1U)
  18.     {
  19.       switch(packet[0])
  20.       {
  21.         case 0:
  22.           nrf_gpio_pin_write(21,1);
  23.                                         nrf_gpio_pin_write(22,1);
  24.                                         nrf_gpio_pin_write(23,1);
  25.           break;

  26.         case 1:
  27.           nrf_gpio_pin_toggle(21);
  28.                                         //nrf_delay_ms(200);
  29.           break;
  30.                                 case 2:
  31.           nrf_gpio_pin_write(22,0);
  32.                                         //nrf_delay_ms(200);
  33.           break;
  34.                                 case 3:
  35.           nrf_gpio_pin_write(21,1);
  36.                                         nrf_gpio_pin_write(22,1);
  37.                                         nrf_gpio_pin_write(23,1);
  38.           break;
  39.       }
  40.     }
  41.                 NRF_RADIO->EVENTS_DISABLED = 0U;
  42.     // Disable radio
  43.     NRF_RADIO->TASKS_DISABLE = 1U;
  44.     while(NRF_RADIO->EVENTS_DISABLED == 0U)
  45.     {
  46.     }
复制代码
问题是RTC中断开启那无线收就不正常,收了几下就没了
RTC关了正常


AK板一直在发
  1. packet[0] = 1;
  2.                         NRF_RADIO->PACKETPTR = (uint32_t)packet;
  3.                         NRF_RADIO->EVENTS_READY = 0U;
  4.                         NRF_RADIO->TASKS_TXEN = 1;
  5.                         while (NRF_RADIO->EVENTS_READY == 0U)
  6.                         {
  7.                         }
  8.                         NRF_RADIO->TASKS_START = 1U;
  9.                         NRF_RADIO->EVENTS_END = 0U;  
  10.                         while(NRF_RADIO->EVENTS_END == 0U)
  11.                         {
  12.                         }
  13.                        
  14.                         NRF_RADIO->EVENTS_DISABLED = 0U;
  15.                         // Disable radio
  16.                         NRF_RADIO->TASKS_DISABLE = 1U;
  17.                         while(NRF_RADIO->EVENTS_DISABLED == 0U)
  18.                         {
  19.                         }
  20.                         nrf_gpio_pin_toggle(18);
  21.                         nrf_delay_ms(20);
复制代码
会是什么问题??

出0入0汤圆

 楼主| 发表于 2013-9-19 03:57:57 | 显示全部楼层
ccyhyxt 发表于 2013-9-18 20:49
这个我知道,关键是,一直进不了中断……

还有个问题:

你的RADIO没用中断?

出0入0汤圆

发表于 2013-9-19 08:15:15 | 显示全部楼层
overheat 发表于 2013-9-19 03:57
你的RADIO没用中断?

是中断用不起来,
  1. void init(void)
  2. {
  3.         NRF_CLOCK->EVENTS_LFCLKSTARTED = 0;
  4.         NRF_CLOCK->TASKS_LFCLKSTART = 1;
  5.         while (NRF_CLOCK->EVENTS_LFCLKSTARTED == 0)
  6.   {
  7.   }
  8.   /* Start 16 MHz crystal oscillator */
  9.   NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
  10.   NRF_CLOCK->TASKS_HFCLKSTART = 1;

  11.   /* Wait for the external oscillator to start up */
  12.   while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0)
  13.   {
  14.   }

  15.   // Set radio configuration parameters
  16.         //---------------------------------------------------------------------------------------------------------
  17.   // Radio config
  18.   NRF_RADIO->TXPOWER = (RADIO_TXPOWER_TXPOWER_0dBm << RADIO_TXPOWER_TXPOWER_Pos);
  19.   NRF_RADIO->FREQUENCY = 7UL;                // Frequency bin 7, 2407MHz
  20.   NRF_RADIO->MODE = (RADIO_MODE_MODE_Nrf_2Mbit << RADIO_MODE_MODE_Pos);

  21.   // Radio address config
  22.   NRF_RADIO->PREFIX0 = 0xC4C3C2E7UL;  // Prefix byte of addresses 3 to 0
  23.   NRF_RADIO->PREFIX1 = 0xC5C6C7C8UL;  // Prefix byte of addresses 7 to 4
  24.   NRF_RADIO->BASE0   = 0xE7E7E7E7UL;  // Base address for prefix 0
  25.   NRF_RADIO->BASE1   = 0x00C2C2C2UL;  // Base address for prefix 1-7
  26.   NRF_RADIO->TXADDRESS = 0x00UL;      // Set device address 0 to use when transmitting
  27.   NRF_RADIO->RXADDRESSES = 0x01UL;    // Enable device address 0 to use which receiving

  28.   // Packet configuration
  29.   NRF_RADIO->PCNF0 = (PACKET0_S1_SIZE << RADIO_PCNF0_S1LEN_Pos) |
  30.                      (PACKET0_S0_SIZE << RADIO_PCNF0_S0LEN_Pos) |
  31.                      (PACKET0_PAYLOAD_SIZE << RADIO_PCNF0_LFLEN_Pos); //lint !e845 "The right argument to operator '|' is certain to be 0"

  32.   // Packet configuration
  33.    NRF_RADIO->PCNF1 = (RADIO_PCNF1_WHITEEN_Disabled << RADIO_PCNF1_WHITEEN_Pos)    |
  34.                       (RADIO_PCNF1_ENDIAN_Big << RADIO_PCNF1_ENDIAN_Pos)           |
  35.                       (PACKET1_BASE_ADDRESS_LENGTH << RADIO_PCNF1_BALEN_Pos)       |
  36.                       (PACKET1_STATIC_LENGTH << RADIO_PCNF1_STATLEN_Pos)           |
  37.                       (PACKET1_PAYLOAD_SIZE << RADIO_PCNF1_MAXLEN_Pos); //lint !e845 "The right argument to operator '|' is certain to be 0"

  38.   // CRC Config
  39.   NRF_RADIO->CRCCNF = (RADIO_CRCCNF_LEN_Two << RADIO_CRCCNF_LEN_Pos); // Number of checksum bits
  40.   if ((NRF_RADIO->CRCCNF & RADIO_CRCCNF_LEN_Msk) == (RADIO_CRCCNF_LEN_Two << RADIO_CRCCNF_LEN_Pos))
  41.   {
  42.     NRF_RADIO->CRCINIT = 0xFFFFUL;      // Initial value      
  43.     NRF_RADIO->CRCPOLY = 0x11021UL;     // CRC poly: x^16+x^12^x^5+1
  44.   }
  45.   else if ((NRF_RADIO->CRCCNF & RADIO_CRCCNF_LEN_Msk) == (RADIO_CRCCNF_LEN_One << RADIO_CRCCNF_LEN_Pos))
  46.   {
  47.     NRF_RADIO->CRCINIT = 0xFFUL;        // Initial value
  48.     NRF_RADIO->CRCPOLY = 0x107UL;       // CRC poly: x^8+x^2^x^1+1
  49.   }
  50.   
  51.   nrf_delay_ms(3);
  52.         //---------------------------------------------------------------------------------------------------------
  53.   // Set payload pointer
  54.   NRF_RADIO->PACKETPTR = (uint32_t)packet;
  55.         NRF_RADIO->EVENTS_READY = 0U;
  56.         // Enable radio and wait for ready
  57.         NRF_RADIO->TASKS_RXEN = 1U;
  58.        
  59.         while(NRF_RADIO->EVENTS_READY == 0U)
  60.         {
  61.         }
  62.         NRF_RADIO->EVENTS_END = 0U;
  63.         // Start listening and wait for address received event
  64.         NRF_RADIO->TASKS_START = 1U;
  65.         while(NRF_RADIO->EVENTS_END == 0U)
  66.         {
  67.         }
  68.         NVIC_EnableIRQ(RADIO_IRQn);
  69.        
  70. }
复制代码
  1. void RADIO_IRQHandler()
  2. {
  3.         NRF_RADIO->PACKETPTR = (uint32_t)packet;
  4.         if(NRF_RADIO->EVENTS_DEVMATCH==1)
  5.         {
  6.                 switch(packet[0])
  7.                 {
  8.                         case 0:
  9.                                 nrf_gpio_pin_write(21,1);
  10.                                 nrf_gpio_pin_write(22,1);
  11.                                 nrf_gpio_pin_write(23,1);
  12.                                 break;

  13.                         case 1:
  14.                                 nrf_gpio_pin_write(21,0);
  15.                                 break;
  16.                         case 2:
  17.                                 nrf_gpio_pin_write(22,0);
  18.                                 break;
  19.                         case 3:
  20.                                 nrf_gpio_pin_write(21,1);
  21.                                 nrf_gpio_pin_write(22,1);
  22.                                 nrf_gpio_pin_write(23,1);
  23.                                 break;
  24.                 }
  25.         }
  26. }
复制代码
中断一直进不了,配置如上,另一个是一直发的

出0入0汤圆

 楼主| 发表于 2013-9-20 16:52:57 | 显示全部楼层
请参考如下UART中断使能语句修改你的RADIO中断使能:
  // Enable UART interrupt
  NRF_UART0->INTENCLR = 0xffffffffUL;
  NRF_UART0->INTENSET = (UART_INTENSET_RXDRDY_Set << UART_INTENSET_RXDRDY_Pos) |
                        (UART_INTENSET_TXDRDY_Set << UART_INTENSET_TXDRDY_Pos) |
                        (UART_INTENSET_ERROR_Set << UART_INTENSET_ERROR_Pos);

  NVIC_ClearPendingIRQ(UART0_IRQn);
  NVIC_SetPriority(UART0_IRQn, 0);
  NVIC_EnableIRQ(UART0_IRQn);

出0入0汤圆

 楼主| 发表于 2013-9-21 11:19:51 | 显示全部楼层
由于中秋放假,迟来的低功耗教程:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-9-23 11:14:47 | 显示全部楼层
mark...........

出0入0汤圆

发表于 2013-9-24 15:04:08 | 显示全部楼层
关注ing.....

出0入0汤圆

 楼主| 发表于 2013-9-24 22:26:44 | 显示全部楼层
第八章BLE:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-9-24 22:41:54 | 显示全部楼层
嗯,不错!
希望更加多自己的东西,而不是照搬照抄。

出0入0汤圆

 楼主| 发表于 2013-9-25 06:30:48 | 显示全部楼层
eye 发表于 2013-9-24 22:41
嗯,不错!
希望更加多自己的东西,而不是照搬照抄。

循序渐进吧,有个网友说要帮忙搬到wiki上的,到时候大家都可以修改贡献。

出0入0汤圆

 楼主| 发表于 2013-9-28 11:56:16 | 显示全部楼层
看到大家安卓手机比较多,先出个三星 S3的教程:
android:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-10-8 15:44:01 | 显示全部楼层
我現在也在學習開發NRF51822,能加個Q,一起學習交流嗎?我目前遇到一個無法添加service characteristic的問題。

出0入0汤圆

发表于 2013-10-25 11:17:19 | 显示全部楼层
项目结束啦?强!

出0入0汤圆

发表于 2013-11-9 11:41:05 | 显示全部楼层
顶,,,

出0入0汤圆

发表于 2013-12-25 14:42:32 | 显示全部楼层
强呀,不得不顶!谢谢了!

出0入0汤圆

发表于 2013-12-25 16:06:02 | 显示全部楼层
先MARK一下,回头再细看

出75入88汤圆

发表于 2014-1-3 08:09:48 | 显示全部楼层
本帖最后由 bzbs 于 2014-1-3 08:14 编辑

耐心等计步器教程
如果能出一个和24l01系列通讯的教程就更好了
现在好像不能实现2个 51822之间的直接通讯,因此可以变通,一个做主,一个用24L01来通讯.不知道是否可行

出0入0汤圆

发表于 2014-1-3 08:34:14 | 显示全部楼层
bzbs 发表于 2014-1-3 08:09
耐心等计步器教程
如果能出一个和24l01系列通讯的教程就更好了
现在好像不能实现2个 51822之间的直接通讯, ...

51822好像只能做从机,现在弄了另外一个板,据说可以做主机,最大可以一拖8.

出0入0汤圆

 楼主| 发表于 2014-1-3 09:04:07 | 显示全部楼层
bzbs 发表于 2014-1-3 08:09
耐心等计步器教程
如果能出一个和24l01系列通讯的教程就更好了
现在好像不能实现2个 51822之间的直接通讯, ...

最近Nordic出了S120协议栈,可以让两个nRF51822互相通讯了。

出0入0汤圆

发表于 2014-3-6 16:32:36 | 显示全部楼层
楼主厉害,佩服,能不能留个QQ号码给我,我等你的穿戴设备项目,开发板我一定买。支持楼主

出0入0汤圆

发表于 2014-3-6 23:34:38 来自手机 | 显示全部楼层
顶起来,团购楼主的东西还在吃灰呢.

出0入0汤圆

发表于 2014-3-6 23:58:39 来自手机 | 显示全部楼层
不等楼主了,转战昆天科了,协议可主可从,最多一对八,拿到芯片也做开发板玩。

出0入0汤圆

发表于 2014-3-23 10:58:45 | 显示全部楼层
mark 。nRF51822-AK 开发。

出0入0汤圆

发表于 2014-3-28 09:05:12 | 显示全部楼层
overheat 发表于 2014-1-3 09:04
最近Nordic出了S120协议栈,可以让两个nRF51822互相通讯了。

nRF51822 AK II开发板 能不能和其他蓝牙4.0适配器连,怎么连,要下那个程序?

出0入0汤圆

 楼主| 发表于 2014-3-28 11:45:48 | 显示全部楼层
flyheart33 发表于 2014-3-28 09:05
nRF51822 AK II开发板 能不能和其他蓝牙4.0适配器连,怎么连,要下那个程序? ...

应该可以了,因为S120协议栈已经出来了。

不过市面上好像还没有看到啊。

出0入0汤圆

发表于 2014-3-28 16:27:13 | 显示全部楼层
overheat 发表于 2014-3-28 11:45
应该可以了,因为S120协议栈已经出来了。

不过市面上好像还没有看到啊。 ...

使用s110协议栈,nRF51822可以作为从设备被其他蓝牙搜。不知道程序怎么弄

出0入0汤圆

发表于 2014-3-28 16:41:31 | 显示全部楼层
mark..........

出0入0汤圆

 楼主| 发表于 2014-3-28 16:59:44 | 显示全部楼层
flyheart33 发表于 2014-3-28 16:27
使用s110协议栈,nRF51822可以作为从设备被其他蓝牙搜。不知道程序怎么弄

这个是最典型的作为外设的应用啊,官方的SDK里面就有代码。

出0入0汤圆

发表于 2014-3-28 17:03:45 | 显示全部楼层
overheat 发表于 2014-3-28 16:59
这个是最典型的作为外设的应用啊,官方的SDK里面就有代码。

你是说那个BLE心率的例子吗? 这个怎么和其他蓝牙配对?

还有ble 和 s110协议栈有什么联系

出0入0汤圆

 楼主| 发表于 2014-3-28 20:19:07 | 显示全部楼层
flyheart33 发表于 2014-3-28 17:03
你是说那个BLE心率的例子吗? 这个怎么和其他蓝牙配对?

还有ble 和 s110协议栈有什么联系 ...

是心率的例子,和其他蓝牙配对?你说的其他蓝牙是指手机吗?我不是很理解。

nordic的ble协议栈分为:
1. S110 用来做外设的,如心率带
2. S120用来做主机, 如智能家居类的应用。

出0入0汤圆

发表于 2014-3-28 20:53:15 | 显示全部楼层
overheat 发表于 2014-3-28 20:19
是心率的例子,和其他蓝牙配对?你说的其他蓝牙是指手机吗?我不是很理解。

nordic的ble协议栈分为:

我想说的是,能不能像市场上卖的蓝牙模块一样,可以配对!比方说,人家是用TI的CC5240做的蓝牙模块,我们这个nRF51822能不能和它连,怎么连!

能不能加QQ交流,我的QQ 2653213252  flyheart

出0入0汤圆

 楼主| 发表于 2014-3-28 21:01:27 | 显示全部楼层
flyheart33 发表于 2014-3-28 20:53
我想说的是,能不能像市场上卖的蓝牙模块一样,可以配对!比方说,人家是用TI的CC5240做的蓝牙模块,我们 ...

可以连接,我们的这个烧写S120协议栈就行。

出0入0汤圆

发表于 2014-3-31 11:42:15 | 显示全部楼层
overheat 发表于 2014-3-28 21:01
可以连接,我们的这个烧写S120协议栈就行。


overheat,你好


nRF51822只有31脚,P00 - P30 ,为什么这里SPI0定义了P31?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-4-1 08:07:42 | 显示全部楼层
QFN的没有引出p0.31,WLCSP的有。

出0入0汤圆

发表于 2014-4-1 09:00:25 | 显示全部楼层
overheat 发表于 2014-4-1 08:07
QFN的没有引出p0.31,WLCSP的有。

原来是这样啊,默认连到了SPI0的CLK

出0入0汤圆

发表于 2014-4-4 00:11:42 | 显示全部楼层
overheat 发表于 2014-4-1 08:07
QFN的没有引出p0.31,WLCSP的有。

overheart 大哥

我烧写了S120协议栈,但是用济南华贸HM-15蓝牙4.0还是搜不到,不知道为何?

出0入0汤圆

 楼主| 发表于 2014-4-4 09:07:34 | 显示全部楼层
flyheart33 发表于 2014-4-4 00:11
overheart 大哥

我烧写了S120协议栈,但是用济南华贸HM-15蓝牙4.0还是搜不到,不知道为何? ...

S120是做主模式的,你说的那个设备应该也是主模式的吧?

应该是一个主,一个从才能搜索到啊。

出0入0汤圆

发表于 2014-4-4 09:32:14 | 显示全部楼层
overheat 发表于 2014-4-4 09:07
S120是做主模式的,你说的那个设备应该也是主模式的吧?

应该是一个主,一个从才能搜索到啊。 ...

对,那个是主机,想用开发板做从机,怎么做?

出0入0汤圆

 楼主| 发表于 2014-4-4 09:34:06 | 显示全部楼层
flyheart33 发表于 2014-4-4 09:32
对,那个是主机,想用开发板做从机,怎么做?

开发板要烧写S110的协议,《上手指南》里面有个心率计的例子就可以。

出0入4汤圆

发表于 2014-4-4 09:36:45 | 显示全部楼层
3q 正找资料  

出0入0汤圆

发表于 2014-4-4 11:06:12 | 显示全部楼层
overheat 发表于 2014-4-4 09:34
开发板要烧写S110的协议,《上手指南》里面有个心率计的例子就可以。

试了很多次,不行,搜不到!用ipad能连,
这个蓝牙是CC2540芯片的

出0入0汤圆

 楼主| 发表于 2014-4-4 15:26:49 | 显示全部楼层
flyheart33 发表于 2014-4-4 11:06
试了很多次,不行,搜不到!用ipad能连,
这个蓝牙是CC2540芯片的

CC2540我就不熟悉了。。。。

出0入0汤圆

发表于 2014-5-25 15:07:22 | 显示全部楼层
请问,我在NRF51的编程指南中没找到中断操作方面的寄存器,是怎么回事,我想打开定时器中断该怎么操作,求指教啊

出0入0汤圆

发表于 2014-5-25 21:24:40 | 显示全部楼层
你好,请问在TWI与MPU6050教程中,更改了USART引脚后怎么无法使用串口了,改回来以后就可以了,是改的引脚有要求吗,还是其他问题,小弟急求,谢谢

出0入0汤圆

发表于 2014-5-27 16:04:07 | 显示全部楼层
楼上问题解决了,买的是AK2的开发板,引脚应该是0,1,跟串口没有冲突了,地址是0x68
(pin AD0 接地了)

出0入0汤圆

发表于 2014-5-30 09:37:41 | 显示全部楼层
学习中。。

出0入0汤圆

发表于 2014-7-14 16:21:33 | 显示全部楼层
学习下...

出0入0汤圆

发表于 2014-9-28 00:48:24 | 显示全部楼层
lz你好,今天在玩SPI总线,用来驱动德飞莱的一块mini12864,使用模拟的跑了起来。但是自己写一个SPI总线来驱动却怎么都不能驱动。能帮我看下配置有何问题吗?

  1. /* ================================================================================ */
  2. /* ================                       SPI                      ================ */
  3. /* ================================================================================ */

  4. void configure_SPI_init( uint8_t pin_sck,                         //For spi bus --sck
  5.                                                                                 uint8_t pin_mosi,                        //For spi bus        --mosi
  6.                                                                                 uint8_t pin_miso,                        //For spi bus        --miso
  7.                                                                                 NRF_SPI_Type *SPIx,                //Choose SPI0 or SPI1
  8.                                                                                 bool order,                                                //Select significant bit shifted out first
  9.                                                                                                                                                                         //        MSB                                                 0                        |                        LSB                                                        1
  10.                                                                                 bool cpol,                                                //Serial clock (SCK) polarity active
  11.                                                                                                                                                                         //        Active high                 0                        |                        Active low                         1
  12.                                                                                 bool cpha,                                                //Sample on leading edge of clock or trailing edge Serial clock (SCK) phase
  13.                                                                                                                                                                         //        Leading edge                 0                        |                        Trailing edge         1
  14.                                                                                 uint32_t freq,                                //Set SPI master data rate
  15.                                                                                 bool enable,                                        //Enable SPIx
  16.                                                                                 uint8_t pin_select )        //Map select                0b111 map all 0b000 do nothing and return;   bit 0 param[0]...
  17. {
  18. /*-----------------------Select Pin for SPIx----------------------*/
  19.         configure_SPI_pin_map( pin_sck, pin_mosi, pin_miso, SPIx, pin_select);
  20. /*-----------------Configure SPIx Config Register-----------------*/
  21.         SPIx->CONFIG = ( order << 0 ) | ( cpol << 1 ) | ( cpha << 2 );
  22. /*-------------------------SPIx Frequence-------------------------*/
  23.         SPIx->FREQUENCY = freq;
  24. /*---------------------------SPIx Enable--------------------------*/
  25.         SPIx->ENABLE = enable;
  26. /*--------------------SPIx Prepare to Receive---------------------*/
  27.         SPIx->EVENTS_READY &= 0x0;
  28.        
  29.         return;
  30. }

  31. /* ================                       SPI TX                     ================ */
  32. void SPI_tx ( NRF_SPI_Type *SPIx,                //Choose SPI0 or SPI1
  33.                                                         uint8_t ch)                                                //Send char
  34. {
  35. /*-------------------Wait for Last Task complete------------------*/
  36.         while( !SPIx->EVENTS_READY )                //When Ready is Set, The TX Task is Complete
  37.         {
  38.                 HOOK_TIMEOUT();
  39.         }
  40. /*--------------------SPIx Prepare to Receive---------------------*/
  41.         SPIx->EVENTS_READY &= 0x0;
  42. /*----------------------------Send ch-----------------------------*/
  43.         SPIx->TXD = ch;
  44. /*--------------------Wait for TX Task complete-------------------*/
  45.         while( !SPIx->EVENTS_READY )                //When Ready is Set, The TX Task is Complete
  46.         {
  47.                 HOOK_TIMEOUT();
  48.         }
  49. /*--------------------SPIx Prepare to TX---------------------*/
  50.         SPIx->EVENTS_READY &= 0x0;
  51.        
  52. }
复制代码

调用是configure_SPI_init(SCK, SDA, 0, NRF_SPI0, 0, 1, 0, SPI_K125, 1, (1<<0) | (1<<1));//液晶采样:高位在前,上升沿采样,无动作时SCK为高电平.
发送调用        SPI_tx(NRF_SPI0, data1);

有没有大神帮看看有没有配置错误。

出0入0汤圆

发表于 2014-9-28 13:41:37 | 显示全部楼层
支持,顶...

出0入0汤圆

发表于 2014-9-28 13:51:46 | 显示全部楼层
顶一下。。。。。

出0入0汤圆

发表于 2014-10-2 16:54:53 | 显示全部楼层
顶楼主                       

出0入42汤圆

发表于 2014-10-10 09:03:27 | 显示全部楼层
在做方案评估,其中包括TI ,DIALOG,NORDIC.

出0入0汤圆

 楼主| 发表于 2014-10-10 10:02:12 | 显示全部楼层
liyang121316 发表于 2014-10-10 09:03
在做方案评估,其中包括TI ,DIALOG,NORDIC.

DIALOG,什么情况?方案对比可否发一下啊??

出0入42汤圆

发表于 2014-10-10 23:43:21 | 显示全部楼层
低功耗的话DIALOG完胜,开发难度的话TI的基本中文资料包括书已经很多了,后两者以英文原版资料为主。DIALOG,NORDIC.都是MO的核,而TI的是51的核。

出0入0汤圆

发表于 2014-10-19 23:06:05 | 显示全部楼层
Mark一下,东西不错

出0入0汤圆

发表于 2014-10-22 21:58:59 | 显示全部楼层
不知能不能用JLINK调试,如果可以用那些管脚,我只看到 SWDCLK  SWDIO/nReset

出0入0汤圆

 楼主| 发表于 2014-10-23 12:19:25 | 显示全部楼层
黄晨0410 发表于 2014-10-22 21:58
不知能不能用JLINK调试,如果可以用那些管脚,我只看到 SWDCLK  SWDIO/nReset

可以用Jlink,只是支持的是两线制的SWD方式。

出5入4汤圆

发表于 2014-10-30 11:25:42 | 显示全部楼层
请问下在软件上这个NRF51822可以同时保留兼容nrf2401+通讯功能和蓝牙协议通讯功能的吗??

出0入0汤圆

 楼主| 发表于 2014-10-30 20:15:20 | 显示全部楼层
捷胜 发表于 2014-10-30 11:25
请问下在软件上这个NRF51822可以同时保留兼容nrf2401+通讯功能和蓝牙协议通讯功能的吗?? ...

可以的,有个专门的例子。

出0入0汤圆

发表于 2014-11-5 10:01:41 | 显示全部楼层
学习了,真的不错

出0入0汤圆

发表于 2014-11-5 12:09:15 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2014-12-1 15:48:58 | 显示全部楼层
本人已认真阅读楼主之帖子,期待楼主之教程。

出0入0汤圆

发表于 2014-12-27 16:39:03 | 显示全部楼层
支持楼主,等待下文

出0入0汤圆

发表于 2015-2-8 14:58:45 | 显示全部楼层
啧啧啧,拜服楼主

出0入0汤圆

发表于 2015-7-7 09:37:13 | 显示全部楼层
楼主厉害 学习了

出0入0汤圆

发表于 2016-1-7 22:34:11 | 显示全部楼层
留下脚印!!!学习一下!!!

出0入0汤圆

发表于 2019-3-3 14:57:19 | 显示全部楼层
感谢楼主分享!!!!

出0入0汤圆

发表于 2019-3-4 23:35:59 | 显示全部楼层
不錯~~~~~~~~~~~~~~~~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 14:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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