UART
Universal Asynchronous Receiver/Transmitter,通用异步收发传输器
- Compatible with industry-standard 16450/16550 UARTs
- 64-Byte Transmit and receive data FIFOs
- Supports DMA controller interface
- Supports Software/ Hardware Flow Control
- Supports IrDA 1.0 SIR
- Supports RS-485 mode
模块配置
其menuconfig 的配置如下:
Kernel Setup --->
Drivers Setup --->
SoC HAL Drivers --->
UART devices --->
[*] enable uart driver
[*] enbale uart hal APIs Test command
源码结构
.
│ hal_uart.c # 驱动源码
│ platform-uart.h # 平台选择头文件
│ uart.h # 驱动私有头文件
└─platform
uart-sun20iw2p1.h # 平台特化定义
模块接口说明
头 文件
#include <hal_uart.h>
返回值枚举
typedef enum
{
HAL_UART_STATUS_ERROR_PARAMETER = -4, /**< Invalid user input parameter. */
HAL_UART_STATUS_ERROR_BUSY = -3, /**< UART port is currently in use. */
HAL_UART_STATUS_ERROR_UNINITIALIZED = -2, /**< UART port has not been initialized. */
HAL_UART_STATUS_ERROR = -1, /**< UART driver detected a common error. */
HAL_UART_STATUS_OK = 0 /**< UART function executed successfully. */
} hal_uart_status_t;
波特率枚举
typedef enum
{
UART_BAUDRATE_300 = 0,
UART_BAUDRATE_600,
UART_BAUDRATE_1200,
UART_BAUDRATE_2400,
UART_BAUDRATE_4800,
UART_BAUDRATE_9600,
UART_BAUDRATE_19200,
UART_BAUDRATE_38400,
UART_BAUDRATE_57600,
UART_BAUDRATE_115200,
UART_BAUDRATE_230400,
UART_BAUDRATE_576000,
UART_BAUDRATE_921600,
UART_BAUDRATE_1000000,
UART_BAUDRATE_1500000,
UART_BAUDRATE_3000000,
UART_BAUDRATE_4000000,
UART_BAUDRATE_MAX,
} uart_baudrate_t;
UART 字长枚举
typedef enum
{
UART_WORD_LENGTH_5 = 0,
UART_WORD_LENGTH_6,
UART_WORD_LENGTH_7,
UART_WORD_LENGTH_8,
} uart_word_length_t;
UART 停止位枚举
typedef enum
{
UART_STOP_BIT_1 = 0,
UART_STOP_BIT_2,
} uart_stop_bit_t;
UART 奇偶枚举
typedef enum
{
UART_PARITY_NONE = 0,
UART_PARITY_ODD,
UART_PARITY_EVEN
} uart_parity_t;
UART 配置结构体
typedef struct
{
uart_baudrate_t baudrate;
uart_word_length_t word_length;
uart_stop_bit_t stop_bit;
uart_parity_t parity;
} _uart_config_t;
获取UART驱动的版本号
函数原型:
sunxi_hal_version_t hal_uart_get_version(int32_t dev)
参数:
- dev:UART端口号
返回:
- UART 驱动版本号
初始化UART驱动
函数原型:
int32_t hal_uart_init(int32_t uart_port);
参数:
- uart_port:UART 端口号
返回:
- 0:成功
- 负数:失败