Linux中的UART-PL011详解
一、UART-PL011概述
UART-PL011 是ARM PrimeCell系列中的一种通用异步收发传输器(UART),专为嵌入式系统设计,具备以下核心特性:
- AMBA兼容性:作为AMBA(Advanced Microcontroller Bus Architecture)从设备,支持APB(Advanced Peripheral Bus)接口,确保与ARM处理器的无缝集成。
- 高性能通信:集成16字节FIFO缓冲、可编程波特率生成、硬件流控制及红外支持,适用于多种串行协议(如RS-232、RS-485、IrDA)。
- Linux内核支持:通过标准化驱动架构和设备树机制,实现跨平台兼容性,广泛应用于树莓派、Hi3519DV500等嵌入式平台。
二、硬件特性
1. 核心功能
- FIFO缓冲:
- 16字节发送/接收FIFO,支持可编程触发级别(如1/8、1/4、1/2、3/4、7/8满时触发中断),减少CPU中断负载。
- 波特率生成:
- 通过可编程除数寄存器生成内部时钟,支持标准波特率(如9600、115200)及非标准速率,最高可达
UARTCLK/16
。
- 通过可编程除数寄存器生成内部时钟,支持标准波特率(如9600、115200)及非标准速率,最高可达
- 数据格式:
- 支持5-8位数据位、无/奇/偶校验、1-2位停止位,兼容多种串行协议。
- 流控制:
- 硬件支持RTS(请求发送)和CTS(清除发送)信号,实现自动流控制,防止缓冲区溢出。
- 红外支持:
- 集成IrDA编码器/解码器,支持SIR(Serial Infrared)协议,适用于无线红外通信。
- DMA集成:
- 可与DMA控制器协同工作,实现高效数据传输,减少CPU干预。