asm/uart.h#
asm/uart.h文件中定义了AXI UART 16550相关的常量
- Author
Shihong Wang (jack4shihong@gamil.com)
- Version
0.1
- Date
2023-04-09
- Copyright
Copyright Shihong Wang (c) 2023 with GNU Public License V3.0
Note
关于AXI UART 16550芯片介绍: https://wenku.baidu.com/view/6f7a176048d7c1c708a14521.html?_wkts_=1681021571718
Note
关于AXI UART 16550相关常量, 参考AXI UART 16550编程手册(Programming Table): http://byterunner.com/16550.html
Warning
asm/uart.h仅提供AXI UART 16550相关常量的定义, UART相关功能定义在uart.h中
Defines
-
UART16550_CLOCK#
AXI UART 16550芯片的时钟频率, 设置波特率时将根据时钟频率计算除数
-
UART_MMIO_SIZE#
CLINT中断控制器的寄存器MMIO后的占用内存字节数Note
该值参考
SiFive FU740手册P80的Memory Map
-
UART_BASE_ADDR#
UART设备在内存中映射的起始单元
-
UART_END_ADDR#
UART设备在内存中映射的起始单元
-
_UART_REG(offset)#
根据UART寄存器的偏移量计算在内存中的地址
-
UART_DAT#
UART的数据寄存器(Data Register), 在发送模式和接受模式下有不同的作用
-
UART_THR#
UART的发送数据寄存器(Transmit Holding Register),UART设备处于发送模式时候存储要发送的数据
-
UART_RHR#
UART的接受数据寄存器(Receiving Holding Register),UART设备处于接收模式时候存储要接受的数据
-
UART_IER#
UART的中断使能寄存器(Interrupt Enable Register)Note
16550支持四种中断, 优先级从高到低依次为:接受出错中断
接受缓冲区满中断
发送缓冲区空中断
Modem状态变化中断 四种中断源的使能状态由
IER寄存器中的控制
-
UART_ISR#
UART的中断状态寄存器(Interrupt Status Register)Note
16550的四种中断源共用一条中断请求线INTR向CPU申请中断, 因此在CPU响应中断之后, 需要判断是那一个中断. 因此16550使用ISR寄存器表明有无中断和当前最高级别的中断
-
UART_FCR#
UART的FIFO控制寄存器(FIFO Control Register)Note
UART设备每次通信发送/接受1bit数据, 因此16550内部设置了缓冲区, 将发送/接受的数据保存在缓冲区中, 缓冲区空/满之后再向CPU发送中断.16550的缓冲区最大为16字节, 可以通过设置FCR设置使用的缓冲区的大小
-
UART_LCR#
UART的线路控制寄存器(Line Control Register)
-
UART_MCR#
UART的Moden控制寄存器(Modem Control Register)
-
UART_LSR#
UART的线路状态寄存器(Line Status Register)
-
UART_MSR#
UART的Moden状态寄存器(Modem Status Register)
-
UART_DL_LSB#
UART的除数寄存器低八位(Least Significant Bits,LSB of Divisor Latch), 用于进行预分频, 即设置波特率
-
UART_DL_MSB#
UART的除数寄存器高八位(Most Significant Bits,MSB of Divisor Latch), 用于进行预分频, 即设置波特率
-
UART_LSR_ERR#
传输出错, FIFO Error
-
UART_LSR_TSE#
传输缓冲区(FIFO)和移位寄存器为空, Transmit Empty
-
UART_LSR_THE#
传输缓冲区(FIFO)为空, Transmit Holding Empty
-
UART_LSR_BKI#
传输被打断, Break Interrupt
-
UART_LSR_FME#
接受帧出错, 没有接收到停止位的帧, Framing Error
-
UART_LSR_PRE#
奇偶校验出错, Parity Error
-
UART_LSR_ORE#
数据溢出, Overrun Error
-
UART_LSR_RDR#
FIFO有数据, Receive Data Ready