串行通讯原理说明--RS232-UART.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
为电缆增加屏蔽缩短了最大长度,但是屏蔽有时对于阻止噪声混入电缆或者从电缆中“溢出〞是需要的。对于屏蔽的双绞线,建议将导线到导线电容乘以3以便把导线到屏蔽的电容考虑在内。 ?? 因此计算屏蔽导线的电缆长度的公式如下: ?? 电缆长度=(2500—接受器输入电容)/(电缆电容×3) ?? 电缆长度的单位为ft,输入电容的单位是pF,电缆电容的单位是pF/ft。 这就将屏蔽双绞线电缆的最大长度削减到66 ft。 5.3〕 双绞线 5.4〕 电缆测试结果 RS-232-C标准规定,在码元畸变小于4%的情况下,传输电缆长度应为50 英尺〔约15米〕,其实这个4%的码元畸变是很保守的,在实际应用中往往按码元畸变10-20%的范围工作的,所以最大距离会远超过15米。 波特率bps 110 ? 1500?? 900 300 1500 900 1200 900 900 2400 ?300? 150 4800 ?300? 75 9600 75? 75 ? 6. 串口通信功能的实现 单片机实现串口通讯一般使用UART接口或利用GPIO口模仿异步串行通讯数据格式,外加驱动芯片连接RS-232口。 1. 翻开串口 以下程序用于以同步方式翻开串口COM1; HANDLE hCom; DWORD dwErrorHcomm=CreateFile(“COM1〞,GENERIC_READ|GENERIC_WRITE ,0, NULL,OPEN_EXISTING, 0, NULL); if (hComm==(HANDLE)0Xffff) { dwError=GetLastError(); MessageBox(dwError); } 2. 配置串口 配置串口是通过改变设备控制块DCB(Device Control Block)的成员变量值来实现的,程序实现如下: DCB dcb dcb.BaudRate=9600;//波特率为9600bps dcb.ByteSize=8;//数据位8位 dcb.Parity=EVENPARTTY;//有校验 dcb.StopBits=ONESTOPRTT; //一个停止位 SetCommState(hCom,dcb); 3. 数据读写 bReadStatus=ReadFile(hCom,buffer,length,length m_lpOverlapped); if(!bReadStatus) { if(GetLastError()=ERROR_IO_PENDING) { WaitForSingleObject(m_lpOverlapped,hEvent,1000); return((char)length); } return 0; } bWriteStatus=WriteFile(hCom,buffer,length,length,m_lpOverlapped) if(!bWriteStatus) { if(GetLastError()=ERROR_IO_PENDING) { WaitForSingleObject(m_lpOverlapped, hEvent,1000); return((char)length); } return 0; } 4. 程序的编制 用VC++进行程序的编制首先要对串口进行初始化,设定端口,通信速率和校验方式,并在使用前翻开串口,程序局部如下: { Cdialog::OnInitDialog();//TOD Add extra initialization here m_comm.SetCommPort(1);//选择串口1 if(! m_comm.GetPortOpen()) m_comm.SetPortOpen(TRUE);//翻开串口1 m_comm.SetSettings(“9600,n,8,1〞); //设置串口参数 m_comm.SetRThreshold(1); m_comm.SetInputMode(1);//设置二进制模式 return TRUE; } 除了串口的位置和根本串口参数(数据传输速率9600bps,1位开始位,8位数据位,1位停止位,一位奇偶校验)设置 外,为了实现实时数据采集功能,接受数据的读写要尽可能的快速,那么设置RTHreshold=1即接收缓冲区收到一个字节产生OnComm事件 InputLen=1每次读取一个字节。如果PC上位机在一定时间内不能将数据处理完,接收缓冲区会滞留数据,数据会产生丧失现象,我们必须对接受缓冲区 进行适当的设置。RS-232 的缺陷及改良 由于RS-232标准开发较早,使用的是当时流行的DTL技术,随着技术的进步,越老越显露出其局限。 7.1〕RS-232 的缺陷 7.2〕RS-422/485接口 为弥补其技术缺陷,后来又在其根底

文档评论(0)

mmc566887 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档