#创作者激励# [FFH]标准系统HDF平台驱动(二)——ADC平台驱动使用 原创 精华
【本文正在参加2023年第一期优质创作者激励计划】
标准系统HDF平台驱动(二)——ADC平台驱动使用
个人简介:
深圳技术大学FSR实验室
大三学生,正于九联科技
实习,共同学习研究南向开发
知识。
博客主页:https://ost.51cto.com/person/posts/15624680
Table of Contents
前言
前面一篇文章已经实现了UnionPi_Tiger的ADC驱动的HDF框架接入(在最新的master版本上已经进行了适配,OpenHarmony-3.2-Beta5上目前还没实现),现在已经可以正常调用HDF提供的ADC统一驱动接口进行应用开发。现在就使用这些接口来读取LM35温度传感器数据。
环境
- OpenHarmony-3.2-Beta5
- 九联UnionPi-Tiger开发板
- USB_Burning_Tool烧录工具
- LM35线性模拟温度传感器
参考
平台驱动使用——ADC
标准系统HDF平台驱动(一)——ADC驱动适配
前置知识
ADC
- 简介
ADC(Analog to Digital Converter),即模拟-数字转换器,是一种将模拟信号转换成对应数字信号的设备。 - 基本概念
- 分辨率:即每个采样数据精度,用多少位数字来表示采集到一个模拟量,分辨率越高就能采集越精确的数据。常用分辨率:8bit、10bit、12bit。
- 精度:即模拟量转换成数字量的精确程度
- 采样速率:即每秒对ADC采样的次数
ADC设备硬件连接
除电源线和地线之外,ADC只需要1根线与被测量的设备进行连接,例如对于UnionPi_Tiger与LM35线性模拟温度传感器如下:
- 红线 -- 3.3V
- 黑线 -- GND
- 蓝线 -- ADC_1/ADC_2
LM35温度传感器原理及计算
-
LM35测温范围是0℃到100℃,灵敏度为10mV/℃,输出电压与温度成正比。
-
输入输出以及电压和温度的关系如下
- 温度值计算方法:
开发板分辨率为12位
,即,查看原理图可知ADC的信号基准电压为1.8V
。
则信号电压值计算为:
每10mv为1°C
,则温度值为:
ADC平台接口介绍
ADC接口定义了完成AD转换的通用方法集合,包括:
- ADC设备管理:打开或关闭ADC设备。
- ADC读取转换结果:读取AD转换结果。
具体API详见//drivers/hdf_core/framework/include/platform/adc_if.h。
接口名 | 接口描述 | 参数 | 返回值 |
---|---|---|---|
DevHandle AdcOpen(uint32_t number) | 打开ADC设备 | number:ADC设备号 | DevHandle:ADC设备句柄 |
void AdcClose(DevHandle handle) | 关闭ADC设备 | handle:ADC设备句柄 | 无 |
int32_t AdcRead(DevHandle handle, uint32_t channel, uint32_t *val) | 读取AD转换结果值 | handle:ADC设备句柄 channel:通道号 *val:采样值 |
0:读取成功 负数:读取失败 |
使用流程
使用ADC设备的一般流程如图。
ADC模块仅支持轮询方式读取数据。
平台驱动使用
接下来测试一下ADC的HDF驱动框架是否成功,以读取LM35温度传感器为例,测试ADC接口层函数功能。工程位置为vendor/unionman/unionpi_tiger/sample/hdf
。
1. 编写驱动代码
2. 编写BUILD.gn
3. 添加进编译
4. 编译打包烧录
具体步骤参考:https://gitee.com/openharmony/device_board_unionman/blob/master/unionpi_tiger/README_zh.md#编译与调试
如果开发板原本烧录的系统与编译的系统一致,也可以直接通过hdc_std工具直接将生成的可执行程序发送到开发板,编译生成的可执行程序位于out/unionpi_tiger/packages/phone/vendor/bin。
- 打开cmd窗口,挂载,打开权限
- 发送文件
- 运行可执行文件
- 运行
连接好传感器后,进入开发板终端:
运行结果
编写驱动需要掌握的知识点真不少
你好,请问您做过用开发应用程序,调用这个接口吗
可以看我下面一篇文章呦