ABOV(12) UART

USI0 UART 发送

UART发送的使能是通过设置SUI0CR2寄存器中的TXE0位,当发送使能时,TXD0引脚应该通过P4FSR[3:2]设置位TXD0功能,波特率,操作模式和帧格式必须在发送之前一次设置完。在同步工作模式时,SCK0引脚用于传送时钟,所以需要通过P4FSR[5:4]设置位SCK0。

USI0 UART 发送TX数据

数据传输通过加载所要发送的数据到发送缓冲区(USI0DR)开始。当移位寄存器准备好发送新的一帧数据时,写入到发送缓冲区中的数据位到移位寄存器中,移位寄存器在空闲状态或在发送的最后一个停止位后立即加载新的数据。当移位寄存器加载新的数据时,会根据控制寄存器设置发送一帧完整的数据。如果这9位已经被用,第9位必须在他加载到发送缓冲区(USI0DR)之前写到USI0CR3寄存器中的USI0TX8位。

USI0 UART 发送标志位和中断

UATR发送器有2个标志位,他表明了其状态。一个是UART数据寄存器空标志(DRE0)另一个是传送完成标志位(TXC0)。俩位都可以作为中断源。
DRE0表示传送暂存器已经准备去接受新的数据。当发送暂存器清空之后该位置位,当发送暂存器包含被发送但是还没有移位到移位寄存器的数据时该位清零。该标志位也可以在该位置写入0进行清除。写入1是不允许的。
当USI0CR2寄存器中的数据寄存器清空中断(DRIE0)使能,同时总中断也打开,DRE0置位时USI0ST1状态寄存器清空中断会产生中断。
当发送移位寄存器中的整帧数据已经移出并且没有数据在缓冲器中时TXC0标志位值位。TXC0标志位自动清除当发送完成中断服务程序执行时,或是你可以在USI0ST1寄存器的TXC0位写入0进行清零。
当USI0CR2寄存器中的发送完成中断使能位(TXCIE0)置位并且总中断打开,当TXC0位置位时UART发送完成中断会产生中断。

USI0 UART 奇偶校验

奇偶校验发送器对发出的串行数据进行奇偶位计算,当奇偶校验使能时(USI0PM1=1),发送器控制逻辑将其插入到MSB和帧数据的第一个停止位之间。

USI0 UART 禁止发送

通过清空TXE位禁止发送不会生效直到正在发送的数据发送完整。当然发送禁止时,TXD0引脚可以作为普通I/O口(GPIO)。

USI0 UART 接收

UART通过设置USI0CR2寄存器的RXE0位来使能。当其使能时,RXD0脚应该设为输入状态RXD0功能口。波特率,操作模式和帧模式必须在接收之前设置完成。在同步或者SPI工作模式时,SCK0用户传送时钟,所以需要通过P4FSR[5:4]设置为SCK0功能。在SPI工作模式时,SS0引脚在从机模式或配置为SS0输出口(master)。可以通过USI0CR3寄存器的USI0SSEN位来设置。

USI0 UART 接收RX数据

当UART 为同步或异步模式下,当RXD0上监测到开始位(LOW)时接收器开始数据接收。开始位后的每一位由预定义的波特率和移位到移位寄存器开始采样直到接收到第一位停止位。即使一帧中有第二个停止位,第二个停止位也被接受器忽略。也就是说,接收第一个停止位意味着一帧的完整的数据存在于接收移位寄存器,同时移位寄存器的内容转移到接收寄存器。接收暂存器通过USI0DR寄存器读取。
如果9位字符被用(USIOS[2:0]=“111”),第9位存储到USI0RX8的位置。第9位必须在从USI0DR读取低8位之前通过USI0RX8读取。同样的,错误标志位FE0,DOR0,PE0必须在从USI0DR读取数据之前读取。因为错误标志位是存储在接收寄存器中和FIFO相同的位置。

发布了47 篇原创文章 · 获赞 0 · 访问量 1707

猜你喜欢

转载自blog.csdn.net/New_Joker/article/details/103866032