Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
addfcfbc
D
Docs
项目概览
OpenHarmony
/
Docs
12 个月 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
addfcfbc
编写于
8月 23, 2022
作者:
殷
殷秀利
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
格式整改
Signed-off-by:
N
殷秀利
<
1172027432@qq.com
>
上级
5032cd8c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
49 addition
and
49 deletion
+49
-49
zh-cn/device-dev/driver/driver-platform-adc-develop.md
zh-cn/device-dev/driver/driver-platform-adc-develop.md
+49
-49
未找到文件。
zh-cn/device-dev/driver/driver-platform-adc-develop.md
浏览文件 @
addfcfbc
...
...
@@ -17,19 +17,19 @@ AdcMethod定义:
```
struct AdcMethod {
int32_t (*read)(struct AdcDevice *device, uint32_t channel, uint32_t *val);
int32_t (*start)(struct AdcDevice *device);
int32_t (*stop)(struct AdcDevice *device);
int32_t (*read)(struct AdcDevice *device, uint32_t channel, uint32_t *val);
int32_t (*start)(struct AdcDevice *device);
int32_t (*stop)(struct AdcDevice *device);
};
```
**表1**
AdcMethod结构体成员的回调函数功能说明
| 函数成员 | 入参 | 出参 | 返回值 | 功能 |
| 函数成员 | 入参 | 出参 | 返回值 | 功能 |
| -------- | -------- | -------- | -------- | -------- |
| read | device:结构体指针,核心层ADC控制器
<br/>
channel:uint32_t,传入的通道号 | val:uint32_t指针,要传出的信号数据 | HDF_STATUS相关状态 | 读取ADC采样的信号数据 |
| stop | device:结构体指针,核心层ADC控制器 | 无 | HDF_STATUS相关状态 | 关闭ADC设备 |
| start | device:结构体指针,核心层ADC控制器 | 无 | HDF_STATUS相关状态 | 开启ADC设备 |
| read | device:结构体指针,核心层ADC控制器
<br/>
channel:uint32_t,传入的通道号 | val:uint32_t指针,要传出的信号数据 | HDF_STATUS相关状态 | 读取ADC采样的信号数据 |
| stop | device:结构体指针,核心层ADC控制器 | 无 | HDF_STATUS相关状态 | 关闭ADC设备 |
| start | device:结构体指针,核心层ADC控制器 | 无 | HDF_STATUS相关状态 | 开启ADC设备 |
## 开发步骤
...
...
@@ -74,19 +74,19 @@ ADC模块适配必选的三个环节是配置属性文件,实例化驱动入
```
static struct HdfDriverEntry g_hi35xxAdcDriverEntry = {
.moduleVersion = 1,
.Init = Hi35xxAdcInit,
.Release = Hi35xxAdcRelease,
.moduleName = "hi35xx_adc_driver", //【必要且与HCS文件里面的名字匹配】
.moduleVersion = 1,
.Init = Hi35xxAdcInit,
.Release = Hi35xxAdcRelease,
.moduleName = "hi35xx_adc_driver", //【必要且与HCS文件里面的名字匹配】
};
HDF_INIT(g_hi35xxAdcDriverEntry); // 调用HDF_INIT将驱动入口注册到HDF框架中
// 核心层adc_core.c管理器服务的驱动入口
struct HdfDriverEntry g_adcManagerEntry = {
.moduleVersion = 1,
.Init = AdcManagerInit,
.Release = AdcManagerRelease,
.moduleName = "HDF_PLATFORM_ADC_MANAGER",// 这与device_info文件中device0对应
.moduleVersion = 1,
.Init = AdcManagerInit,
.Release = AdcManagerRelease,
.moduleName = "HDF_PLATFORM_ADC_MANAGER",// 这与device_info文件中device0对应
};
HDF_INIT(g_adcManagerEntry);
```
...
...
@@ -98,12 +98,12 @@ ADC模块适配必选的三个环节是配置属性文件,实例化驱动入
统一服务模式的特点是device_info文件中第一个设备节点必须为ADC管理器,其各项参数必须如下设置:
| 成员名 | 值 |
| -------- | -------- |
| moduleName | 固定为HDF_PLATFORM_ADC_MANAGER |
| serviceName | 无 |
| policy | 具体配置为0,不发布服务 |
| deviceMatchAttr | 没有使用,可忽略 |
| 成员名 | 值 |
| -------- | -------- |
| moduleName | 固定为HDF_PLATFORM_ADC_MANAGER |
| serviceName | 无 |
| policy | 具体配置为0,不发布服务 |
| deviceMatchAttr | 没有使用,可忽略 |
从第二个节点开始配置具体ADC控制器信息,此节点并不表示某一路ADC控制器,而是代表一个资源性质设备,用于描述一类ADC控制器的信息。本例只有一个ADC设备,如有多个设备,则需要在device_info文件增加deviceNode信息,以及在adc_config文件中增加对应的器件属性。
...
...
@@ -142,27 +142,27 @@ ADC模块适配必选的三个环节是配置属性文件,实例化驱动入
```
root {
platform {
adc_config_hi35xx {
match_attr = "hisilicon_hi35xx_adc";
template adc_device {
regBasePhy = 0x120e0000;// 寄存器物理基地址
regSize = 0x34; // 寄存器位宽
deviceNum = 0; // 设备号
validChannel = 0x1; // 有效通道
dataWidth = 10; // 信号接收的数据位宽
scanMode = 1; // 扫描模式
delta = 0; // delta参数
deglitch = 0;
glitchSample = 5000;
rate = 20000;
platform {
adc_config_hi35xx {
match_attr = "hisilicon_hi35xx_adc";
template adc_device {
regBasePhy = 0x120e0000;// 寄存器物理基地址
regSize = 0x34; // 寄存器位宽
deviceNum = 0; // 设备号
validChannel = 0x1; // 有效通道
dataWidth = 10; // 信号接收的数据位宽
scanMode = 1; // 扫描模式
delta = 0; // delta参数
deglitch = 0;
glitchSample = 5000;
rate = 20000;
}
device_0 :: adc_device {
deviceNum = 0;
validChannel = 0x2;
}
}
}
device_0 :: adc_device {
deviceNum = 0;
validChannel = 0x2;
}
}
}
}
```
...
...
@@ -172,7 +172,7 @@ ADC模块适配必选的三个环节是配置属性文件,实例化驱动入
从驱动的角度看,自定义结构体是参数和数据的载体,而且adc_config.hcs文件中的数值会被HDF读入并通过DeviceResourceIface来初始化结构体成员,其中一些重要数值也会传递给核心层AdcDevice对象,例如设备号、总线号等。
```
struct Hi35xxAdcDevice {
struct AdcDevice device; //【必要】是核心层控制对象,具体描述见下面。
...
...
@@ -223,14 +223,14 @@ ADC模块适配必选的三个环节是配置属性文件,实例化驱动入
HDF_STATUS相关状态(下表为部分展示,如需使用其他状态,可见//drivers/framework/include/utils/hdf_base.h中HDF_STATUS定义)。
| 状态(值) | 问题描述 |
| 状态(值) | 问题描述 |
| -------- | -------- |
| HDF_ERR_INVALID_OBJECT | 控制器对象非法 |
| HDF_ERR_INVALID_PARAM | 参数非法 |
| HDF_ERR_MALLOC_FAIL | 内存分配失败 |
| HDF_ERR_IO | I/O错误 |
| HDF_SUCCESS | 传输成功 |
| HDF_FAILURE | 传输失败 |
| HDF_ERR_INVALID_OBJECT | 控制器对象非法 |
| HDF_ERR_INVALID_PARAM | 参数非法 |
| HDF_ERR_MALLOC_FAIL | 内存分配失败 |
| HDF_ERR_IO | I/O错误 |
| HDF_SUCCESS | 传输成功 |
| HDF_FAILURE | 传输失败 |
函数说明:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录