[FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)—ADC平臺(tái)驅(qū)動(dòng)使用

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??
??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??
前言
前面一篇文章已經(jīng)實(shí)現(xiàn)了UnionPi_Tiger的ADC驅(qū)動(dòng)的HDF框架接入(在最新的master版本上已經(jīng)進(jìn)行了適配,OpenHarmony-3.2-Beta5上目前還沒(méi)實(shí)現(xiàn)),現(xiàn)在已經(jīng)可以正常調(diào)用HDF提供的ADC統(tǒng)一驅(qū)動(dòng)接口進(jìn)行應(yīng)用開(kāi)發(fā)。現(xiàn)在就使用這些接口來(lái)讀取LM35溫度傳感器數(shù)據(jù)。
環(huán)境
- OpenHarmony-3.2-Beta5
- 九聯(lián)UnionPi-Tiger開(kāi)發(fā)板
- USB_Burning_Tool燒錄工具
- LM35線性模擬溫度傳感器
參考
??平臺(tái)驅(qū)動(dòng)使用——ADC????標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(一)——ADC驅(qū)動(dòng)適配??
前置知識(shí)
ADC
- 簡(jiǎn)介
ADC(Analog to Digital Converter),即模擬-數(shù)字轉(zhuǎn)換器,是一種將模擬信號(hào)轉(zhuǎn)換成對(duì)應(yīng)數(shù)字信號(hào)的設(shè)備。 - 基本概念
- 分辨率:即每個(gè)采樣數(shù)據(jù)精度,用多少位數(shù)字來(lái)表示采集到一個(gè)模擬量,分辨率越高就能采集越精確的數(shù)據(jù)。常用分辨率:8bit、10bit、12bit。
- 精度:即模擬量轉(zhuǎn)換成數(shù)字量的精確程度
- 采樣速率:即每秒對(duì)ADC采樣的次數(shù)
ADC設(shè)備硬件連接
![#創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū) #創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū)](https://dl-harmonyos.51cto.com/images/202303/15dc3b132434a836f25431255807e67f7d588d.png?x-oss-process=image/resize,w_405,h_247)
除電源線和地線之外,ADC只需要1根線與被測(cè)量的設(shè)備進(jìn)行連接,例如對(duì)于UnionPi_Tiger與LM35線性模擬溫度傳感器如下:
- 紅線 -- 3.3V
- 黑線 -- GND
- 藍(lán)線 -- ADC_1/ADC_2
![#創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū) #創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū)](https://dl-harmonyos.51cto.com/images/202303/47c8f1e556c848791f92066b9b89e2e5c15549.png?x-oss-process=image/resize,w_388,h_518)
LM35溫度傳感器原理及計(jì)算
購(gòu)買(mǎi):??LM35線性模擬溫度傳感器??LM35數(shù)據(jù)手冊(cè)
- LM35測(cè)溫范圍是0℃到100℃,靈敏度為10mV/℃,輸出電壓與溫度成正比。
- 輸入輸出以及電壓和溫度的關(guān)系如下。
![#創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū) #創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū)](https://dl-harmonyos.51cto.com/images/202303/f5bc171158a53cb8b6e25305f60b0a1d89a455.png?x-oss-process=image/resize,w_304,h_210)
![#創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū) #創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū)](https://dl-harmonyos.51cto.com/images/202303/66d1f730822151a0917341e84737e433daec11.png?x-oss-process=image/resize,w_642,h_487)
- 溫度值計(jì)算方法:
開(kāi)發(fā)板分辨率為12位,即??,查看原理圖可知ADC的信號(hào)基準(zhǔn)電壓為1.8V。
![#創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū) #創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū)](https://dl-harmonyos.51cto.com/images/202303/b29ffe6351493268cd503007f93b087b7e77f4.png?x-oss-process=image/resize,w_820,h_126)
則信號(hào)電壓值計(jì)算為:
每10mv為1°C,則溫度值為:
ADC平臺(tái)接口介紹
ADC接口定義了完成AD轉(zhuǎn)換的通用方法集合,包括:
- ADC設(shè)備管理:打開(kāi)或關(guān)閉ADC設(shè)備。
- ADC讀取轉(zhuǎn)換結(jié)果:讀取AD轉(zhuǎn)換結(jié)果。
具體API詳見(jiàn)//drivers/hdf_core/framework/include/platform/adc_if.h。
接口名 | 接口描述 | 參數(shù) | 返回值 |
DevHandle AdcOpen(uint32_t number) | 打開(kāi)ADC設(shè)備 | number:ADC設(shè)備號(hào) | DevHandle:ADC設(shè)備句柄 |
void AdcClose(DevHandle handle) | 關(guān)閉ADC設(shè)備 | handle:ADC設(shè)備句柄 | 無(wú) |
int32_t AdcRead(DevHandle handle, uint32_t channel, uint32_t *val) | 讀取AD轉(zhuǎn)換結(jié)果值 | handle:ADC設(shè)備句柄 channel:通道號(hào) *val:采樣值 | 0:讀取成功 負(fù)數(shù):讀取失敗 |
使用流程
使用ADC設(shè)備的一般流程如圖。
![#創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū) #創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū)](https://dl-harmonyos.51cto.com/images/202303/25f8c46332892ea3228134689b38ae6bde12ad.png?x-oss-process=image/resize,w_194,h_238)
ADC模塊僅支持輪詢(xún)方式讀取數(shù)據(jù)。
平臺(tái)驅(qū)動(dòng)使用
接下來(lái)測(cè)試一下ADC的HDF驅(qū)動(dòng)框架是否成功,以讀取LM35溫度傳感器為例,測(cè)試ADC接口層函數(shù)功能。工程位置為vendor/unionman/unionpi_tiger/sample/hdf。
1、編寫(xiě)驅(qū)動(dòng)代碼
2、編寫(xiě)B(tài)UILD.gn
3、添加進(jìn)編譯
4、編譯打包燒錄
具體步驟參考:https://gitee.com/openharmony/device_board_unionman/blob/master/unionpi_tiger/README_zh.md#編譯與調(diào)試。
如果開(kāi)發(fā)板原本燒錄的系統(tǒng)與編譯的系統(tǒng)一致,也可以直接通過(guò)hdc_std工具直接將生成的可執(zhí)行程序發(fā)送到開(kāi)發(fā)板,編譯生成的可執(zhí)行程序位于out/unionpi_tiger/packages/phone/vendor/bin。
- 打開(kāi)cmd窗口,掛載,打開(kāi)權(quán)限
- 發(fā)送文件
- 運(yùn)行可執(zhí)行文件
5、運(yùn)行
連接好傳感器后,進(jìn)入開(kāi)發(fā)板終端:
運(yùn)行結(jié)果:
![#創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū) #創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開(kāi)源基礎(chǔ)軟件社區(qū)](https://dl-harmonyos.51cto.com/images/202303/c51f24d86ed9abb4e67559c2ab4cfb1c7101fa.png?x-oss-process=image/resize,w_332,h_76)
文章相關(guān)附件可以點(diǎn)擊下面的原文鏈接前往下載:
https://ost.51cto.com/resource/2622。
??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??































