这次来深入学习一下ARM串口通信的相关知识。
以三星公司的S5PV210系列为原型,通用异步接收机和发射机(UART)S5PV210提供四个独立异步接口:串行输入/输出(I / O)端口。
所有的端口操作在一个基于中断或DMA的模式。UART通过生成一个中断或DMA请求在CPU和UART之间传输数据。
UART支持比特率3 mbps,每个UART通道包含两个fif来接收和传输数据:
在通道0的FIFO里可以存256字节,通道1的FIFO里可以存64字节,通道2和通道3的FIFO里可以存16字节。
UART包括可编程的波特率;红外(IR)发射器/接收器;一个或两个停止位插入;6位,7位或8位数据宽度和奇偶校验。
每个UART包含波特率发生器、发射机、接收机和一个控制单元,波特率的来源是PCLK或SCLK_UART。
发射机和接收机包含fifo和数据转换器(uart shifter)。
要传输的数据被写入Tx FIFO,并复制到数据转换器(uart shifter)。然后,数据被通过Tx发送走。接收到的数据从接收数据处(RxDn)被复制到Rx FIFO。
uart异步收发装置的特点:
RxD0、TxD0 RxD1、TxD1 RxD2,TxD2,RxD3和TxD3 是基于DMA或基于中断操作的。
在通道0的FIFO里可以存256字节,通道1的FIFO里可以存64字节,通道2和通道3的FIFO里可以存16字节。(上面提到了)
至于流控啥的我们就不需要了解了,现在流控基本上也不需要了。
并且S5PV210芯片的串口装置支持握手发射接收。
传输的数据帧是可编程的。它由一个起始位,五到八个数据位,一个可选则的奇偶校验位,一到两个停止位,这些东西由行控制位(ULCONn)来控制。
发送器也可以在一帧传输时间后产生一个中断迫使串口输出逻辑0状态。这个模块会在当前发送的数据完全发送完以后产生一个中断信号。
中断信号发送完之后,表示一帧数据已经成功发送了,发送器继续发送数据到Tx FIFO(Tx保持寄存器,以防Non-FIFO模式)
类似于数据发送,接收的数据帧也可编程。它由一个起始位,五到八个数据位,一个可选的校验位,一个两个停止位,由行控制寄存器(ULCONn)来控制。
接收方检测到溢出错误,奇偶校验错误,误帧和休息状态,这些错误每一个都设置一个错误标志。
->溢出错误表明,新数据覆盖旧数据之前旧的数据被读取。
->奇偶校验误差表明,接收机已经探测到一个不期望的奇偶校验结果。
->帧错误表明接收的数据没有一个有效的停止位。
->休息状态表明破坏条件表明RxDn处于逻辑0状态超过了一帧的传输时间。
如果数据没有在三个word接收的时间内被接收,则会产生收发超时。
在FIFO模式下,Rx FIFO不是空的。