串行通信原理与应用_第1页
串行通信原理与应用_第2页
串行通信原理与应用_第3页
串行通信原理与应用_第4页
串行通信原理与应用_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

串行通信原理及应用让计算机相互通信!HOW?1什么是通信两个设备之间交换数据的过程我们称之为通信单工双工AB2通信的方式从同时传输的数据位数来分为:1、并行通信(Parrel)2、串行通信(Serial)3串并行方式各自特点相对快相对慢短远贵廉价4如何并行通信(有时间再讲)DB0-DB7WRRDCSALE信号等举例:内存的写数据过程(两部分)。通过时序图让学生明白CLKA[15:0]ALEWRPhase2Phase1AddressD[7:0]Data5如何串行通信就用极少的数据线就能实现数据通信,那么是如何实现的呢?桢的概念:起始位,数据位,速率(波特率),应答位或停止位。举例说明6串行通信桢格式7常见的串行通信协议

名称特点USARTUSBI2CCAN用途PC与MCUPC与MCUMCU之间MCU之间特点简单快,

可靠简单复杂,可靠USARTPC与MCU简单8USART特点支持同步串行通信和异步串行通信支持全双工桢格式可编程9串行输出原理10串行输入原理11PIC的USART结构起始位数据停止位接收发送起始位停止位起始位TXEN0111TXIF接收缓冲寄存器波特率发生器RCIF88SPEN10波特率发生器SPEN发送缓冲寄存器1发送移位寄存器01接收移位寄存器0停止位(教材89页)图3-9USART异步传送模式结构原理及时序图12串行通信时必须要考虑的问题硬件如何连接?

传输速度是多少?

通信格式是什么样的?

要发送或接收的数据放在哪里?

如何判断发送或接收完毕?13MCU通过UART与PC连接图+5V代表10V代表0+12V代表1-12V代表0TXPCMAX232电平转换器+12V/-12V+5V/0VRX14寄存器设置PORTC<6>:TXDTransmitterPORTC<7>:RXDReceiverRXSTA<SPEN>:1b7b6b5b4B3b2b1b0SPENRX9SRENCRENADDENFERROERRRX9Db7SPEN15考虑传输速率问题可能出现设备之间的主频不同的情况,为了解决这个问题,两个设备之间必须协商通信速率。对于UART而言,传输速率是两个设备之间预先协商好的,通过设置相应寄存器来实现。16传输速率相关寄存器及标志位波特率发生寄存器:SPBPG(99H)高波特率标志位:BRGH@TXSTA<2>同步收发标志位:SYNC@TXSTA<4>常用SPBPG的值:当主频是4Mhz时,

速度希望采用9600bps进行异步通信则SPBRG=25,BRGH=1,SYNC=017串行通信格式图相关寄存器有两个:TXSTA:发送控制寄存器RCSTA:接收控制寄存器18TXSTA(98H):发送控制寄存器765432100TX9TXENSYNC0BRGH0TX9D功能:

控制UART发送数据的格式19TXSTA(98H):发送控制寄存器765432100TX9TXENSYNC0BRGH0TX9D9位发送使能发送使能同步模式使能高波特率使能发送位第9位无用位,清020TXSTA(98H):发送控制寄存器7bit6bit5bit43bit2bit1bit0CSRCTX9TXENSYNC-BRGHTRMTTX9D思考题:我想让PIC的USART模块采用8位数据位发送数据,异步方式,高速状态,请问TXSTA该设定何值?TXSTA=0b00100100;21RCSTA:接收控制寄存器bit7654SPENRX9SRENCREN3bit2bit1bit0ADDENFERROERRRX9D功能:

控制UART接收数据的格式和状态22RCSTA:接收控制寄存器bit76543bit2bit1bit0SPENRX90CREN0FERROERRRX9D串口使能9位使能连续接收使能桢格式错溢出错接收的第9位未用,置0思考题:我想让PIC的USART模块在异步方式下采用8位数据位接收数据,请问RCSTA该设定何值?RCSTA=0b10010000;23要发送或接收的数据放在哪里?要发送的数据放在TXREG里

收到的数据放在RCREG里

TXREG和RCREG都在0体中TXREG=‘A’;charvar=RCREG;24如何判断发送成功?对于发送而言,当一个字节发送完毕后PIR1的TXIF标志位会被自动置1,通过判断此位就可得知数据发送是否完毕,当TXREG被赋值后,TXIF自动被清空。思考题:如何用程序判断是否发送成功?PIR1:

if((PIR1&0b00010000)!=0){//TXIF=1,本次发送成功//发下一个数据或结束发送}25如何判断接收完毕?对于接收而言,当接收到一个字节后PIR1的RCIF标志位会置1,通过判断此位可得知是否收到一个数据,当RCREG被读取后,RCIF自动被清空。思考题:如何用程序判断是否接收完毕?PIR1:

if((PIR1&0b00100000)!=0){//RCIF=1,说明收到一个数据//把收到的数据读走。}26例题1电路图如上图

通过PIC16F877向PC的COM1不停的发送字符’A’,要求波特率为9600bps

8位数据位,无奇偶校验位,一位停止位,无数据流控,请编程实现。27流程图初始化串行口TXREG‘A’PIR1的TXIF位==1TXREG‘A’TRUEFALSE28程序源代码MAIN(){ RCSTA=0b10010000;SPBRG=25;TXSTA=0b00100100;TXREG=‘A’;while(1){if((PIR1&0b00010000)!=0){TXREG=‘A’;}}}//串口使能,接收使能//9600bps@4MHz//发送字符‘A’//发送使能,高波特率//发送完毕吗?//再发送一个字符‘A’//死循环,循环发送29例题2电路图如上图

用超级终端软件通过PC的COM1向PIC发送一个字符(由键盘输入),MCU收到后把此字符加一后回传给PC。要求波特率为9600bps,8位数据位,无奇偶校验位,一位停止位,无数据流控,请编程实现。30流程图初始化串行口PIR1的RXIF位==1TXREG=RCREG+1;31程序源代码MAIN(){ RCSTA=0b10010000;SPBRG=25;TXSTA=0b00100100;

while(1){if((PIR1&0b00100000)!=0){TXREG=RCREG+1;}}}//串口使能,接收使能//9600bps@4MHz//发送使能,高波特率//接收完毕吗?//

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论