s3c2440学习笔记 串口
2016-02-24 19:17
169 查看
UART是什么?
通用异步收发器(universal asynchronous receiver transmitter)UART直接是全双工方式传送数据
UART使用标准TTL/CMOS逻辑电平来表示数据(高:1 低:0)。为了增强数据的抗干扰能力,通常将TTL/CMOS逻辑电平转换为RS-232逻辑电平(高:0 低:1)—通过MAX3232芯片进行转换
什么是帧(frame)?
有效数据传输单位,具有完整意义,不可分割。传送数据前要约定好波特率和数据的传输格式
什么是奇偶校验
数据位连同校验位,“1”的数目为奇数,奇校验反之为偶数,偶校验
异步传输方式
拥有起始位s3c2440
UART提供了3个异步串行通信端口
发送数据步骤
SOC将数据写入发送FIFOUART自动将FIFO数据复制到发送移位器(transmit shifter)
发送移位器将数据一位一位发送到TxDn线上
接收步骤
上面的反步骤,是从RxDn数据线读入s3c2440 UART使用
初始化
要设置1. 波特率
2. 传输格式(多少个数据位,是否使用校验位,奇校验or偶校验,多少个停止位,是否使用硬件流控制)
3. 对于s3c2440还要选择相应引脚为UART功能
4. 选择UART通道工作模式为中断模式或者DMA模式
读取写入数据
向某个寄存器写入数据即可发送从某个寄存器读取数据来接收
通过查询状态寄存器或者设置中断模式来得知数据是否发送或者接收完毕
相关控制寄存器
具体见s3c2440A芯片手册ULCONn:行控制器
UCONn:控制寄存器
UFCONn:FIFO控制寄存器(默认FIFO触发深度为1,本例不需要该寄存器)
UMCONn:MODEM控制寄存器
UTRSTATn:状态寄存器(是否发送完毕)
UTXHn:发送缓冲寄存器
URXHn:接收缓冲寄存器
UBRDIVn:波特率除数因子寄存器
波特率
有三个UART波特率除数因子寄存器UBRDIV0~2,其中的值用于决定波特率UBRDIVn=(int)(UART Clock/(buard rate∗16))−1UBRDIVn = (int)(UART\ Clock/(buard\ rate * 16)) - 1
例如:
如果波特率为115200bps,且UART时钟频率为40MHz
UBRDIV = (int)(40 000 000/ (115200*16))-1 = (int)21.7 - 1 = 22 - 1 = 21
相关文章推荐
- 网络的理解2
- VS2015转VS2008
- 第三方SDK:RongCloud IMKit实现简单的单人会话
- 自定义View
- ReactiveCocoa框架菜鸟入门——信号(Signal)详解 第三课:
- io流的理解
- Regular Expression Matching
- LVS负载均衡之session解决方案 持久连接
- bzoj 2242 [sdoi2011]计算器
- Opencv--像素值变化后的图像显示
- ReactiveCocoa框架菜鸟入门——信号(Signal)详解 第二课:信号(Signal)的各种操作
- JavaSE程序分析001
- activity的理解
- try catch finally 用法
- MediaCodec ES流
- ReactiveCocoa框架菜鸟入门——信号(Signal)详解 第一课:什么是 ReactiveCocoa
- 面向对象的理解
- linux bash-shell 排序实例1
- 行为型模式
- Linux系统中xorg.conf文件简介