关于串口传输,首先得清楚波特率
波特率 = 每秒传输的字节数 × 一个字节的位数
所以波特率就是每秒能传输的位数
设波特率为115200,数据位数为8位,但是我们还需要考虑,校验位(一般设NONE)、起始位和终止位,所以为10位。
那么字节数就为 11520,波特率越大,传输的数据,速度就越多越快
一般来说,字母和数字都为一个字节,汉字为两个字节。
假设我们要传输 “stm32” 这个字符串,那么就是从左到右一个字节一个字节传输
那假设我们要传输88888这一串数字呢?8位即2^8=256 位数不够怎么办。
这想的不对
传输数字10时,10
的“16进制”为31 30
——(ASCII码)把数字拆开,一个一个传输,到底还是字符传输。
FPGA如何发送接收串口数据
Uart的常用信息包括 波特率,数据位,停止位
发送端和接收端的信息必须一致
传输的基本格式:起始位,D[7:0] ,停止位
如何符合波特率的要求,时钟为clk,波特率为baud,我们要传输1位的数据,期间FPGA需要计数值为:
c
n
t
=
c
l
k
b
a
u
d
cnt = \frac{clk}{baud}
cnt=baudclk
FPGA要实现Uart接收,提供的信号有clk,rst_n,波特率param的cnt
FPGA接收的处理包括接收线的数据打两拍,减小亚稳态