一、uart简介
- uart串口的相关参数
- 波特率
此参数容易和比特率混淆,其实他们是由区别的。uart中的波特率就可以认为是比特率,即每秒传输的位数(bit)。
一般标准的波特率都会有600,1200,2400,9600,19200,38400,57600,115200等,该数据即指每秒传输这么多个比特位数(bit)。 - 分频系数
为了在给定输入频率的基础上计算得到对应的波特率,可以设置分频系数,最终uart波特率的值为:若给定时钟fCK,分频系数n,则该UART的波特率如下计算: baudrate = fCK/n/16 一般采用16倍过采样。
- 数据包的结构
- 起始位
一般是1个逻辑”0”的信号,表示传输数据的开始。 - 数据位
可以选择的值有5,6,7,8这四个值,可以传输这么多个值为0或者1的bit位。这个参数最好为8,因为如果此值为其他的值时当你传输的是ASCII值时一般解析肯定会出问题。理由很简单,一个ASCII字符值为8位,如果一帧的数据位为7,那么还有一位就是不确定的值,这样就会出错。 - 校验位
数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。就比如传输“A” - 停止位
它是一帧数据的结束标志。可以是1bit、1.5bit、2bit的空闲电平。
1.5bit一般用在uart信号时用两个波形点来表示一个bit。 - 空闲位
没有数据传输时线路上的电平状态,至少有1个逻辑1的电平
- uart控制器中的寄存器
- RX寄存器
- TX寄存器
- 状态寄存器
可读寄存器,表示RX_FIFO、TX_FIFO的状态 - 控制寄存器
设置数据位、奇偶校验位、停止位等 - 分频系数寄存器(高/低)
设置分频系数的数值
二、uart串口协议
参考链接:https://zhuanlan.zhihu.com/p/150504364
- 一些注意点
- 开始位的bit数
开始位只有1bit,不能设成其他位数。
三、uart控制器设计注意点
- 总线上对uart控制器的访问
主设备对于总线上从设备的访问要特别注意,比如对uart控制器的访问。由于uart控制器中某些寄存器是不可读的,例如当RX FIFO为空的时候,若在AXI总线上访问RX寄存器,AXI总线上会报SLVERR错误,从设备的ARREADY不会置高,总线会一直等待从设备的回应。 - 代码编写注意点
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82477.html