低速接口项目之串口Uart开发(一)——串口UART
本节目录
一、串口UART
二、串口协议
三、串口硬件
四、往期文章链接
本节内容
一、串口UART
串口UART,通用异步收发传输器(Universal Asynchronnous Receiver / Transmitter),一种异步收发传输器,全双工传输。数据发送时,将并行数据转换为串行数据;数据接收时,将接收到的串行数据转换成并行数据。包括了RS232、RS422、RS485等异步串行通信总线。
通常FPGA与电脑之间采用RS-232的串行数据通信接口标准,也就是计算机串行接口,显示COMX等,可以采取拔插串口的操作,通过在PC电脑的设备管理器下查看新增的串口COM,在上位机上进行连接。此种方式是为了解决调试电脑上存在多个串口,如何在上位机成功连接与FPGA相连的串口。
通常上位机,需要对串口进行配置,通过刷新实现串口名的更新,PC上位机要与FPGA保持一致的波特率,是否支持校验等等。常见的设置包括数据位数、波特率大小、奇偶校验类型和停止位数。
数据位(Data bits):该参数定义单个UART数据传输在开始到停止期间发送的数据位数。可选择为 5、6、7、8 位,其中 8 位数据位是最常用的,在实际应用中一般都选择 8 位数据位。
波特率(Baud):是指从一设备发到另一设备的波特率,即每秒钟可以通信的数据比特个数。典型的波特率有300, 1200, 2400, 9600, 19200, 115200等。通信两端设备都要设为相同的波特率。
奇偶校验类型(Parity Type):是用来验证数据的正确性。奇偶校验一般不使用,如果使用,则既可以做奇校验(Odd)也可以做偶校验(Even)。在偶校验中,因为奇偶校验位会被相应的置 1 或 0(一般是最高位或最低位),所以数据会被改变以使得所有传送的数位(含字符的各数位和校验位)中“1”的个数为偶数;在奇校验中,所有传送的数位(含字符的各数位和校验位)中“1”的个数为奇数。奇偶校验可以用于接受方检查传输是否发送生错误,如果某一字节中“1”的个数发生了错误,那么这个字节在传输中一定有错误发生。如果奇偶校验是正确的,那么要么没有发生错误,要么发生了偶数个的错误。如果用户选择数据长度为 8 位,则因为没有多余的比特可被用来作为奇偶校验位,因此叫“无奇偶校验(Non)”。
停止位(Stop bits):在每个字节的数据位发送完成之后,发送停止位,来标志着一次数据传输完成,同时用来帮助接受信号方硬件重同步。可选择为:1(默认)、1.5或者2位。
二、串口协议
发送端按照预先设定好的波特率,发送起始位(Start)+数据位(data)+奇偶校验位+结束位。其中,起始位为逻辑 0,结束位为逻辑 1,发送端在空闲状态为 1。
在 RS-232 标准中,最常用的配置是八个数据位+无奇偶校验+一个停止位,按照一个完整的字节包括一位起始位、8 位数据位、一位停止位即总共十位数据来算,要想完整的实现这十位数据的发送,就需要 11个波特率时钟脉冲,第 1 个脉冲标记一次传输的起始,第 11 个脉冲标记一次传输的结束。
三、串口硬件
UART 串口通信需要两根信号线来实现,一根用于串口发送,另外一根负责串口接收。PC电脑端通常都是Usb接口,这中间就需要一个串口芯片进行转换,比如CH340、CP2102等。
一个CH340的转换模块,淘宝上也就5块钱左右,用于FPGA和PC之间的调试很方便。
四、往期文章链接
UltraScale+FPGA中Serdes的多lane对齐异常解决方案
vivado时序报告中slack是如何计算的?如何优化时序?
UltraScale+FPGA中GTY的TX路径时钟详解——以40G的ETH MAC IP为例
vivado时序优化——约束异步时钟组set_clock_groups
基于FDMA和AXI4接口的DDR4遍历读写测试
基于fpga的图像处理之3x3_5x5算子模板设计
基于fpga的图像处理之3x3_5x5算子模板中值排序
基于fpga的图像处理之图像灰度化处理(Vivado+Modelsim+Matlab联合仿真验证)
AXI协议之AXILite开发设计(一)
AXI协议之AXILite开发设计(二)
AXI协议之AXILite开发设计(三)
AXI协议之AXILite开发设计(四)
AXI协议之AXILite开发设计(五)
FPGA和Matlab的FFT功能验证(一)
FPGA和Matlab的FFT功能验证(二)
FPGA和Matlab的FFT功能验证(三)
跟小灰灰一起学vivado:7系列FPGA的MultiBoot和Fallback功能更新固件
跟小灰灰一起学vivado:7系列FPGA配置模式之配置数据文件格式和配置时序步骤
跟小灰灰一起学vivado:7系列FPGA配置模式之主SPI四路(x4)
跟小灰灰一起学vivado:PCIe XDMA实现远程更新FPGA固件
Xilinx UltraScale+DDR4项目开发(一)——DDR4 MIG的ip接口信号
Xilinx UltraScale+DDR4项目开发(二)——DDR4 MIG的时钟网络
Xilinx UltraScale+DDR4项目开发(三)——DDR4器件选型与MIG IP的配置
低速接口项目之串口Uart开发(一)——串口UART
低速接口项目之串口Uart开发(二)——FIFO实现串口数据的收发回环测试
低速接口项目之串口Uart开发(三)——串口发送模块和接收模块
低速接口项目之串口Uart开发(四)——UART串口实现FPGA内部AXILITE寄存器的读写控制
低速接口项目之串口Uart开发(五)——QT实现Uart串口寄存器读写工具
低速接口项目之串口Uart开发(六)——zynq系列ps-pl端uart实现共享Axilite内部寄存器的读写
低速接口项目之串口Uart开发(七)——如何在FPGA项目中实现自适应波特率串口功能
低速接口项目之串口Uart开发(八)——如何通过ps侧的串口实现zynq的在线升级(一)
低速接口项目之串口Uart开发(九)——如何通过ps侧的串口实现zynq的在线升级(二)
低速接口项目之串口Uart开发(十)——基于EMIO的自定义PL串口实现zynq的在线升级