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

目录

  • [一、UART 概述](#一、UART 概述)
  • [二、UART 模块相关API](#二、UART 模块相关API)
  • [三、UART 接口调用实例](#三、UART 接口调用实例)
  • [四、UART HDF驱动开发](#四、UART HDF驱动开发)
  • 坚持就有收获

一、UART 概述

UART 是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)的缩写,是通用串行数据总线,用于异步通信,该总线双向通信,可以实现全双工传输。UART 应用比较广泛,常用于输出打印信息,也可以外接各种模块,如 GPS、蓝牙等。

  • 异步通信

异步通信中,数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。异步通信以一个字符为传输单位,通信中两个字符间的时间间隔是不固定的,然而在同一个字符中的两个相邻位代码间的时间间隔是固定的。

  • 全双工传输(Full Duplex)

此通信模式允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工可以同时进行信号的双向传输。

UART 设备的连接示意图如下:

  • TX:发送数据端,和对端的 RX 相连。
  • RX:接收数据端,和对端的 TX 相连。
  • RTS:发送请求信号,用于指示本设备是否准备好,可以接收数据,和对端 CTS 相连。
  • CTS:允许发送信号,用于判断是否可以向对端发送数据,和对端 RTS 相连。

UART 通信之前,收发双方需要约定好:波特率、数据格式。

  • 波特率:指信息传输到信道的速率。例如:9600、961200、115200 等。
  • 数据格式:一帧数据由起始位、数据位、校验位、停止位组成。

UART 通信过程中,UART 通过 TX 发送数据给对端,通过 RX 接收对端数据。当 UART 接收缓存达到预定的门限值时,RTS 变为不可发送数据,对端的 CTS 检测到不可发送数据的信号,则停止发送数据。

UART 在进行数据传输时的数据格式如下:

UART 操作流程如下:

二、UART 模块相关API

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

接口函数 描述
unsigned int IoTUartInit(unsigned int id, const IotUartAttribute *param); 初始化UART
unsigned int IoTUartDeinit(unsigned int id); 清除初始化UART
int IoTUartWrite(unsigned int id, const unsigned char *data, unsigned int dataLen); UART写操作
int IoTUartRead(unsigned int id, unsigned char *data, unsigned int dataLen); UART读操作

三、UART 接口调用实例

c 复制代码
//代码功能:定义了 UART 接口功能以及 UART 相关参数,GPIO_00 号口作为 UART1_TXD 模式以及 UART 相关参数,最后进行读写操作。

#include "iot_uart.h"
IotUartAttribute uart_attr = {
.baudRate = 9600, //波特率
.dataBits = 8, //数据位
.stopBits = 1, //停止位
.parity = 0, //优先级
};

IoTUartInit(UART1_TXD, &uart_attr);
IoTUartWrite(UART1_TXD, data, strlen(data));
IoTUartRead(UART1_TXD, buff, BUFF_SIZE);

四、UART HDF驱动开发

在HDF框架中,UART接口适配模式采用独立服务模式(如图3所示)。在这种模式下,每一个设备对象会独立发布一个设备服务来处理外部访问,设备管理器收到API的访问请求之后,通过提取该请求的参数,达到调用实际设备对象的相应内部方法的目的。独立服务模式可以直接借助HDF设备管理器的服务管理能力,但需要为每个设备单独配置设备节点,增加内存占用。

独立服务模式下,核心层不会统一发布一个服务供上层使用,因此这种模式下驱动要为每个控制器发布一个服务,具体表现为:

驱动适配者需要实现HdfDriverEntry的Bind钩子函数以绑定服务。

device_info.hcs文件中deviceNode的policy字段为1或2,不能为0。

UART模块各分层作用:

接口层提供打开UART设备、UART设备读取指定长度数据、UART设备写入指定长度数据、设置UART设备波特率、获取设UART设备波特率、设置UART设备属性、获取UART设备波特率、设置UART设备传输模式、关闭UART设备的接口。

核心层主要提供UART控制器的创建、移除以及管理的能力,通过钩子函数与适配层交互。

适配层主要是将钩子函数的功能实例化,实现具体的功能。

图 3 UART独立服务模式结构图

4.1、开发步骤(待续...)

UART模块适配包含以下四个部分。

  • 驱实例化驱动入口
  • 配置属性文件
  • 实例化UART控制器对象
  • 驱动调试

坚持就有收获

相关推荐
Deepoch19 小时前
中国具身智能三大路径:极限挑战、柔性操作、普惠赋能,竞合共生
大数据·人工智能·物联网·机器人·具身模型·deepoc
亿道电子Emdoor20 小时前
【Arm】MDK查看语句的执行累积时间和次数
stm32·单片机·物联网
Tel1992530800420 小时前
CCD相机同步外触发拍照抓拍识别高速脉冲计数器信号采集模块
单片机·数码相机·物联网·自动化·工业自动化·仪器仪表
乐迪信息21 小时前
乐迪信息:AI摄像机识别煤矿出入井车辆数量异常检测
大数据·运维·人工智能·物联网·安全
Wpa.wk21 小时前
硬件环境配置-两台电脑进行局域网构建
物联网·microsoft·电脑·信息与通信·局域网构建
盈创力和200721 小时前
工业物联网下的智能安全防线:基于以太网的多参量传感器设计与应用
物联网·气体传感器·以太网多参量传感器·智能环境监测终端·双气体模组·三十四种组合可定制
xq952721 小时前
编程之路 2025年终总结 ,勇往直前 再战江湖
harmonyos
珠海西格电力1 天前
零碳园区边缘计算节点规划:数字底座的硬件部署与能耗控制方案
运维·人工智能·物联网·能源·边缘计算
DBA小马哥1 天前
Oracle迁移金仓全攻略:工业IOT场景下的易用性与安全保障
数据库·物联网·安全·oracle
代码没bug1 天前
使用MQTT.fx连接云平台-以新大陆云平台为例
物联网