wince操作系统中串口驱动分析
2013-05-12 14:51
309 查看
虽然串口通讯已经是普遍的标准而且广为大家熟知,但驱动中涉及的部分内容也可能在平时的应用中并不是很常用到,在这里做一个简单的介绍待后面说明到具体代码的时候可以连贯一些。
串行通讯接口是目前十分流行的通讯接口之一。由于其电气界面的简单性使其在计算机领域的应用相当的广泛。在这里提到的串行通讯接口主要是指UART(通用串行)和IRDA两种。通常的串行连接电气连接上有3wire和9wire两种。3wire的接线方式下定义了发送、接收和地三根连接。其用途就如名称一样分别用于发送、接收。下面是通常3wire连接的结构框图通常在串行接口控制器上会有两个FIFO用作接收和发送的缓冲,当接收到数据后会直接将接收到的数据置入该缓冲器,并同时由控制电路向本地总线发出通知,以便让本地总线将缓冲器内的数据读走,这样在响应(等待和读取)的过程中仍然能通过缓冲器来接收数据。而发送发送的过程刚刚相反,本地总线可一直向发送缓冲写入数据直到器填满为止,而无需对每个数据的发送进行等待。这就是基本的收发流程(这部分逻辑流程相信大家是最熟悉的)。这一点在3wire和9wire中都是相同的。但是我们考虑下面的情况,如果接收一方的响应由于某种原因的干扰(如处理器被其他中断服务占用)的时候可能就来不及相应之前ReceiveFIFO就可能被填满了,这样后续发送过来的数据就会丢失,这样在需要数据可靠传输的情况下串行通讯的弊端也就显示出来了。如需要数据的可靠传输就需要对数据流的收发进行控制。在9wire中将串行连接定义为如下形式。
[align=left][/align]
[align=center]针号 [/align] | [align=center]1 [/align] | [align=center]2 [/align] | [align=center]3 [/align] | [align=center]4 [/align] | [align=center]5 [/align] | [align=center]6 [/align] | [align=center]7 [/align] | [align=center]8 [/align] | [align=center]9 [/align] |
[align=center]缩写 [/align] | [align=center]DCD [/align] | [align=center]RXD [/align] | [align=center]TXD [/align] | [align=center]DTR [/align] | [align=center]GND [/align] | [align=center]DSR [/align] | [align=center]RTS [/align] | [align=center]CTS [/align] | [align=center]DELL [/align] |
[align=center]功能说明 [/align] | [align=center]数据载波检测 [/align] | [align=center]接收数据 [/align] | [align=center]发送数据 [/align] | [align=center]数据终端就绪 [/align] | [align=center]信号地 [/align] | [align=center]数据设备就绪 [/align] | [align=center]请求发送 [/align] | [align=center]清除发送 [/align] | [align=center]振铃指示 [/align] |
to send)引线。这样,收发双发就进入数据传输状态,在此过程中如若接收端处理数据的速度低于发送端的发送速度,接收一端还可以设置CTS引线恢复原来阻塞得状态以暂时中断数据传输,之后若需要恢复数据传输恢复CTS状态即可。这样UART的传输即实现了流控制,保障了数据传输的完备性。
在这里还要说一下软件流控制,虽然硬件已经可以完成流控制的任务但很多少时候受到连线数的限制不能使用硬件流控制也就设计了专门的软件流控制的方法。现在回到3线传输的情景,若接收端接收数据过程中缓冲器的负载到达某一限制(也就是留出一定的缓冲空间)时接收端向发送端发送一个特殊的标示位(接收停止位),当发送端收到该标示的时候就停止发送,直到接收端缓冲器低于另一限制后发送标示(接收许可位)给发送端,这样就可以控制数据流的传输起停。这种软件流控制是在给缓冲器留余量来完成的,在收发双端处理器速度差很大的时候就不太适用了,就必须要用硬件流控制
其他几个引脚都是与modem相关的,DSR数据装置准备好(Data set ready)用于表明MODEM处于可以使用的状态。DTR数据终端准备好(Data terminal ready)表明数据终端可以使用。这两个信号用于检查Modem是否连接。DELL脚当有电话拨入时Modem将会设置这个引脚。DCD信号是当Modem接收到数字载波信号的时候被设置,用于了解Modem接收信号的情况。
至于剩下的奇偶效验和停止位设置就只是需要针对寄存器设置无需软件干涉就可以完成了。下面我们来看具体的驱动程序。
[align=left][/align]
[align=left] [/align]
[align=left]架构[/align] |
相关文章推荐
- WINCE官方提供的串口驱动PDD层代码简单分析
- WINCE串口驱动PDD层代码简单分析
- WINCE串口驱动PDD层代码简单分析
- WINCE官方提供的串口驱动PDD层代码简单分析
- WinCE串口驱动分析(转)
- 转:WinCE6.0 串口驱动分析
- WinCE串口驱动分析
- WINCE串口驱动PDD层代码简单分析
- wince驱动-串口分析-mdd,mddcommon,pdd
- WinCE串口驱动PDD层代码简单分析
- WINCE 串口驱动相关一些函数分析
- wince 串口驱动分析
- wince 2440串口驱动PDD分析(作者:wogoyixikexie@gliet)
- MapPtrToProcess 用法 WINCE驱动分析3 转
- Linux串口驱动分析write
- 串口驱动分析 (转)
- linux串口驱动分析
- linux串口驱动分析