网站大量收购独家精品文档,联系QQ:2885784924

[工学]5SCI串行通信接口.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]5SCI串行通信接口

* 二、RS-422/RS-423接口标准 1.特点: (1)采用平衡发送器和差动接收器,由于是双线传输,大大提高了抗共模干扰的能力。 (2)传输速率 10Mbps(15m时), 90Kbps(1200m时) 半双工通信,所需电缆线数量少(2根)。 从机接收端有发送使能控制引脚。从机的接收使能可不用。 * 全双工(Full Duplex) 数据的发送和接收分别由两根可以在两个不同的站点同时发送和接收的传输线进行传送,通信双方都能在同一时刻进行发送和接收操作,选择的传送方式称为全双工制。 与RS485相比,差别仅在于RS422为全双工通信。 需要4根电缆线,无机械接口标准。发送和接受需交叉连接。 驱动器和接收器数量主要由接口芯片的驱动能力决定。 * RS485: VA-VB 0.2V 逻辑“1” VA-VB - 0.2V 逻辑“0” 实际差动输出:最小 ±1.5V , 最大±6V RS232采用负逻辑电平: -5V~-15V 规定为逻辑 “1” +5V~+15V 规定为逻辑 “0” 1、近距离连接(15m) 只用3条线(发送线TXD,接收线RXD,信号地线) 2.远距离连接(15m) 1)需用MODEM和专用电话线 2)需用2~9条信号线(在接口与MODEM之间) * HDPLX引脚仅用于RS485/422模式选择。 DTE(Data Terminal Equipment)数据终端 DCE(Data Communications Equipment)数据通信装置 RTS:Request to send (DTE ready) CTS: Clear to send (DCE ready) * 实验中使用SCIB。 通过CPLD芯片来配置通信模式。 * * 本例为查询方式。 * 同样,此时为查询方式。 * 此处,接收中断的功能可补充。 * * 发送采用查询方式,接收可选中断或查询方式。 * * PC机用±12V给串口供电,因此计算机的TxD引脚电平为±10V;而MAX3160采用±5V供电,RxD引脚的电平为±5V。 串口的起始位为0,停止位为1,根据波特率可计算出每个比特的周期。 RS232为负逻辑电平,MAX3160为:1~-5V,0~5V。 * * 发送数据完成 //************************************************************** name: int SciaTx_Ready(void) input: none output: i=1: ready;i=0: busy //************************************************************** int ScibTx_Ready(void) { unsigned int i; if(ScibRegs.SCICTL2.bit.TXRDY == 1) { i = 1; } else { i = 0; } return(i); } * 接受数据准备好 //************************************************************* name: int SciaRx_Ready(void) input: none output: i= 1: new data 0: none //************************************************************* int ScibRx_Ready(void) { unsigned int i; if(ScibRegs.SCIRXST.bit.RXRDY == 1) { i = 1; } else { i = 0; } return(i); } * 中断服务程序 interrupt void SCIRXINTB_ISR(void) // SCI-B { PieCtrl.PIEACK.bit.ACK9 = 1; if(ScibRx_Ready() == 1) { Sci_VarRx[j] = ScibRegs.SCIRXBUF.all; Send_Flag = 1; j++; if(j == 100) { j = 0; } } } interrupt void SCITXINTB_ISR(void) // SCI-B { PieCtrl.PIEACK.bit.ACK9 = 1; …… } * SCI测

文档评论(0)

ipbohn97 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档