Chinaunix首页 | 论坛 | 博客
  • 博客访问: 193607
  • 博文数量: 20
  • 博客积分: 45
  • 博客等级: 民兵
  • 技术积分: 346
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-23 14:37
文章分类
文章存档

2016年(2)

2015年(3)

2014年(11)

2013年(4)

我的朋友

分类: 嵌入式

2014-01-08 08:57:52

    学习嵌入式可谓是有很多很杂很烦的东西要学,串口传输算是其中最最基础的东西了吧。接触单片机开始,这个东西就是很重要的学习部分。这片博文是从最最基础的东西讲起。
    首先,串口最初有9针和25针的接头,各种引脚的定义如下
                9 针串口(DB9) 
                针脚 简写 功能说明 
                1 CD 载波侦测(Carrier Detect) 
                2 RXD 接收数据(Receive) 
                3 TXD 发送数据(Transmit) 
                4 DTR 数据终端准备(Data Terminal Ready) 
                5 GND 地线(Ground) 
                6 DSR 数据准备好(Data Set Ready) 
                7 RTS 请求发送(Request To Send) 
                8 CTS 清除发送(Clear To Send) 
                9 RI 振铃指示(Ring Indicator)

                25 针串口针脚定义(DB25) 
                注:除以下定义外,其作针脚均为空 
                针脚 简写 功能说明 
                8 CD 载波侦测(Carrier Detect) 
                3 RXD 接收数据(Receive) 
                2 TXD 发送数据(Transmit) 
                20 DTR 数据终端准备(Data Terminal Ready) 
                7 GND 地线(Ground) 
                6 DSR 数据准备好(Data Set Ready) 
                4 RTS 请求发送(Request To Send) 
                5 CTS 清除发送(Clear To Send) 
                22 RI 振铃指示(Ring Indicator)


    很显然最开始的时候这种通信机制还不是很精简,很多信号被使用着,现在的串口已经有一套标准了,UART里的U就是通用的意思。最简化的串口只要3根信号线就可以搞定(地,发送,接受)。
    还有一个电平的变化需要解释:计算机用的是RS232C电平(1:-3~-12V,0:3~12V),一般嵌入式设备用的是TLL电平(1:5V附近,0:0V附近)。所以一般与嵌入式设备连接的时候会要用一个转换装置,USB转串就是这么一个东东。
    好了,电平说完了说说时序,古老的时候时序什么的我不就不追溯了,说说现在的,来张图先

发送数据过程:空闲状态,线路处于高电位;当收到发送数据指令后,拉低线路一个数据位的时间T,接着数据按低位到高位依次发送,数据发送完毕后,接着发送奇偶校验位和停止位(停止位为高电位),一帧资料发送结束。

接收数据过程:空闲状态,线路处于高电位;当检测到线路的下降沿(线路电位由高电位变为低电位)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备准备接收数据或存入缓存。

由于UART是异步传输,没有传输同步时钟。为了能保证数据传输的正确性,UART采用16倍数据波特率的时钟进行采样。每个数据有16个时钟采样,取中间的采样值,以保证采样不会滑码或误码。一般UART一帧的数据位数为8,这样即使每个数据有一个时钟的误差,接收端也能正确地采样到数据。

UART的接收数据时序为:当检测到数据的下降沿时,表明线路上有数据进行传输,这时计数器CNT开始计数,当计数器为24=16+8时,采样的值为第0位数据;当计数器的值为40时,采样的值为第1位数据,依此类推,进行后面6个数据的采样。如果需要进行奇偶校验,则当计数器的值为152时,采样的值即为奇偶位;当计数器的值为168时,采样的值为"1"表示停止位,一帧数据接收完成。
参考博文:http://blog.sina.com.cn/s/blog_3e6ed8f90100mkv0.html




阅读(6885) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~