一起学nRF51xx 18 - 蓝牙协议栈烧录
?
前言
在講協議棧前我們先簡要介紹一下NORDIC公司的協議棧特點:
1 協議棧和應用程序代碼沒有鏈接時間依存性,并可獨立編譯和更新
2 堆棧受運行時保護,應用程序訪問受限或被阻止
3 堆棧為 100% 異步并由事件驅動,并向應用程序層提供線程安全管理程序調用 (SVC) 的應用程序接口
4 沒有專用的應用程序框架或 RTOS 依存性
?
nordic公司針對nrf51系列提供了s110,s120,s130,s210,s310等不同類型的SDK協議棧。
S110 SoftDevice
The S110 SoftDevice is a?Bluetooth??Low Energy?(BLE) peripheral protocol stack solution. It integrates a low energy controller and host, and provides a full and flexible Application Programming Interface (API) for building?Bluetooth Low Energy?System on Chip (SoC) solutions.
S110軟設備是Bluetooth?低功耗(BLE)外圍協議棧解決方案。它集成了一個低能耗控制器和主機,為構建藍牙芯片上低能耗系統(SoC)解決方案提供了一個完整、靈活的應用程序編程接口(API)。
S120 SoftDevice
The S120 SoftDevice is a?Bluetooth??Low Energy?(BLE) combined central and peripheral protocol stack solution, which means that the SoftDevice can be initialized to run either as a central protocol stack or as a peripheral protocol stack. When initialized as a Central, it supports up to eight simultaneous central role connections and an Observer. When initialized as a Peripheral, is supports a peripheral connection and a concurrent Broadcaster. The SoftDevice integrates a low energy controller and host, and provides a full and flexible Application Programming Interface (API) for building?Bluetooth Low Energy?System on Chip (SoC) solutions.
S120軟設備是藍牙?低功耗(BLE)中心和外圍協議棧的組合解決方案,這意味著可以初始化軟設備,使其既可以作為中心協議棧運行,也可以作為外圍協議棧運行。初始化為中心時,它最多支持8個同時的中心角色連接和一個觀察者。當初始化為外設時,它支持外設連接和并發廣播器。該軟設備集成了一個低能耗控制器和主機,為構建藍牙芯片上低能耗系統(SoC)解決方案提供了一個完整、靈活的應用程序編程接口(API)。
S130 SoftDevice
The S130 SoftDevice is a?Bluetooth??Low Energy?Peripheral protocol stack solution. The S130 SoftDevice integrates a?Bluetooth Low Energy?Controller and Host, and provides a full and flexible API for building?Bluetooth Low Energy?nRF51 System on Chip solutions.
S130軟設備是藍牙?低能耗外圍協議棧解決方案。S130軟設備集成了藍牙低能耗控制器和主機,為構建基于芯片的藍牙低能耗nRF51系統提供了完整、靈活的API。
S210 SoftDevice
The S210 SoftDevice is an ANT? protocol stack solution that provides a full and flexible Application Programming Interface (API) for building ANT System on Chip (SoC) solutions for the nRF51422 chip. The S210 SoftDevice simplifies combining the ANT protocol stack and an application on the same CPU.
S210 SoftDevice是一個ANT?協議棧解決方案,它為構建nRF51422芯片上的ANT系統(SoC)解決方案提供了完整和靈活的應用程序編程接口(API)。S210軟設備簡化了將ANT協議棧和同一CPU上的應用程序組合在一起的過程。
S310 SoftDevice
The S310 SoftDevice is a combined ANT? and?Bluetooth??Low Energy?(BLE) peripheral protocol stack solution. It provides a full and flexible Application Programming Interface (API) for building concurrent ANT and BLE System on Chip (SoC) solutions. The S310 SoftDevice simplifies combining an ANT or BLE protocol stack and an application on the same CPU, therefore eliminating the need for an added device to support concurrent multiprotocol.
S310軟設備是一個結合了ANT?和藍牙?低能耗(BLE)外圍協議棧的解決方案。它提供了一個完整和靈活的應用程序編程接口(API),用于構建并行的ANT和BLE系統芯片(SoC)解決方案。S310軟件設備簡化了將ANT或BLE協議棧與同一CPU上的應用程序組合在一起的過程,因此無需添加支持并發多協議的設備。
?
?
協議堆棧與APP在芯片中的FLASH與RAM的空間分布如下圖,不同的協議堆棧對具體實現的大小有所不同:
使用S110/S130對芯片存儲空間需求:
?
協議棧事件處理流程
協議棧通過軟中斷SWI2將底層事件(像是收到藍牙數據,鏈接成功,收到廣播之類的)上拋給app,app再捕獲自己感興趣的事件做相應的處理(比如收到鏈接成功事件后,記錄連接句柄),至于怎么捕獲,很簡單就是switchcase自己感興趣的事件。
?
應用程序使用API訪問協議棧資源(基于SVC)
應用程序通過使用_SVC(number)指令觸發異常進入協議棧SVC異常處理函數,并根據number調用協議棧中預先實現的底層協議處理函數。
?
Events&Callbacks,協議棧到應用程序的事件通知
協議棧收到底層數據做相應處理后,通過NVIC設置自定義的”SWI”中斷為Pending。之后處理器進入協議棧自定義的”SWI”中斷處理函數,將evt_id放入事件隊列后再執行應用程序中的“SWI中斷處理函數”。程序跳轉到應用程序處理函數后再取出依次取出事件并交由事件派發程序處理。事件派發程序將事件會傳給所有相關的服務和事件處理任務。
?
本例程將介紹NRF51822燒錄S130協議棧,并在燒錄S130協議棧基礎修改《一起學nRF51xx 17 -? lpcomp》的程序,使之在燒錄S130協議棧的芯片上可以正常運行。
?
?
示例詳解
基于硬件平臺:nrf51822ek_tm開發板。
本示例所用的最小系統板原理圖:
在正式開啟本節內容前,先給大家介紹如何用jlink結合jflash工具給來給NRF51822燒錄S130協議棧或帶S130協議棧的的完整程序:
?
?
步驟一:安裝J_FLASH-V612.exe 安裝包(見附件,可直接網上下載)。
安裝過程中,一直點NEXT,直到安裝完成即可。
?
步驟二:打開軟件。
在桌面開始菜單欄中。找到剛剛安裝的程序文件,單擊 j-Flash。
?
出現如下界面,選擇Create a new Project后點Start J-Flash:
在彈出的小對話框中按下圖選擇目標芯片型號:
然后OK,
再OK出現如下界面:
執行file->open data file 命令,打開附件中對應的s130_nrf51_2.0.0_softdevice.hex(s130協議棧)或experimental_ble_app_blinky_s130_pca10028.hex(s130協議棧加app程序),這里以后者為例:
執行Target->Connect命令連接開發板:
然后執行快捷鍵”F7”燒錄程序!
燒錄成功后執行快捷鍵”F9”啟動程序!
這個時后打開手機可藍牙,查找設備,可以看到出現Nordic_Blinky設備,
?
編譯后仿真程序,可以看到程序順利跳遠到mian函數上,同時對應的地址為0X0001B4A8,說明程序成功從協議棧跳轉到APP中。
?
????? 把程序編譯,將P01引腳與GND接觸然后松開,接觸松開….,可以看到串口助手中打印了以下輸出內容,可以知道,跳轉后的程序功能正常:
關于nrf51xx及flash的更詳細介紹可以參看《nRF51822_PS_v3.3.pdf》或https://infocenter.nordicsemi.com/index.jsp。下一講我們將一起學習基于nordic的s130協議棧API接口編程。
?
OK,本期實驗完成!下期見!同時如果大家有什么疑問或是有想了解的其它內容,也歡迎大家留言!!最后喜歡這個公眾號的同學們記得加關注了,會有不定期技術干貨推出!!
文中源碼資料下載,在公眾號里給十三發消息:
下載|一起學nRF51xx 18
?
關注十三公眾號
?
總結
以上是生活随笔為你收集整理的一起学nRF51xx 18 - 蓝牙协议栈烧录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一起学nRF51xx 17 - lpc
- 下一篇: 一起学nRF51xx 19 - 移植S