Nordic52810入门篇 - 资源介绍与第一个蓝牙实例(IAR与KEIL)

Nordic目前主推52810的片子,52的片子引脚是兼容的,主要是替换老版本的nrf51系列源  

ps:如有错误,请指正

目录

 一、芯片资源

 二、下载SDK

三、协议栈选择

四、硬件主板

五、SDK目录

六、工程实例

1. 工程打开

2. 协议栈烧录

3. 例程讲解


 一、芯片资源

  • 内核使用的是ARM的Cortex-M4方案,主频64MHZ
  • 192kB的片内Flash与24kB的Ram;(这里吐槽一下,以前的nRF51822有256kB,这里阉割了64kB)  
  • 8个可配置通道的12位ADC
  • 1路UART,2个实时时钟(RTC)
  • SPI、IIC支持主从模式
  • 3个32位定时器
  • 32个通用IO口

 二、下载SDK

使用的是SDK15.2版本,点击下载地址(很吃惊发现下载居然不能设成免积分了)

SDK免安装,开箱即用

三、协议栈选择

考虑到52810的片外资源,结合应用,在下选择了S112从机协议栈,固定占用空间为100K,留给自己做应用的话还有92K

四、硬件主板

调试为了方便起见,使用的是Nordic提供的Demo板,连接到电脑的USB就可以直接进行调试

五、SDK目录

Nordic提供的SDK非常全,里面包含了驱动和各种实例,开发上手很快

components 主要存放Nordic开发的SDK源代码
config 里面存放了sdk_config.h头文件,配置noridc相关的宏定义
documentation 存放nordic提供的h5,里面有sdk与api文档以及移植说明
examples各式各样的应用例程,可以在实例上直接进行程序更改
external / external_tools第三方库或者源代码
integration 包含一些外设的底层驱动(SPI/TWI/UART....)
modules 功能模块驱动

nRF5x_MDK_8_16_0_

IAR_NordicLicense.msi

使用IAR开发的license (IAR8无需安装)

nRF5x_MDK_8_16_0_

Keil4_NordicLicense.msi

使用KEIL4开发的工具链(keil5可以不安装)

 

 

 

 

 

 

 

 

 

 

六、工程实例

1. 工程打开

楼主使用的是IAR8.2和Keil5(MDK),开箱即可编译通过,我这里选择uart的实例,索引到工程目录

KEIL通过ble_app_uart_pca10040e_s112.uvprojx打开工程(在下用的是keil5)

examples\ble_peripheral\ble_app_uart\pca10040e\s112\arm5_no_packs

IAR可通过如下目录中的ble_app_uart.eww打开工程(在下用的是IAR8.2)

examples\ble_peripheral\ble_app_uart

UART这个例程比较适合像楼主一样的新手进行学习,KEIL打开工程后,点击Options for Target,

可以看到应用的ROM起始地址为0x19000(100K),size为0x17000(92K);

RAM也是一样(Cortex的RAM起始地址为0x20000000),协议栈占用了0x2500(9K+),留给应用为14K多一点

当然如果应用程序超了那么KEIL编译是会报错的

IAR也是一样,如下图(选择10040_S112)

2. 协议栈烧录

如果要跑蓝牙的应用,那必须烧录蓝牙协议栈,烧录协议栈有两个方法

a)通过KEIL烧录

如下图进行,目标选择协议栈hex,点击Download即可下载协议栈

b)  通过nRFgo studio烧录(这个要进行安装)

3. 例程讲解

mian文件的第85行可进行蓝牙广播NAME的修改,第90行可修改广播间隔

贴上mian函数

int main(void)
{
    bool erase_bonds;

    // Initialize.
    uart_init();//串口初始化
    log_init();//Log打印
    timers_init();//定时器初始化
    buttons_leds_init(&erase_bonds);//按键led初始化
    power_management_init();//电源管理
/*
* 下面是对蓝牙的初始化,修改比较多的是在services_init进行服务的增加或删除
*/
    ble_stack_init();//协议栈初始化
    gap_params_init();
    gatt_init();
    services_init();
    advertising_init();//广播初始化
    conn_params_init();

    // Start execution.
    printf("\r\nUART started.\r\n");
    NRF_LOG_INFO("Debug logging for UART over RTT started.");
    advertising_start();//广播开启后,蓝牙内部协议栈的调度就开始跑起来了

    // Enter main loop.
    for (;;)
    {
        idle_state_handle();
    }
}

按下F7进行编译通过后,按键键盘F8程序烧录

电脑打开串口软件,手机下载安装nRF Connect

搜索到我们刚才修改的广播名称,点击连接,就可以进行数据收发了

 

 

 

 

 

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值