深刻理解UART_第1页
深刻理解UART_第2页
深刻理解UART_第3页
深刻理解UART_第4页
深刻理解UART_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 UART 异步串行口异步串行口 UART 异步串行口简介异步串行口简介 数据通信的基本方式可分为并行通信与串行通信两种 并行通信并行通信 是指利用多条数据传输线将一个资料的各位同时传送 它的特点是传输速 度快 适用于短距离通信 但要求通讯速率较高的应用场合 串行通信串行通信 是指利用一条传输线将资料一位位地顺序传送 特点是通信线路简单 利 用简单的线缆就可实现通信 降低成本 适用于远距离通信 但传输速度慢的应用场 合 UART 异步串行口的传输格式异步串行口的传输格式 异步通信以一个字符为传输单位 通信中两个字符间的时间间隔是不固定的 然 而在同一个字符中的两个相邻位代码间的时间间隔是固定的 通信协议 通信规程 是指通信双方约定的一些规则 在使用异步串口传送一个 字符的信息时 对资料格式有如下约定 规定有空闲位 起始位 资料位 奇偶校验 位 停止位 通讯时序图如下 开始前 线路处于空闲状态 送出连续 1 传送开始时首先发一个 0 作为 起始位 然后出现在通信线上的是字符的二进制编码数据 每个字符的数据位长可以约定为5 位 6 位 7 位或8 位 一般采用ASCII 编码 后面是奇偶校验位 根据约定 用奇偶校验位将所传字符中为 1 的位数凑成奇 数个或偶数个 也可以约定不要奇偶校验 这样就取消奇偶校验位 最后是表示停止位的 1 信号 这个停止位可以约定持续1 位 1 5 位或2 位 的时间宽度 至此一个字符传送完毕 线路又进入空闲 持续为 1 经过一段随机的时间后 下一个字符开始传送才又发出起始位 每一个数据位的宽度等于传送波特率的倒数 微机异步串行通信中 常用的波特 率为110 150 300 600 1200 2400 4800 9600 等 S3C2410 的异步串行口的异步串行口 2 S3C2410 的UART 通用异步串行口 单元提供三个独立的异步串行I O 端口 每个都可以在中断和DMA 两种模式下进行 UART支持的最高波特率达230 4kbps 每个UART通道包含2 个16 位FIFO 分别提供给 接收和发送 每个UART 包含波特率发生器 接收器 发送器和控制单元 波特率发生器以PCLK或UCLK为时钟源 发送器和接收器包含16 字节FIFO 寄存器和移位寄存器 当发送数据的时候 数据先写到FIFO 然后拷 贝到发送移位寄存器 然后从数据输出端口 TxDn 依次被移位输出 被接收的数据也同样从接收端 口 RxDn 移位输入到移位寄存器 然后拷贝到FIFO 中 异步串行口的操作异步串行口的操作 数据发送操作 数据发送帧的格式是可编程的 它包含一个开始位 5 到8 个数据位 一个可选的奇偶位和一个 或两个停止位 这些可以通过线性控制器 ULCONn 来设置 发送器也能够产生发送中止条件 中止 条件迫使串口输出保持在逻辑0 状态 这种状态保持一个传输帧的时间长度 通常在一帧传输数据完 整地传输完之后 在通过这个全0 状态将中止信号发送给对方 中止信号发送之后 传送数据连续放 到FIFO 中 在不使用FIFO 模式下 将被放到输出保持寄存器 数据接收操作 与数据发送一样 数据接收的帧也是可以编程的 它包含一个开始位 5 到8 个 数据 一个可选的奇偶位和一位或两位停止位 它们都是通过线性控制器 ULCONn 来设置的 接收器能够检测溢出错误 奇偶校验错误 帧错误和中止状况 每种情况下都将 会将一个错误标志置位 UART 异步串行口的波特率发生器异步串行口的波特率发生器 每个UART 的波特率发生器为传输提供了串行移位时钟 波特率产生器的时钟源可以从S3C2410 的 内部系统时钟或UCLK 中来选择 波特率由时钟源 PCLK 或UCLK 16 分频然后被UART 波特率除数 寄存器 UBRDIVn 指定的16 位除数决定 因此 UBRDIVn 的值可以按照下式确定 UBRDIVnUBRDIVn int PCLK bps 16 1 其中bps为波特率 例如 如果波特率为115200bps 且PCLK 或UCLK 为40MHz 则UBRDIVn 为 UBRDIVnUBRDIVn int 40000000 115200 16 1 int 21 7 1 21 1 20 UART 异步串行口波特率发生器的误差极限异步串行口波特率发生器的误差极限 UART传输10bit数据的时间误差应该小于1 87 3 160 tUPCLK UBRDIVn 1 x 16 x 10 PCLK 实际的传输10bit所需时间 tUEXACT 10 baud rate 理想情况下传输10位需要的时间 UART error tUPCLK tUEXACT tUEXACT x 100 异步串行口的相关寄存器异步串行口的相关寄存器 线路控制寄存器 ULCON 3 线性控制寄存器 主要用来规定传输帧的格式 下面表格是线控制寄存器的地址 和位定义 寄存器寄存器地址地址读读 写写描述描述重置值重置值 ULCON0 0 x50000000 读 写UART通道0线路控制寄存器 0 x00 ULCON1 0 x50004000 读 写UART通道1线路控制寄存器 0 x00 ULCON2 0 x50008000 读 写UART通道2线路控制寄存器 0 x00 ULCONnULCONn 位位描述描述初始状态初始状态 保留 7 0 Infra Red Mode 6 决定是否用红外模式 0 正常模式操作 1 红外Tx Rx模式 0 Parity Mode 5 3 指定奇偶产生的类型并在UART的传输与接收操作中检查 0 xx 非奇偶 100 奇 101 偶 110 强制奇偶 选中为1 111 强制奇偶 选中为0 000 Number of Stop Bit 2 指定多少个停止位将被使用对于帧结束信号 0 每帧一个停止位 1 每帧两个停止位 0 Word Length 1 0 显示每帧传输或接收的数据位的数目 00 5位 01 6位 10 7位 11 8位 00 控制寄存器 UCON 寄存器寄存器地址地址读读 写写描述描述重置值重置值 UCON0 0 x50000004 读 写UART通道0控制寄存器 0 x00 UCON1 0 x50004004 读 写UART通道1控制寄存器 0 x00 UCON2 0 x50008004 读 写UART通道2控制寄存器 0 x00 UCONnUCONn 位位 描述描述初始状态初始状态 Clock Selection 10 选择PCLK或UCLK对于UART的波特率 0 PCLK UBRDIVn int PCLK bps x 16 1 1 UCLK GPH8 UBRDIVn int UCLK bps x 16 1 0 4 Tx Interrupt Type 9 中断请求类型 0 脉冲型 当Tx缓冲区在无输入输出模式下变空或当Tx在输入输出 模式下的输入输出到达触发电平时 中断就被请求 1 电平型 当Tx缓冲区在无输入输出模式下变空或当Tx在输入输出 模式下的输入输出到达触发电平时 中断就被请求 0 Rx Interrupt Type 8 中断请求类型 0 脉冲型 当Rx缓冲区在无输入输出模式下接收数据或当Rx在输入 输出模式下的输入输出到达触发电平时 中断就被请求 1 电平型 当Rx缓冲区在无输入输出模式下接收数据或当Rx在输入 输出模式下的输入输出到达触发电平时 中断就被请求 0 Rx Time Out Enable 7 当UART的输入输出被使能时 使Rx的定时中断使能 失能 这个中断 是一个接收中断 0 失能 1 使能 0 Rx Error Status Interrupt Enable 6 使UART在一个例外上产生中断是使能的 例如一个暂停 帧出错 奇偶出错或溢出出错在一个接收操作中 0 不产生接收出错的状态中断 1 产生接收出错的状态中断 0 Loopback Mode 5 设置回溯位为1将引起UART加入到回溯模式中 这种模式只是为测试 目的而提供的 0 正常操作 1 回溯模式 0 Send Break Signal 4 设置这个位将引起UART在一帧的时间内传送一个暂停 这个位在送 出暂停信号后会被自动清除 0 正常传输 1 传送暂停信号 0 Transmit Mode 3 2 决定哪一个函数当前能够对Tx写入数据到UART传输缓冲寄存器 00 失能 01 中断请求或轮流检测模式 10 DMA0请求 只对于UART0 DMA3请求 只对于UART2 11 DMA1请求 只对于UART1 00 Receive Mode 1 0 决定哪一个函数当前能够读取数据从UART接收缓冲寄存器 00 失能 01 中断请求或轮流检测模式 10 DMA0请求 只对于UART0 DMA3请求 只对于UART2 11 DMA1请求 只对于UART1 00 FIFO 控制寄存器 UFCON 寄存器寄存器地址地址读读 写写描述描述重置值重置值 UFCON0 0 x50000008 读 写UART通道0FIFO控制寄存器 0 x0 UFCON1 0 x50004008 读 写UART通道1FIFO控制寄存器 0 x0 UFCON2 0 x50008008 读 写UART通道2FIFO控制寄存器 0 x0 UFCONnUFCONn 位位 描述描述初始状态初始状态 Tx FIFO Trigger Level 7 6 决定传输FIFO的触发电平 00 空 01 4字节 10 8字节 11 12字节 00 Rx FIFO Trigger Level 5 4 决定接收FIFO的触发电平 00 4字节 01 8字节 10 12字节 11 16字节 00 5 保留 3 0 Tx FIFO Reset 2 在重新设置FIFO后自动清除 0 正常 1 Tx FIFO重置 0 Rx FIFO Reset 1 在重新设置FIFO后自动清除 0 正常 1 Rx FIFO重置 0 FIFO Enable 0 0 失能 1 使能 0 MODEM 控制寄存器 UMCON 寄存器寄存器地址地址读读 写写描述描述重置值重置值 UMCON0 0 x5000000C 读 写UART通道0Modem控制寄存器 0 x0 UMCON1 0 x5000400C 读 写UART通道1Modem控制寄存器 0 x0 保留 0 x5000800C 保留未定义 UMCONnUMCONn 位位 描述描述初始状态初始状态 保留 7 5 这些位必须是000 Auto Flow Control AFC 4 0 失能 1 使能 0 保留 3 1 这些位必须是000 Request to Send 0 如果AFC位是使能的 这个值将被忽略 在这种情况下 S3C2410X将自动控制nRTS 如果AFC位是失能的 nRTS必须 由软件控制 0 H 电平 不激活nRTS 1 L 电平 激活nRTS 0 发送 接收状态寄存器 UTRSTAT Register Address R W Description Reset Value UTRSTAT0 0 x50000010 R UART通道0 Tx Rx状态寄存器 0 x6 UTRSTAT1 0 x50004010 R UART通道1 Tx Rx状态寄存器 0 x6 UTRSTAT2 0 x50008010 R UART通道2 Tx Rx状态寄存器0 x6 UTRSTATn Bit Description Initial State Transmitter empty 2 当传输缓冲寄存器中没有有效的值传输并且传输转换寄 存器中为空的时候 自动置1 0 不为空 1 传输器 传输缓冲器 sysinit 系统初始化代码 在这里不关心它 Uart Init 0 115200 初始化串口 115200是波特率定义见下面说明 Uart Select 0 选择串口0 标准库函数 可直接调用 Uart Printf nWelcom to Uart Test n 在屏幕打印 标准库函数 可直接调用 Uart Printf Baud rate 115200 no flow control n 10 i 0 while 1 Uart Printf i d n i 从串口格式化输出 for j 0 j 0 xffffff j 延时 主函数中调用的函数的定义 void Uart Init int pclk int baud int i if pclk 0 pclk PCLK 参数 pclk 为 0 表示选用的时钟为 PCLK rUFCON0 0 x0 UART 通道 0 FIFO control register FIFO 禁止 不使用 rUFCON1 0 x0 UART 通道 1 FIFO control register FIFO 禁止 不使用 rUFCON2 0 x0 UART 通道 2 FIFO control register FIFO 禁止 不使用 rUMCON0 0 x0 UART 通道 0 MODEM control register AFC 禁止 不使用 rUMCON1 0 x0 UART 通道 1 MODEM control register AF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论