📄 windowsce_net 420串口驱动分析(1)--jesse.htm
字号:
<DIV align=left>
<SCRIPT
src="windowsCE_net 420串口驱动分析(1)--jesse.files/show_newmessage.htm"></SCRIPT>
</DIV></DIV></TD></TR></TBODY></TABLE><BR>
<TABLE height=36 width="95%" border=0>
<TBODY>
<TR>
<TD><STRONG>链接</STRONG></TD></TR>
<TR>
<TD height=15>
<DIV align=left>
<SCRIPT
src="windowsCE_net 420串口驱动分析(1)--jesse.files/show_links.htm"></SCRIPT>
<SCRIPT
src="windowsCE_net 420串口驱动分析(1)--jesse.files/ad_userlinks.htm"></SCRIPT>
</DIV></TD></TR></TBODY></TABLE><BR>
<TABLE width="95%" border=0>
<TBODY>
<TR>
<TD><STRONG>Blog信息</STRONG></TD></TR>
<TR>
<TD>
<DIV align=left>
<SCRIPT
src="windowsCE_net 420串口驱动分析(1)--jesse.files/show_info.htm"></SCRIPT>
</DIV></TD></TR></TBODY></TABLE>
<P align=center>
<SCRIPT
src="windowsCE_net 420串口驱动分析(1)--jesse.files/show_xml.htm"></SCRIPT>
<BR></P>
<DIV align=center></DIV>
<DIV align=center><BR></DIV></TD></TR></TBODY></TABLE></TD>
<TD vAlign=top align=middle><BR><BR>
<DIV id=saveurl><A
href="http://www.embeddedhelp.com/oblog/user1/6/index.html">首页</A> | <A
href="http://www.embeddedhelp.com/oblog/go.asp?action=up&logid=10&userid=6">上一篇</A>
| <A
href="http://www.embeddedhelp.com/oblog/go.asp?action=down&logid=10&userid=6">下一篇</A></DIV>
<TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=1
cellPadding=3 width="98%" bgColor=#cccccc border=0>
<TBODY>
<TR bgColor=#f8f8f8>
<TD><FONT
size=4><STRONG>windowsCE.net 420串口驱动分析(1)</STRONG></FONT><BR>jesse
发表于 2005-10-9 13:03:36 </TD></TR>
<TR bgColor=#ffffff>
<TD height=0>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<P><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虽然串口通讯已经是普遍的标准而且广为大家熟知,但驱动中涉及的部分内容也可能在平时的应用中并不是很常用到,在这里做一个简单的介绍待后面说明到具体代码的时候可以连贯一些。</SPAN>
</P>
<P class=MsoBodyText><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">串行通讯接口是目前十分流行的通讯接口之一。由于其电气界面的简单性使其在计算机领域的应用相当的广泛。在这里提到的串行通讯接口主要是指</SPAN><SPAN
lang=EN-US>UART(</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通用串行</SPAN><SPAN
lang=EN-US>)</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</SPAN><SPAN
lang=EN-US>IRDA</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">两种。通常的串行连接电气连接上有</SPAN><SPAN
lang=EN-US>3wire</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</SPAN><SPAN
lang=EN-US>9wire</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">两种。</SPAN><SPAN
lang=EN-US>3wire</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的接线方式下定义了发送、接收和地三根连接。其用途就如名称一样分别用于发送、接收。下面是通常</SPAN><SPAN
lang=EN-US>3wire</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">连接的结构框图</SPAN>
</P>
<P class=MsoBodyText><SPAN lang=EN-US><V:SHAPETYPE
id=_x0000_t75><V:STROKE></V:STROKE><V:FORMULAS><V:F></V:F><V:F></V:F><V:F></V:F><V:F></V:F><V:F></V:F><V:F></V:F><V:F></V:F><V:F></V:F><V:F></V:F><V:F></V:F><V:F></V:F><V:F></V:F></V:FORMULAS><V:PATH></V:PATH><O:LOCK
v:ext="edit"
aspectratio="t"></O:LOCK></V:SHAPETYPE></SPAN></P>
<P class=MsoBodyText><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><IMG
height=300
src="windowsCE_net 420串口驱动分析(1)--jesse.files/o_Image1.jpg"
width=350> <BR><BR>通常在串行接口控制器上会有两个</SPAN><SPAN
lang=EN-US>FIFO</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用作接收和发送的缓冲,当接收到数据后会直接将接收到的数据置入该缓冲器,并同时由控制电路向本地总线发出通知,以便让本地总线将缓冲器内的数据读走,这样在响应</SPAN><SPAN
lang=EN-US>(</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等待和读取</SPAN><SPAN
lang=EN-US>)</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的过程中仍然能通过缓冲器来接收数据。而发送发送的过程刚刚相反,本地总线可一直向发送缓冲写入数据直到器填满为止,而无需对每个数据的发送进行等待。这就是基本的收发流程</SPAN><SPAN
lang=EN-US>(</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这部分逻辑流程相信大家是最熟悉的</SPAN><SPAN
lang=EN-US>)</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。这一点在</SPAN><SPAN
lang=EN-US>3wire</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</SPAN><SPAN
lang=EN-US>9wire</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中都是相同的。但是我们考虑下面的情况,如果接收一方的响应由于某种原因的干扰</SPAN><SPAN
lang=EN-US>(</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如处理器被其他中断服务占用</SPAN><SPAN
lang=EN-US>)</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的时候可能就来不及相应之前</SPAN><SPAN
lang=EN-US>ReceiveFIFO</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就可能被填满了,这样后续发送过来的数据就会丢失,这样在需要数据可靠传输的情况下串行通讯的弊端也就显示出来了。如需要数据的可靠传输就需要对数据流的收发进行控制。在</SPAN><SPAN
lang=EN-US>9wire</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中将串行连接定义为如下形式。</SPAN>
</P>
<P>
<TABLE class=MsoNormalTable
style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN-LEFT: 45pt; BORDER-LEFT: medium none; WIDTH: 405.4pt; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext"
cellSpacing=0 cellPadding=0 width=541 border=1>
<TBODY>
<TR
style="HEIGHT: 4.85pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes">
<TD
style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 35.4pt; COLOR: #ffffff; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 4.85pt; mso-border-alt: solid windowtext .5pt"
vAlign=top width=47>
<P class=MsoNormal
style="MARGIN-LEFT: 0cm; MARGIN-RIGHT: 0cm; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"
align=center><SPAN
style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-bidi-language: AR-SA">针号<SPAN
lang=EN-US><O:P></O:P></SPAN></SPAN> </P></TD>
<TD
style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 41.1pt; COLOR: #ffffff; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 4.85pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt"
vAlign=top width=55>
<P class=MsoNormal
style="MARGIN-LEFT: 0cm; MARGIN-RIGHT: 0cm; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"
align=center><SPAN lang=EN-US
style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-bidi-language: AR-SA">1<O:P></O:P></SPAN>
</P></TD>
<TD
style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 41.1pt; COLOR: #ffffff; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 4.85pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt"
vAlign=top width=55>
<P class=MsoNormal
style="MARGIN-LEFT: 0cm; MARGIN-RIGHT: 0cm; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"
align=center><SPAN lang=EN-US
style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-bidi-language: AR-SA">2<O:P></O:P></SPAN>
</P></TD>
<TD
style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 41.1pt; COLOR: #ffffff; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 4.85pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt"
vAlign=top width=55>
<P class=MsoNormal
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -