1. 程式人生 > >Nordic nRF52832 學習筆記(1) 介紹,入門,與準備工作

Nordic nRF52832 學習筆記(1) 介紹,入門,與準備工作

例程 盜版 path pdf 規範 準備 但是 依然 可能

  近來,物聯網已成為大勢所趨,VR與AR正方興未艾,各種手環、遙控、智能家居也在粉墨登場。技術前沿的領航者們已經快馬加鞭,各種意誌與暗示也在上傳下達。物聯網,無線通訊,移動互聯,將成為新的目標與寵兒。最近開的電賽動員會上已經明確而徹底的傳達了“互聯網+”的精神,甚至要用手機做APP來操控雲雲,總之是無線通信已經被擺在了前所未有的位置上。

  現在常用的有規範標準的無限通信協議主要有WiFi(802.11a/b/g/n),藍牙(Bluetooth),ZigBee(802.15.4)等等,他們各有各的優點與不足。

  WiFi的功耗太大,速率高,適合來傳輸數據流(文件),而不是做控制,距離較短。

  藍牙功耗很低(BLE),而且歷史悠久,技術成熟,是手機的標配,距離適中,適合做控制以及小規模的數據傳輸。(BLE是低功耗藍牙的意思,也就是指藍牙4.2)

  ZigBee功耗也很低,且通信距離較遠,傳輸速率很低,是專為自動控制設計的通信協議,但目前技術仍不夠成熟,且組網較為復雜。

  此外還有Z-wave,Thread,ANT等各種無線通信協議,但是不如以上幾種通用程度高。

  6LoWPAN似乎也很有潛力,但是目前才剛剛開始。

  作為無線通信入門,我選擇了從藍牙開始。

  市面上常見的藍牙模塊有很多,TI的CC系列,Dialog的DA系列,以及Nordic的nRF系列都是很優秀的產品。

  Dialog的產品硬件結構較特殊,整體成本低但是開發復雜,CC系列和nRF系列都是資料資源豐富且廣泛使用的產品,我所選擇的產品就是Nordic的nRF52832,支持藍牙4.2(BLE),甚至可以支持5.0。

  這些藍牙模塊多半都是帶有MCU核的,或者說根本就是一個MCU帶有藍牙功能。相對於TI產品,nRF52832的硬件資源要豐厚許多(Cortex-M4F,512K Flash,64K RAM,xxAA版),這也就意味著更大規模的工程成為可能。

  (其實真正的原因是CC系列的引腳定義我沒太看明白....等52832學習完了也可能上手CC2640)

  開發板不想買了,因為已經習慣了用TI的TM4C1294進行開發,所以一般主體工程都是靠1294完成,學習52832主要是想熟練藍牙的配置與使用。於是買了個最小系統板(嚴格來說都不算,只是把所有引腳引出來而已,然後加一段鍍銅天線)。 

  然後就遇到了許多問題。

  之前用1294時是TI官方的EvaluationKit板,自帶仿真模塊(Stellaris ICDI),只要驅動一裝就能刷金程序然後Debug調試。因此也從來沒有考慮過什麽接口仿真的問題。現在對著52832芯片手冊上的管腳圖,只找到了兩個SWDIO和SWDCLK引腳,對於具體如何把程序燒寫進去依然一無所知。回想起其他用32開發板的情況,似乎需要一個名為Jlink的東東?快速上淘寶翻了下52832開發板的情況,確實如此,Jlink仿真器是必須的,開發板上已經預留好了20腳的JTAG接口,直接將仿真器連在開發板與PC中間,再輔以相應的驅動程序就能實現下載與仿真。但是我買的產品上可沒有JTAG接口,而且SWD和JTAG似乎也不太一樣的吧?

  一頓搜索,大概對JTAG,SWD,JLink都有了一番了解。JTAG和SWD確實是不一樣的協議,Jlink本身默認JTAG,但是從JLinkV6以後,Jlink仿真器也開始支持SWD,到了V8以後,對SWD的支持已經相當不錯了。於是又買了塊Jlink仿真器,說是給nrf5系列專用的V8,一個仿真器比兩個我買的52832板還貴,拿到手以後,做工讓我瞬間就斷定是盜版貨了。。還好上面似乎有標識JTAG+SWD...在52832的數據手冊上,基本已經確定了這款芯片只支持SWD了,希望能用吧(笑)。大概就是把SWD的引腳接到仿真器的特定引腳上吧。

  然後是軟件環節。習慣了TI的datasheet和SDK,Nordic的真的是....體驗感差好多呀。。采用的IDE是MDK Keil,然而官網提供的nRF_DeviceFamilyPack最新版和SDK最新版例程裏的pack版本居然不一樣(pack已經更新到8.14.1了,而SDK裏用的是8.12.0,SDK用的也是最新版)。好吧或許SDK那邊還沒更新,但是老版的pack下載在哪裏呢?只能手動添加Device和CMSIS,然後是令人煩躁的include paths。SDK的文件結構相當出色,各種包各種drivers各種libraries相當完善有條理,但是初始化必須的一些驅動和庫文件被包含在了各個文件夾,相比之下,TI的driverlib簡直太方便了。至於TI的pdf函數庫對Nordic的html的無比的優越性。。用了都知道。

  終於到了編譯環節,把官方的例程拿出來編譯,果然一大堆錯誤,定義變量語句不在函數開頭之類的問題比比皆是,還有一大堆定義結構體順便初始化的奇怪格式也是層出不窮,難道我的Keil MDK 5.20已經很老了嗎~

  在手動改完官方庫的所有錯誤之後,把自己的初始化空工程拿出來終於編譯通過..比TI的果然是慢了好多好多。。

  在具體的操作中借鑒了新浪博客Elson的很多知識,也歡迎去看看

  NRF52832開發日誌

  http://blog.sina.com.cn/s/articlelist_2684296980_1_1.html

  鑒於板子還沒到,只能先到這裏啦

Nordic nRF52832 學習筆記(1) 介紹,入門,與準備工作