HCIA-HarmonyOS设备开发认证V2.0-IOT硬件子系统-GPIO

目录

轻量系统设备通常需要进行外设控制,例如温湿度数据的采集、灯开关的控制,因此在完成内核开发后,需要进行设备驱动的开发。

主要Hi3861芯片介绍如何运用 IoT 硬件子系统进行轻量系统设备的驱动开发。

在轻量系统的联接模组中,智能家居远程控制能力的实现,最终是通过 IoT 硬件子系统部件发送指令到特定的家居设备。

Hi3861芯片提供设备操作接口有:GPIO、PWM、UART、I2C、SPI、ADC、WATCHDOG、FLASH、LOWPOWER、RESET 等。

一、GPIO 概述

GPIO(General-purpose input/output)即通用型输入输出,用于控制芯片引脚的数字输入和数字输出。通常,GPIO 控制器通过分组的方式管理所有 GPIO 管脚,每组 GPIO 有一个或多个寄存器与之关联,通过读写寄存器完成对 GPIO 管脚的操作。

GPIO 是芯片上一根能完成多种功能的管脚,用户可以通过 GPIO 口和硬件进行数据交互(如UART),控制硬件工作(如 LED,蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。

例如 GPIO_00 引脚复用表如下:(剩余引脚复用信息,请查看厂商芯片手册)。

管脚 管脚名称 类型 驱动(mA) 电压(V) 描述
复用信号0:GPIO_00
复用信号1:UART1_TXD
复用信号2:SPI1_CLK
2 GPIO_00 I/O 1 3.3/1.8 复用信号3:PWM3_OUT
复用信号4:I2C_SDA
复用信号5:RTC_OSC_32K
复用信号6:RTC32K_XOUT
复用信号7:保留

GPIO 接口定义了操作 GPIO 管脚的标准方法集合,包括:

  • 设置管脚方向:方向可以是输入或者输出(暂不支持高阻态)
  • 读写管脚电平值:电平值可以是低电平或高电平
  • 设置管脚中断服务函数:设置一个管脚的中断响应函数,以及中断触发方式
  • 使能和禁止管脚中断:禁止或使能管脚中断

GPIO 引脚复用流程如下:

二、GPIO模块相关API

头文件路径:base/iothardware/peripheral/interfaces/inner_api/iot_gpio.h

接口函数 描述
unsigned int IoTGpioInit(unsigned int id) 确定GPIO管脚号
unsigned int IoTGpioSetDir(unsigned int id, IotGpioDir dir) 设置管脚方向
unsigned int IoTGpioSetOutputVal(unsigned int id, IotGpioValue val) 设置管脚电平
unsigned int IoTGpioRegisterIsrFunc(unsigned int id, IotGpioIntType intType, IotGpioIntPolarity intPolarity, GpioIsrCallbackFunc func, char *arg) 设置管脚中断

三、实例

c 复制代码
//代码功能:定义 GPIO_00 号口为输出模式且输出高电平。
#include "iot_gpio.h"
IoTGpioInit(GPIO_00);
IoTGpioSetDir(GPIO_00 , IOT_GPIO_DIR_OUT);
IoTGpioSetOutputVal(GPIO_00 , IOT_GPIO_VALUE0);
while (1) {
    IoTGpioSetOutputVal(LED_GPIO, IOT_GPIO_VALUE1);
    sleep(1);
    IoTGpioSetOutputVal(LED_GPIO, IOT_GPIO_VALUE0);
    sleep(1);
}

四、GPIO HDF驱动开发

在HDF框架中,同类型设备对象较多时(可能同时存在十几个同类型配置器),若采用独立服务模式,则需要配置更多的设备节点,且相关服务会占据更多的内存资源。相反,采用统一服务模式可以使用一个设备服务作为管理器,统一处理所有同类型对象的外部访问(这会在配置文件中有所体现),实现便捷管理和节约资源的目的。GPIO模块采用统一服务模式(如图1所示)。

在统一模式下,所有的控制器都被核心层统一管理,并由核心层统一发布一个服务供接口层,因此这种模式下驱动无需再为每个控制器发布服务。

GPIO模块各分层作用:

接口层:提供操作GPIO管脚的标准方法。

核心层:提供GPIO管脚资源匹配,GPIO管脚控制器的添加、移除以及管理的能力,通过钩子函数与适配层交互,供芯片厂家快速接入HDF框架。

适配层:由驱动适配者将钩子函数的功能实例化,实现与硬件相关的具体功能。

4.1、LED驱动程序(待续...)

4.2、LED驱动配置(待续...)

坚持就有收获

相关推荐
SoraLuna4 小时前
「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现
macos·ui·harmonyos
ClkLog-开源埋点用户分析5 小时前
ClkLog企业版(CDP)预售开启,更有鸿蒙SDK前来助力
华为·开源·开源软件·harmonyos
mg6685 小时前
鸿蒙系统的优势 开发 环境搭建 开发小示例
华为·harmonyos
模拟IC攻城狮6 小时前
华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)
嵌入式硬件·华为·硬件架构·芯片
lqj_本人6 小时前
鸿蒙next选择 Flutter 开发跨平台应用的原因
flutter·华为·harmonyos
lqj_本人6 小时前
使用 Flutter 绘制一个棋盘
harmonyos
TangKenny6 小时前
计算网络信号
java·算法·华为
23zhgjx-NanKon6 小时前
华为eNSP:QinQ
网络·安全·华为
23zhgjx-NanKon6 小时前
华为eNSP:mux-vlan
网络·安全·华为
Leo.yuan8 小时前
39页PDF | 华为数据架构建设交流材料(限免下载)
数据结构·华为