第七章串口通信原理与应用ppt课件.ppt

上传人:牧羊曲112 文档编号:2105821 上传时间:2023-01-11 格式:PPT 页数:67 大小:2.84MB
返回 下载 相关 举报
第七章串口通信原理与应用ppt课件.ppt_第1页
第1页 / 共67页
第七章串口通信原理与应用ppt课件.ppt_第2页
第2页 / 共67页
第七章串口通信原理与应用ppt课件.ppt_第3页
第3页 / 共67页
第七章串口通信原理与应用ppt课件.ppt_第4页
第4页 / 共67页
第七章串口通信原理与应用ppt课件.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《第七章串口通信原理与应用ppt课件.ppt》由会员分享,可在线阅读,更多相关《第七章串口通信原理与应用ppt课件.ppt(67页珍藏版)》请在三一办公上搜索。

1、第7章 串口通信原理与应用,本章内容,串口通信原理,S5PV210的UART通信概述,S5PV210的UART功能寄存器,用UART实现发送和接收数据,4,1,2,3,教学大纲要求,串口通信原理:串口通信的重要参数、串口通信接口和通用异步接收器和发送器。,S5PV210的UART功能寄存器,包括控制寄存器和操作寄存器,UART通信程序编写和分析。,了解,理解,掌握,本章内容,串口通信原理,S5PV210的UART通信概述,S5PV210的UART功能寄存器,用UART实现发送和接收数据,4,1,2,3,7.1 串口通信原理,7.1.1 串口通信的重要参数,波特率,数据位,停止位,奇偶校验,重要

2、参数,1.波特率,高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。,衡量通信速率的参数,表示每秒传输的位的个数。,通信电话线的波特率为14400、28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。,例如,300波特率表示每秒发送300个位。,2.数据位,每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。,衡量通信中实际数据位的参数。,如何设置取决于想传输的信息。比如,标准的ASCII码是0-127(7位),扩展的SCII码是0-255(8位)。,当计算机发送一个信息包,标准的值是5、6、7和8位。,3.停止位,用于表示单个包的最后一位

3、。,注意,2.使用的停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。,1.典型的值为1、1.5和2位。,4.奇偶校验位,例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1。,在串口通信中一种简单的检错方式。,对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值来确保传输的数据有偶数个或者奇数个逻辑高位。,有四种检错方式:偶、奇、高和低,当然没有校验位也是可以的。,7.1.2 串行通信接口,7.1.2 串行通信接口,7.1.2 串行通信接口,RS-232-C DB-9各引脚定义:,CD:载波检测RXD:接

4、收数据线TXD:发送数据线DTR:数据终端就绪SG:信号线DSR:数据设备就绪RTS:请求发送CTS:清除发送RI:振铃提示,RS-232-C远距离通信系统,本章内容,串口通信原理,S5PV210的UART通信概述,S5PV210的UART功能寄存器,用UART实现发送和接收数据,4,1,2,3,7.1.3 通用异步接收器和发送器(UART),UART支持比特率高达3Mbps,每个UART通道包含两个FIFO用来接收和发送数据,其中,UART0支持接收/发送独立的256字节FIFO,UART1支持64B的FIF0,UART2、3、均支持16B的FIFO。,S5PV210提供4个基于DMA或中断

5、的操作的独立异步串行I/O端口,UART可以通过产生中断或DMA请求来进行CPU和UART之间的数据传输。,UART是一种通用串行数据的总线,用于异步通信,该总线双向通信,可以实现全双工传输和接收。,特点,7.1.3 通用异步接收器和发送器(UART),发送器和接收器包含了FIFO和数据移位器。,每个UART包含一个波特率发生器、发送器、接收器和一个控制单元。,S5PV210的UART包括可编程波特率,红外发射器/接收器,插入1个或2个停止位,5位、6位、7位或8位的数据宽度以及奇偶校验。,特点,UART结构图,1.数据传输模式,回环模式,中断或轮询,DMA模式,(此模式仅用于测试,不用做传输

6、数据)。S5PV210的UART提供了一个参考环回模式测试模式,有助于排除在通信连接中的故障。通过设置UART控制寄存器中的环回位来选择此模式。,当有数据到来或数据可发送时产生中断,通知CPU。这种方式要求通信硬件比较高,需要支持产生中断信号。,通常实现数据的转移或复制时,CPU将从源地址复制数据到寄存器,然后将寄存器数据再写入到目的地址处,这个操作是由CPU来执行。,2.数据发送,发送的数据帧是可编程的,包括一个开始位,5-8个数据位,一个可选的奇偶位和1-2个停止位,其可由线性控制寄存器ULCONn来设置。发送器也可以产生一个终止条件,其可以对一个发送时间强制串行输出为逻辑0。在当前发送字

7、被完全传输完以后,该模块发送一个终止信号。在终止信号发送后,其不断发送数据到Tx FIFO中。,UART数据帧格式,3.数据接收,溢出错误,奇偶校验错误,帧错误,终止条件,是指在旧数据被读取新数据覆盖了旧数据,是指接收器侦测到一个不希望的奇偶条件。,是指接收到的数据没有一个有效的停止位。,是指RxDn输入保持逻辑0状态长于一个帧的传输时间。,4.波特率,每个UART波特率发生器为发送器和接收器提供串行时钟。存储在波特率除数寄存器和分槽寄存器的值使用来确定串行Tx/Rx时钟速率。DIV_VAL=UBRDIVn+(numof1s in UDIVSLOTn)/16DIV_VAL=(PCLK/(bps

8、*16)-1DIV_VAL=(SCLK_UART/(BPS*16)-1,举例:,如果波特率是115200bps且SLCK_UART时钟是40MHz,UBRDIVn和UDIVSLOTn的值为:DIV_VAL=(40000000/(115200*-16)-1=21.7-1UBRDIVn=20(DIV_VAL的整数部分)(UDIVSLOTn中1的数量)/16=0.7则(UDIVSLOTn中1的数量)=11,本章内容,串口通信原理,S5PV210的UART通信概述,S5PV210的UART功能寄存器,用UART实现发送和接收数据,4,1,2,3,7.2 S5PV210的UART功能寄存器,行控制寄存器

9、(ULCONn),控制寄存器(UCONn),FIFO控制寄存器(UFCONn),UART功能寄存器,MODEM控制寄存器(UMCONn),接收发送状态寄存器(UTRSTATn),FIFO状态寄存器(UFSTATn),MODEM状态寄存器(UMSTATn),发送缓存寄存器(UTXHn),接收缓存寄存器(URXHn),波特率除数寄存器(UBRDIVn),错误状态寄存器(UERSTARn),分槽寄存器(UDIVSLOTn),初始化用到的寄存器有:ULCONn、UCONn、UFCONn、UMCONn、UBRDIVn、UDIVSLOTn。收到用到的寄存器有:UTRSTATn、UTXHn、URXHn。以下

10、就对这几个寄存器相应的参数进行详细说明。,7.2.1 UART控制寄存器,1.UART行控制寄存器通过设置ULCONn来设置UART的通信方式,是否使用红外,数据帧中奇偶校验类型、停止位的个数、和数据位的位数。,S5PV210中有4个UART,所以行控制寄存器也四个分别是ULCON0、ULCON1、ULCON2、ULCON3,如表所示:一般的正常通信模式下,通常设置为无奇偶校验位、1个停止位、8个数据位,则ULCONn设置为0 x3。,2.UART控制寄存器(UCONn)UCONn控制寄存器当选择有FCLK提供时钟频率时的分频除数、时钟选择、发送接收终端产生类型、发送接收模式等。下表为UCON

11、n的详细设置表。,3.FIFO控制寄存器(UFCONn)UFCONn FIFO控制寄存器用来设置是否使能FIFO、发送接收FIFO触发级别、是否自动清空缓冲区。下表为UFCONn寄存器的设置位。,4.UART MODEM控制寄存器(UMCONn)UMCONn寄存器设置时有启用AFC自动流控,通常不使用AFC自动流控,所以通常设置为0,UMCONn寄存器详细位可参看数据手册。,5.UART波特率除数寄存器和UART分槽寄存器UBRDIVn寄存器和UDIVSLOTn寄存器用来决定波特率。,7.2.2 UART操作寄存器,1.UART接收发送状态寄存器(UTRSTATn)UTRSTATn寄存器用于记

12、录UART发送和接收的状态,其中包括发送器是否为空、发送缓冲寄存器是否为空。如下表所示:,2.UART发送、接收缓冲寄存器UTXHn、URXHn寄存器用于缓冲发送和接收的数据,因为数据存储分为大端模式和小端模式。UTXHn发送缓冲寄存器为只写寄存器、URXHn接收寄存器为只读寄存器。,本章内容,串口通信原理,S5PV210的UART通信概述,S5PV210的UART功能寄存器,用UART实现发送和接收数据,4,1,2,3,7.3 UART通信实例(一),7.3.1 查看电路连接图,通常使用的串口是RS-232,在RS-232标准中定义了逻辑1和逻辑0电压级数,以及标准的传输速率和连接器类型。,

13、专用芯片SP3232,用于实现RS-232串行数据通信接口和TTL兼容的数字逻辑电路之间的电平转换,提供了两路双向的接收发送驱动器,可以同时对Rx、Tx、CTS和RTS思路信号进行转换。,串口的连接通常使用简单连接方式,只连接三根线,即发送、接收和信号地线,需要连接RSTXD0、RSRXD0、GND三根线。由图可知TXD0和GPA0_1引脚连接,RXD0和GPA0_0引脚连接。,7.3.2 翻查数据手册,查看数据手册中GPIO中A0组中两个引脚的设置。图中TXD0、RXD0和GPA0复用一个引脚,所以使用之前一定要设置引脚的功能。,7.3.4 编写程序,1.初始化在程序运行之前一定要对相关的寄

14、存器进行初始化,下面的uart_init函数是对UART相关寄存器进行初始化,clock_init函数是对clock相关寄存器进行初始化。,void uart_init()GPA0CON,/*波特率计算:115200bps*PCLK=66MHz*DIV_VAL=(66000000/(115200 x 16)-1=35.8-1=34.8*UBRDIV0=34(DIV_VAL的整数部分)*(num of 1s in UDIVSLOTn)/16=0.8(DIV_VAL的小数部分)*(num of 1s in UDIVSLOTn)=12*UDIVSLOT0=0 xDDDD(在数据手册上880页查表)*

15、/UBRDIV0=34;/波特率分度值 UDIVSLOT0=0 xDDDD;,void uart_send_byte(unsigned char byte)while(!(UTRSTAT0,(3)主函数int main()char byte;GPC1CON,程序入口:.global _start_start:bl clock_initbl uart_initbl mainhalt:b halt,下面介绍如何把本实例的目标bin文件制作成类u-boot启动的目标bin文件。因为u-boot启动分两个阶段BL1和BL2启动,iROM在加载BL1时会校验BL1的头信息,规定如下:0 x0:BL1的大

16、小(最大16KB-16B)0 x4:0规定0 x8:BL1的校验和。0 x16:0规定。,在生成源bin后,还需要添加16B的头信息,制作成类u-boot的目标bin文件。具体读者还需要详细了解BootLoader的启动过程。为了给源bin文件头加入16B的头信息,编写文件addtopinfo.c,具体烧写到SD卡的流程如下:(1)执行如下命令生成addtopinfo(#表示在Shell命令行下执行)。#gcc addtopinfo.c o addtopinfo(2)然后用addtopinfo制作带有头信息的bin文件。#./addtopinfo source.bin dest.bin(3)如

17、果在虚拟机下运行Linux,就将SD卡插入SD读卡器,将鼠标移到虚拟机中,然后将SD卡读卡器插入计算机,这是Linux中将自动挂载SD卡。如果再实体机下运行Linux,就直接把SD卡读卡器插入主机,如果没有自动挂载,就手动用mount命令挂载。#mount/dev/adb1/mnt,(4)在Linux中执行df查看分区信息。#df Filesystem 1K-blocks Used Available Use%Mounted on/dev/sdb1 3864000 4 3863996 1%/mntSdb1是SD卡的第1个分区。(5)执行命令烧写dest.bin到SD的第1块。(6)拔下SD卡,

18、将其插入开发板,然后拨动启动选择开关,选择从SD启动,上电后,看到逻辑程序现象。,7.4 UART通信实例(二),在实例一中实现了串口的基本通信功能,下面在实例二使用按键通过串口传输命令来控制LED。在此程序中需要建立四个文件,分别是start.S key.c uart.c clock.c。在uart.c和clock.c中主要包含五个函数:clock_init()uart_init()uart_send_byte()uart_send_byte()uart_recv_byte()这几个函数与实例一相同,在此不再叙述。在start.S中定义一个程序入口。,start.S,.global _sta

19、rt 声明一个全局的标号.global key_isr _start:设置栈,以调用c函数 bl clock_init bl uart_init 开总中断 mrs r0,cpsr 读取cpsr寄存器中的值到r0 bic r0,r0,#0 x00000080 清除第7位,IRQ中断禁止位,写0使能IRQ msr cpsr,r0;把修改好的r0的值重新协会cpsr bl main;跳转到C函数去执行,halt:b halt key_isr:;计算返回地址:PC的值等于当前执行的地址+8,当CPU正要执行某条指令时(还未执行),被中断,;这是这条刚要执行的指令的地址刚好=PC-4 sub lr,lr

20、,#4 stmfd sp!,r0-r12,lr;保护现场 bl key_handle;恢复现场 ldmfd sp!,r0-r12,pc;表示把spsr恢复到cpsr,void key_handle()volatile unsigned char key_code=EXT_INT_0_PEND/*LED1 OFF*/,else if(key_code=4)/*key3*/key=3;GPC1DAT|=1 4;/*LED2 ON*/else if(key_code=8)/*key4*/key=4;GPC1DAT,int main()GPC1CON/*使能外部中断EXT_INT0-EXT_INT3*

21、/,VIC0VECTADDR0=(int)key_isr;/*当EXT_INT0触发中断,即用户按下key1时,CPU就会自动的将VIC0VECTADDR0的值赋给VIC0ADDRESS并跳转到这个地址去执*/VIC0VECTADDR1=(int)key_isr;VIC0VECTADDR2=(int)key_isr;VIC0VECTADDR3=(int)key_isr;uart_send_string(rnKey and Uart Testrn);while(1);return 0;,Makefile文件编写和烧写过程请参考7.3.4节。将程序烧写到SD卡上,上电从SD卡自动运行,按下按键,控制相应LED灯的亮灭,并且能够在终端上显示那个键被按下。显示结果:#Starting application at 0 xD0020010Key and Uart Test You are pressed key:1You are pressed key:2You are pressed key:3,本章小结,介绍了S5PV210中的UART模块的功能和特点,给出了运用UART实现嵌入式系统与PC通信的方法。,主要就查询方式的串口收发数据进行分析。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号