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