自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

系統(tǒng) OpenHarmony
ADC(Analog to Digital Converter),即模擬-數(shù)字轉(zhuǎn)換器,是一種將模擬信號(hào)轉(zhuǎn)換成對(duì)應(yīng)數(shù)字信號(hào)的設(shè)備。

??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

前言

前面一篇文章已經(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

  1. 簡介
    ADC(Analog to Digital Converter),即模擬-數(shù)字轉(zhuǎn)換器,是一種將模擬信號(hào)轉(zhuǎn)換成對(duì)應(yīng)數(shù)字信號(hào)的設(shè)備。
  2. 基本概念
  • 分辨率:即每個(gè)采樣數(shù)據(jù)精度,用多少位數(shù)字來表示采集到一個(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)使用-開源基礎(chǔ)軟件社區(qū)

除電源線和地線之外,ADC只需要1根線與被測量的設(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)使用-開源基礎(chǔ)軟件社區(qū)

LM35溫度傳感器原理及計(jì)算

購買:??LM35線性模擬溫度傳感器??LM35數(shù)據(jù)手冊(cè)

  • LM35測溫范圍是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)使用-開源基礎(chǔ)軟件社區(qū)

#創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開源基礎(chǔ)軟件社區(qū)

  • 溫度值計(jì)算方法:
    開發(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)使用-開源基礎(chǔ)軟件社區(qū)

則信號(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è)備的一般流程如圖。

#創(chuàng)作者激勵(lì)# [FFH]標(biāo)準(zhǔn)系統(tǒng)HDF平臺(tái)驅(qū)動(dòng)(二)——ADC平臺(tái)驅(qū)動(dòng)使用-開源基礎(chǔ)軟件社區(qū)


ADC模塊僅支持輪詢方式讀取數(shù)據(jù)。

平臺(tái)驅(qū)動(dòng)使用

接下來測試一下ADC的HDF驅(qū)動(dòng)框架是否成功,以讀取LM35溫度傳感器為例,測試ADC接口層函數(shù)功能。工程位置為vendor/unionman/unionpi_tiger/sample/hdf。

hdf
├── adc
├── adc.c
└── BUILD.gn
├── BUILD.gn

1、編寫驅(qū)動(dòng)代碼

#include <stdio.h>
#include <stdlib.h>
#include "adc_if.h"
#include "hdf_log.h"
#include "osal_time.h"
/* 設(shè)備號(hào)0,通道號(hào)1 */
#define ADC_DEVICE_NUM 0
#define TEMP_CONST (1.8/(0.01*4096))

int32_t main(int argc, char *argv[])
{
int32_t ret;
uint32_t channelNum=0;
DevHandle adcHandle = NULL;
uint32_t read_val = 0;
double temperature = 0;
//默認(rèn)打開通道0,可以輸入?yún)?shù)使用其他通道
if(argc == 2)
{
channelNum=atoi(argv[1]);
}

/* 打開ADC設(shè)備 */
adcHandle = AdcOpen(ADC_DEVICE_NUM);
if (adcHandle == NULL) {
HDF_LOGE("%s: Open ADC%u fail!", __func__, ADC_DEVICE_NUM);
return -1;
}
/* 讀取ADC數(shù)據(jù) */
ret = AdcRead(adcHandle, channelNum, &read_val);
if (ret != HDF_SUCCESS) {
HDF_LOGE("%s: ADC read fail!:%d", __func__, ret);
AdcClose(adcHandle);
return -1;
}
/* 計(jì)算溫度 */
temperature = ((double)read_val) * TEMP_CONST;

printf("ADC value is %d\r\n",read_val);
printf("Temperature is %.1f°C\n", temperature);

HDF_LOGI("%s: ADC read successful!", __func__);

/* 訪問完畢關(guān)閉ADC設(shè)備 */
AdcClose(adcHandle);
return HDF_SUCCESS;
}

2、編寫B(tài)UILD.gn

import("http://build/ohos.gni")
import("http://drivers/hdf_core/adapter/uhdf2/uhdf.gni")

ohos_executable("adc") {
sources = [ "adc.c" ]

include_dirs = [
"http://drivers/hdf_core/framework/include/platform",
]

deps = [ "http://drivers/hdf_core/adapter/uhdf2/platform:libhdf_platform" ]

external_deps = [
"hdf_core:libhdf_utils",
"hiviewdfx_hilog_native:libhilog",
]

cflags = [
"-Wall",
"-Wextra",
"-Werror",
"-Wno-format",
"-Wno-format-extra-args",
]

install_enable = true
install_images = [ "vendor" ]
module_install_dir = "bin"
part_name = "unionman_products"
}

3、添加進(jìn)編譯

import("http://build/ohos.gni")

group("hdf") {
deps = [
"gpio:gpio",
"led_light:led_light",
"pwm:pwm",
"adc:adc" # 添加這句話
]
}

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)限
hdc_std shell
mount -o rw,remount /
  • 發(fā)送文件
hdc_std file 你的路徑/adc /vendor/adc
  • 運(yùn)行可執(zhí)行文件
./vendor/bin/adc

5、運(yùn)行

連接好傳感器后,進(jìn)入開發(fā)板終端:

./vendor/bin/adc  #默認(rèn)通道0進(jìn)行采樣(ADC_1)
./vendor/bin/adc 1 #使用通道1進(jìn)行采樣(ADC_2)

運(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)使用-開源基礎(chǔ)軟件社區(qū)

文章相關(guān)附件可以點(diǎn)擊下面的原文鏈接前往下載:

 https://ost.51cto.com/resource/2622。

??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

責(zé)任編輯:jianghua 來源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2023-03-20 16:21:26

ADC數(shù)字轉(zhuǎn)換器

2023-03-24 14:47:24

NAPI框架HDF框架

2023-09-14 15:49:42

PWM鴻蒙

2023-09-13 15:33:57

I2C鴻蒙

2021-12-15 10:02:25

鴻蒙HarmonyOS應(yīng)用

2023-09-06 15:27:22

ADC鴻蒙

2023-08-18 14:28:18

UART異步通信

2023-09-06 15:35:14

2022-08-08 19:35:37

HDF驅(qū)動(dòng)開發(fā)鴻蒙

2021-09-10 15:12:04

鴻蒙HarmonyOS應(yīng)用

2017-11-16 14:46:58

Linuxplatform總線驅(qū)動(dòng)設(shè)備

2021-09-07 15:48:28

鴻蒙HarmonyOS應(yīng)用

2017-03-03 08:40:32

2023-03-16 15:18:16

2022-02-16 15:55:21

驅(qū)動(dòng)調(diào)用操作系統(tǒng)鴻蒙

2009-08-21 19:04:11

Windows 7驅(qū)動(dòng)戴爾

2021-11-30 14:52:41

鴻蒙HarmonyOS應(yīng)用

2023-08-07 07:48:47

2022-09-07 15:08:58

操作系統(tǒng)鴻蒙

2011-03-31 13:55:16

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)