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

搜索到我們剛纔修改的廣播名稱,點擊連接,就可以進行數據收發了

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章