Nordic目前主推52810的片子,52的片子引腳是兼容的,主要是替換老版本的nrf51系列源
ps:如有錯誤,請指正
目錄
一、芯片資源
- 內核使用的是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
搜索到我們剛纔修改的廣播名稱,點擊連接,就可以進行數據收發了