LE5010蓝牙芯片(凌思微)开发总结
一、問題描述:項目中有一個溫度傳感器NST1001是通過計數脈沖來獲取溫度原始值的,每個?周期50ms,脈沖周期最大35ms,空閑時間15ms,脈沖腳配置為外部中,因為頻繁進入外部中斷,導致和藍牙廣播中斷沖突,造成程序死機。
解決思路如下:
????????1. 造成死機的原因是藍牙和外部中斷異常,可以把藍牙和外部中斷分開執行;
????????2. 藍牙廣播間隔20ms~10.24s,可以適當拉大藍牙廣播間隔;
????????3. 外部中斷計數脈沖結束,關閉NST1001電源和外部中斷,再進行藍牙廣播更新數據;
????????4. 所有用到中斷的模塊,統一采集完數據之后,進行廣播更新,然后再采集。
二、關于LE5010
? ? ? ? 該芯片內核是采用cortex-m0架構,用藍牙時添加藍牙部分代碼相當于:MCU+藍牙(外設),不用藍牙時就是一個普通的MCU,flash為512KB,SRAM為64KB。
? ? ? ? 藍牙項目總結:
????????1)? 裸機代碼開發不能用while(1),功能模塊添加到定時器回調函數中,函數中僅調用API和計時,其他的封裝到外部,這樣代碼邏輯看起來更加整潔;
? ? ? ? 2) 定時器、ADC、串口等外設,基本都是調用回調函數進行操作;
? ? ? ? 3)? MCU的ADC特性,官方手冊沒有說明,測試發現采樣電阻為200K,采集電壓誤差0.02,因為功耗為21uA,所以如果對功耗敏感,就不太適用于低功耗電路。可行的方案是:采樣電路設計為2/3分壓(因為電池電壓4.2V,ADC僅采集到3.3V),采樣電阻可以用200K(ADC采集更穩定,因為阻抗越大,變化越不敏感,更適用于采集電池電壓計算電量值),在電路2/3分壓處,一端接入ADC輸入端,一端接I/O口,采集時拉低電平,不采集時拉高以降低功耗,另一端接的是Vbat;
? ? ? ? ADC輸入大阻抗1M、2M,解決采集數據不穩定方法如下:
????????ADC采集電壓不穩定,每次休眠后復位采集的數據通過測試發現,只有間隔60ms采集一次,數據才能在第五次采集時穩定下來,對于低功耗設備來說不可取,因為采樣電阻并聯了一個100nf的電容,因為阻抗太大,導致電容充電時間太長,所以,復位之后開始時ADC采集電壓會慢慢升高到穩定階段,把并聯電容去掉,ADC初始化驅動采用經過buf運放,ADC采集電壓一開始采集上來就很穩定了。
? ? ? ? 4) 查看藍牙廣播數據是否正常,可以通過nRF Connect進行實時監視;
? ? ? ? 5) 藍牙協議格式:len+type+data(len=type+data)。
????????
總結
以上是生活随笔為你收集整理的LE5010蓝牙芯片(凌思微)开发总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQ实现鼠标移入移出事件
- 下一篇: MFC 简单的MD5计算器