SoC设计——外设篇——uart控制器

导读:本篇文章讲解 SoC设计——外设篇——uart控制器,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、uart简介

  • uart串口的相关参数
  1. 波特率
    此参数容易和比特率混淆,其实他们是由区别的。uart中的波特率就可以认为是比特率,即每秒传输的位数(bit)。
    一般标准的波特率都会有600,1200,2400,9600,19200,38400,57600,115200等,该数据即指每秒传输这么多个比特位数(bit)。
  2. 分频系数
    为了在给定输入频率的基础上计算得到对应的波特率,可以设置分频系数,最终uart波特率的值为:
    若给定时钟fCK,分频系数n,则该UART的波特率如下计算:
                   baudrate = fCK/n/16
    一般采用16倍过采样。
  • 数据包的结构
  1. 起始位
    一般是1个逻辑”0”的信号,表示传输数据的开始。
  2. 数据位
    可以选择的值有5,6,7,8这四个值,可以传输这么多个值为0或者1的bit位。这个参数最好为8,因为如果此值为其他的值时当你传输的是ASCII值时一般解析肯定会出问题。理由很简单,一个ASCII字符值为8位,如果一帧的数据位为7,那么还有一位就是不确定的值,这样就会出错。
  3. 校验位
    数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。就比如传输“A”
  4. 停止位
    它是一帧数据的结束标志。可以是1bit、1.5bit、2bit的空闲电平。
    1.5bit一般用在uart信号时用两个波形点来表示一个bit。
  5. 空闲位
    没有数据传输时线路上的电平状态,至少有1个逻辑1的电平
  • uart控制器中的寄存器
  1. RX寄存器
  2. TX寄存器
  3. 状态寄存器
    可读寄存器,表示RX_FIFO、TX_FIFO的状态
  4. 控制寄存器
    设置数据位、奇偶校验位、停止位等
  5. 分频系数寄存器(高/低)
    设置分频系数的数值

二、uart串口协议

参考链接:https://zhuanlan.zhihu.com/p/150504364

SoC设计——外设篇——uart控制器

  • 一些注意点
  1. 开始位的bit数
    开始位只有1bit,不能设成其他位数。

三、uart控制器设计注意点

  • 总线上对uart控制器的访问
    主设备对于总线上从设备的访问要特别注意,比如对uart控制器的访问。由于uart控制器中某些寄存器是不可读的,例如当RX FIFO为空的时候,若在AXI总线上访问RX寄存器,AXI总线上会报SLVERR错误,从设备的ARREADY不会置高,总线会一直等待从设备的回应。
  • 代码编写注意点

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82477.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!