Nordic藍(lán)牙芯片nrf52832的架構(gòu)和開(kāi)發(fā)
相比TI的CC254X、DIALOG的DA1458X,nordic推出的nrf51822和nrf52832在架構(gòu)和開(kāi)發(fā)商都有自己獨(dú)特的地方。這幾顆產(chǎn)品都是藍(lán)牙低功耗芯片。DA1458X使用OTP硬件架構(gòu),功耗低,成本也低,但軟件開(kāi)發(fā)難度是個(gè)門(mén)檻,大團(tuán)隊(duì)才能做到量產(chǎn),當(dāng)然掌握了也是競(jìng)爭(zhēng)力(想學(xué)習(xí)開(kāi)發(fā)就參考博主之前的分享吧)。如果對(duì)三種架構(gòu)都很熟悉,然后從開(kāi)發(fā)的角度做個(gè)比較,相信對(duì)nrf52832的架構(gòu)和開(kāi)發(fā)會(huì)更新青睞。
1. nrf52832有64K的ram和512K的flash,開(kāi)發(fā)人員應(yīng)該很喜歡吧。
2. nrf52832是cortex M4,官方SDK使用KEIL 5 on ARM,也很熟悉。當(dāng)然功耗也低,SDK也有低功耗的軟件架構(gòu),容易掌握。
3. nordic SDK分成softdevice、bootloader和application三個(gè)部分。Softdevice以bin提供,主要是操作系統(tǒng)和BLE協(xié)議和RF操作相關(guān)的程序,這部分不對(duì)外公開(kāi),熟悉接口即可。TI的SDK對(duì)外公開(kāi)操作系統(tǒng)OSAL,開(kāi)發(fā)人員更能全局掌控,DA1458X隱藏固化了操作系統(tǒng)和BLE協(xié)議,但是卻公開(kāi)了一些RF硬件寄存器的操作細(xì)節(jié),而這個(gè)寄存器的SPEC都找不到,對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),看到自己搞不透也不需要關(guān)心的細(xì)節(jié)并不好。
不過(guò)nordic 的softdevice有幾個(gè)版本,目前最新3.0,每個(gè)版本支持不同的SDK,目前最新13.0。版本多了,然后分別發(fā)布會(huì)讓新手迷惑。
4. 由于memory足夠大,所以nordicSDK在DATA RAM和CODE上對(duì)softdevice、bootloader和application三者的memory layout安排也很清晰。
5. DFU設(shè)備固件升級(jí)、OTA固件空中升級(jí)是BLE架構(gòu)必備的模塊。TI和DIALOG都是在應(yīng)用層集成DFU進(jìn)行固件空中升級(jí),在bootloader負(fù)責(zé)版本校驗(yàn)和加載,因此應(yīng)用和bootloader是共同負(fù)責(zé)DFU,需要協(xié)調(diào)配合。但nordic只讓bootloader負(fù)責(zé)DFU空中升級(jí),并做好校驗(yàn)和加載,工具鏈也簡(jiǎn)單。應(yīng)用只需要負(fù)責(zé)一件事,就是接收到DFU命令就reset到bootloader即可,其不需要關(guān)心DFU的過(guò)程。這也是本人喜歡nordic架構(gòu)的原因,當(dāng)然,這是要損失一部分代碼空間的,從成本角度不劃算,但是nordic提供的flash也足夠大了。
6. 增加一個(gè)應(yīng)用和profile的架構(gòu)比較簡(jiǎn)單,跟ti CC254X差不多,dialog要難一些。
7. 友好支持集成模塊,如GPIO、I2C,uart,flash等,接口容易掌握,但是實(shí)現(xiàn)細(xì)節(jié)要弄懂也沒(méi)那么容易,哈哈。
8. SDK的應(yīng)用分層做得比較好,硬件模塊有對(duì)應(yīng)的硬件驅(qū)動(dòng)driver,SDK還會(huì)進(jìn)行在驅(qū)動(dòng)基礎(chǔ)上進(jìn)行再次封裝,以庫(kù)library的形式供應(yīng)用使用,降低開(kāi)發(fā)難度。如nrf_drv_gpiote是驅(qū)動(dòng),上層還會(huì)分別封裝提供app_button按鍵接口、電平中斷接口app_gpiote等。
9. SDK提供的GPIOTE模塊是一個(gè)按鍵消息接口,比較有特色。其利用button集成消息模塊,支持將消息安裝到對(duì)應(yīng)的某個(gè)按鍵上,也就是在廣播狀態(tài)時(shí)按這個(gè)鍵發(fā)出的消息和連接時(shí)發(fā)出的消息是不一樣的,這樣易于應(yīng)用處理,架構(gòu)也比較清晰。但是要花時(shí)間才能理解這個(gè)模塊。
10. SDK的例程非常豐富。
11.SDK的開(kāi)發(fā)文檔支持也非常詳盡,入門(mén)到深入都相對(duì)容易。http://infocenter.nordicsemi.com/。入門(mén)可以去看中文開(kāi)發(fā)文檔,深入就要多看看英文說(shuō)明。
編輯:admin 最后修改時(shí)間:2019-09-03