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