目录
一、预备知识:
UART模式提供异步串行接口。在UART模式中,接口使用双线连接方式(含有引脚RXD、 TXD)或者四线连接方式(含有引脚RXD、 TXD、RTS和CTS),其中RTS和CTS引脚用于硬件流量控制。
UART模式的操作具有下列特点:
● 8位或者9位负载数据
● 奇校验、偶校验或者无奇偶校验
● 配置起始位和停止位电平
● 配置LSB或者MSB首先传送
● 独立收发中断
● 独立收发DMA触发
● 奇偶校验和帧校验出错状态
什么是LSB/MSB?
MSB是Most Significant Bit的缩写,最高有效位。在二进制数中,MSB是最高加权位。与十进制数字中最左边的一位类似。通常,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧。
- LSB(Least Significant Bit),意为最低有效位;
- MSB(Most Significant Bit),意为最高有效位,若MSB=1,则表示数据为负值,若MSB=0,则表示数据为正。
UART模式提供全双工传送,接收器中的位同步不影响发送功能。传送一个UART字节包含1个起始位、8 个数据位、 1个作为可选项的第9位数据或者奇偶校验位再加上1个或2个停止位。注意,虽然真实的数据包 含8位或者9位,但是,数据传送只涉及一个字节。
理解单工半双工全双工
UART操作由USART控制和状态寄存器UxCSR以及UART控制寄存器UxUCR来控制。 这里的x是USART的编号,其数值为0或者1。 当UxCSR.MODE设置为1时,就选择了UART模式
UART发送
USART收/发数据缓冲器、寄存器UxBUF写入数据时,该字节发送到输出引脚 TXDx。 UxBUF寄存器是双缓冲的。当字节传送开始时, UxCSR.ACTIVE位变为高电平,而当字节传送结束时为低。当传送结束时,UxCSR.TX_BYTE位设置为1。当USART收/发数据缓冲寄存器就绪,准备接收新的发送数据时,就产生了一个中断请求。该中断在传送开始之后立刻发生,因此,当字节正在发送时,新的字节能够装入数据缓冲器。
UART接收
当1写入UxCSR.RE位时,在UART上数据接收就开始了。然后UART会在输入引脚RXDx中寻找有效起始位,并且设置 UxCSR.ACTIVE位为 1。当检测出有效起始位时,收到的字节就传入到接收寄存器,UxCSR.RX_BYTE位设置为1。该操作完成时,产生接收中断。同时UxCSR.ACTIVE变为低电平。
通过寄存器UxBUF提供收到的数据字节。当UxBUF读出时, UxCSR.RX_BYTE位由硬件清0
二、项目实施
每个USART有如下5个寄存器,x是USART的编号,为0或者1
寄存器 | 解释 |
UxCSR | 控制和状态寄存器 |
UxUCR | 控制寄存器 |
UxGCR | 通用控制 |
UxBAUD | 设置波特率 |
UxBUF | 接收/传送数据缓存 |
32MHZ 系统时钟常用的波特率设置
U0CSR(0x86)—USART0 控制和状态
U0UCR (0xC4)– USART 0 UART 控制
代码:
未完待续......