串口通信原理与应用-课件_第1页
串口通信原理与应用-课件_第2页
串口通信原理与应用-课件_第3页
串口通信原理与应用-课件_第4页
串口通信原理与应用-课件_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

第7章串口通信原理与应用

1ppt课件本章内容串口通信原理

S5PV210的UART通信概述

S5PV210的UART功能寄存器

用UART实现发送和接收数据

41232ppt课件教学大纲要求串口通信原理:串口通信的重要参数、串口通信接口和通用异步接收器和发送器。S5PV210的UART功能寄存器,包括控制寄存器和操作寄存器UART通信程序编写和分析。

了解

理解

掌握3ppt课件本章内容串口通信原理

S5PV210的UART通信概述

S5PV210的UART功能寄存器

用UART实现发送和接收数据

41234ppt课件7.1串口通信原理7.1.1串口通信的重要参数波特率数据位停止位奇偶校验重要参数5ppt课件1.波特率高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。衡量通信速率的参数,表示每秒传输的位的个数。通信电话线的波特率为14400、28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。例如,300波特率表示每秒发送300个位。6ppt课件2.数据位每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。衡量通信中实际数据位的参数。如何设置取决于想传输的信息。比如,标准的ASCII码是0-127(7位),扩展的ASCII码是0-255(8位)。当计算机发送一个信息包,标准的值是5、6、7和8位。7ppt课件3.停止位用于表示单个包的最后一位。注意2.使用的停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。1.典型的值为1、1.5和2位。8ppt课件4.奇偶校验位例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1。在串口通信中一种简单的检错方式。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值来确保传输的数据有偶数个或者奇数个逻辑高位。有四种检错方式:偶、奇、高和低,当然没有校验位也是可以的。9ppt课件7.1.2串行通信接口RS232美国电子工业协会EIA在1970年指定的一种串行通信接口标准,9芯D插头。RS422采用4根数据线,加一根地线,全双工、差分传输、多点通信的数据传输协议。RS485是在RS-422的基础上,为扩大应用范围,EIA制定了RS-485标准,添加了多点、双向通信能力。10ppt课件7.1.2串行通信接口11ppt课件7.1.2串行通信接口12ppt课件RS-232-CDB-9各引脚定义:CD:载波检测RXD:接收数据线TXD:发送数据线DTR:数据终端就绪SG:信号线DSR:数据设备就绪RTS:请求发送CTS:清除发送RI:振铃提示13ppt课件RS-232-C远距离通信系统14ppt课件本章内容串口通信原理

S5PV210的UART通信概述

S5PV210的UART功能寄存器

用UART实现发送和接收数据

412315ppt课件7.1.3通用异步接收器和发送器(UART)UART支持比特率高达3Mbps,每个UART通道包含两个FIFO用来接收和发送数据,其中,UART0支持接收/发送独立的256字节FIFO,UART1支持64B的FIF0,UART2、3、均支持16B的FIFO。S5PV210提供4个基于DMA或中断的操作的独立异步串行I/O端口,UART可以通过产生中断或DMA请求来进行CPU和UART之间的数据传输。UART是一种通用串行数据的总线,用于异步通信,该总线双向通信,可以实现全双工传输和接收。特点16ppt课件7.1.3通用异步接收器和发送器(UART)发送器和接收器包含了FIFO和数据移位器。每个UART包含一个波特率发生器、发送器、接收器和一个控制单元。S5PV210的UART包括可编程波特率,红外发射器/接收器,插入1个或2个停止位,5位、6位、7位或8位的数据宽度以及奇偶校验。特点17ppt课件18ppt课件UART结构图19ppt课件1.数据传输模式回环模式中断或轮询DMA模式(此模式仅用于测试,不用做传输数据)。S5PV210的UART提供了一个参考环回模式测试模式,有助于排除在通信连接中的故障。通过设置UART控制寄存器中的环回位来选择此模式。当有数据到来或数据可发送时产生中断,通知CPU。这种方式要求通信硬件比较高,需要支持产生中断信号。通常实现数据的转移或复制时,CPU将从源地址复制数据到寄存器,然后将寄存器数据再写入到目的地址处,这个操作是由CPU来执行。20ppt课件2.数据发送发送的数据帧是可编程的,包括一个开始位,5-8个数据位,一个可选的奇偶位和1-2个停止位,其可由线性控制寄存器ULCONn来设置。发送器也可以产生一个终止条件,其可以对一个发送时间强制串行输出为逻辑0。在当前发送字被完全传输完以后,该模块发送一个终止信号。在终止信号发送后,其不断发送数据到TxFIFO中。21ppt课件UART数据帧格式22ppt课件3.数据接收溢出错误奇偶校验错误帧错误终止条件是指在旧数据被读取新数据覆盖了旧数据是指接收器侦测到一个不希望的奇偶条件。是指接收到的数据没有一个有效的停止位。是指RxDn输入保持逻辑0状态长于一个帧的传输时间。23ppt课件4.波特率每个UART波特率发生器为发送器和接收器提供串行时钟。存储在波特率除数寄存器和分槽寄存器的值使用来确定串行Tx/Rx时钟速率。DIV_VAL=UBRDIVn+(numof1’sinUDIVSLOTn)/16DIV_VAL=(PCLK/(bps*16))-1DIV_VAL=(SCLK_UART/(BPS*16))-124ppt课件举例:如果波特率是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的数量)=1125ppt课件本章内容串口通信原理

S5PV210的UART通信概述

S5PV210的UART功能寄存器

用UART实现发送和接收数据

412326ppt课件7.2S5PV210的UART功能寄存器行控制寄存器(ULCONn)控制寄存器(UCONn)FIFO控制寄存器(UFCONn)UART功能寄存器MODEM控制寄存器(UMCONn)接收发送状态寄存器(UTRSTATn)FIFO状态寄存器(UFSTATn)MODEM状态寄存器(UMSTATn)发送缓存寄存器(UTXHn)接收缓存寄存器(URXHn)波特率除数寄存器(UBRDIVn)错误状态寄存器(UERSTARn)分槽寄存器(UDIVSLOTn)27ppt课件初始化用到的寄存器有:ULCONn、UCONn、UFCONn、UMCONn、UBRDIVn、UDIVSLOTn。收到用到的寄存器有:UTRSTATn、UTXHn、URXHn。以下就对这几个寄存器相应的参数进行详细说明。28ppt课件7.2.1UART控制寄存器1.UART行控制寄存器通过设置ULCONn来设置UART的通信方式,是否使用红外,数据帧中奇偶校验类型、停止位的个数、和数据位的位数。29ppt课件S5PV210中有4个UART,所以行控制寄存器也四个分别是ULCON0、ULCON1、ULCON2、ULCON3,如表所示:一般的正常通信模式下,通常设置为无奇偶校验位、1个停止位、8个数据位,则ULCONn设置为0x3。30ppt课件2.UART控制寄存器(UCONn)UCONn控制寄存器当选择有FCLK提供时钟频率时的分频除数、时钟选择、发送接收终端产生类型、发送接收模式等。下表为UCONn的详细设置表。31ppt课件32ppt课件3.FIFO控制寄存器(UFCONn)UFCONnFIFO控制寄存器用来设置是否使能FIFO、发送接收FIFO触发级别、是否自动清空缓冲区。下表为UFCONn寄存器的设置位。33ppt课件34ppt课件4.UARTMODEM控制寄存器(UMCONn)UMCONn寄存器设置时有启用AFC自动流控,通常不使用AFC自动流控,所以通常设置为0,UMCONn寄存器详细位可参看数据手册。35ppt课件5.UART波特率除数寄存器和UART分槽寄存器UBRDIVn寄存器和UDIVSLOTn寄存器用来决定波特率。36ppt课件7.2.2UART操作寄存器1.UART接收发送状态寄存器(UTRSTATn)UTRSTATn寄存器用于记录UART发送和接收的状态,其中包括发送器是否为空、发送缓冲寄存器是否为空。如下表所示:37ppt课件38ppt课件2.UART发送、接收缓冲寄存器UTXHn、URXHn寄存器用于缓冲发送和接收的数据,因为数据存储分为大端模式和小端模式。UTXHn发送缓冲寄存器为只写寄存器、URXHn接收寄存器为只读寄存器。39ppt课件缓冲寄存器位描述初始值TXDATAn[31:8]保留--[7:0]UARTn的发送数据--RXDATAn[31:8]保留0[7:0]UARTn的接收数据0x0040ppt课件本章内容串口通信原理

S5PV210的UART通信概述

S5PV210的UART功能寄存器

用UART实现发送和接收数据

412341ppt课件7.3UART通信实例(一)IO程序编程步骤第1步查看电路连接图第2步翻查数据手册第3步确定关键定义第4步编写程序第5步实验程序42ppt课件7.3.1查看电路连接图通常使用的串口是RS-232,在RS-232标准中定义了逻辑1和逻辑0电压级数,以及标准的传输速率和连接器类型。43ppt课件44ppt课件专用芯片SP3232,用于实现RS-232串行数据通信接口和TTL兼容的数字逻辑电路之间的电平转换,提供了两路双向的接收发送驱动器,可以同时对Rx、Tx、CTS和RTS思路信号进行转换。45ppt课件串口的连接通常使用简单连接方式,只连接三根线,即发送、接收和信号地线,需要连接RSTXD0、RSRXD0、GND三根线。由图可知TXD0和GPA0_1引脚连接,RXD0和GPA0_0引脚连接。46ppt课件7.3.2翻查数据手册查看数据手册中GPIO中A0组中两个引脚的设置。图中TXD0、RXD0和GPA0复用一个引脚,所以使用之前一定要设置引脚的功能。47ppt课件7.3.4编写程序1.初始化在程序运行之前一定要对相关的寄存器进行初始化,下面的uart_init函数是对UART相关寄存器进行初始化,clock_init函数是对clock相关寄存器进行初始化。48ppt课件voiduart_init(){GPA0CON&=~0xFF;GPA0CON|=0x22;//0b00100010

/*8-bits/Onestopbit/Noparity/Normalmodeoperation*//*每次8位,1个停止位,无奇偶验证,正常发送模式(非红外)*/

ULCON0=0x3|(0<<2)|(0<<3)|(0<<6);//0b00xx011

/*Interruptrequestorpollingmode/Normaltransmit/Normaloperation/PCLK/*//*发送和接受引脚采用中断和轮询查询模式,正常发送,常规操作,时钟选择为PCLK*/UCON0=1|(1<<2)|(0<<10);

/*禁止FIFO*/

UFCON0=0;49ppt课件/***波特率计算:115200bps**PCLK=66MHz**DIV_VAL=(66000000/(115200x16))-1=35.8-1=34.8**UBRDIV0=34(DIV_VAL的整数部分)**(numof1'sinUDIVSLOTn)/16=0.8(DIV_VAL的小数部分)**(numof1'sinUDIVSLOTn)=12**UDIVSLOT0=0xDDDD(在数据手册上880页查表)*/UBRDIV0=34;//波特率分度值

UDIVSLOT0=0xDDDD;}50ppt课件51ppt课件voiduart_send_byte(unsignedcharbyte){while(!(UTRSTAT0&(1<<2)));/*等待发送缓冲区为空*/UTXH0=byte;/*发送一字节数据*/}

unsignedcharuart_recv_byte(){while(!(UTRSTAT0&1));/*等待接收缓冲区有数据可读*/returnURXH0;/*接收一字节数据*/}

voiduart_send_string(char*str){char*p=str;while(*p)uart_send_byte(*p++);}52ppt课件(3)主函数intmain(){charbyte;

GPC1CON&=~(0xFF<<12);GPC1CON|=((LEDS<<12)|(LEDS<<16));

GPC1DAT|=0x3<<3;uart_send_string("\r\nUARTTestinS5PV210\r\n");

while(1){uart_send_string("\r\n1.LED1Toggle\r\n");uart_send_string("\r\n2.LED2Toggle\r\n");uart_send_string("\r\nPleaseselect1or2toToggletheLED\r\n");byte=uart_recv_byte();uart_send_byte(byte);if(byte=='1')GPC1DAT^=1<<3;//改变LED1的状态

elseif(byte=='2')GPC1DAT^=1<<4;//改变LED2的状态

}return0;}53ppt课件程序入口:.global_start_start: blclock_init bluart_init blmainhalt:bhalt54ppt课件下面介绍如何把本实例的目标bin文件制作成类u-boot启动的目标bin文件。因为u-boot启动分两个阶段BL1和BL2启动,iROM在加载BL1时会校验BL1的头信息,规定如下:0x0:BL1的大小(最大16KB-16B)0x4:0规定0x8:BL1的校验和。0x16:0规定。55ppt课件在生成源bin后,还需要添加16B的头信息,制作成类u-boot的目标bin文件。具体读者还需要详细了解BootLoader的启动过程。为了给源bin文件头加入16B的头信息,编写文件addtopinfo.c56ppt课件具体烧写到SD卡的流程如下:(1)执行如下命令生成addtopinfo(#表示在Shell命令行下执行)。#gccaddtopinfo.c–oaddtopinfo(2)然后用addtopinfo制作带有头信息的bin文件。#./addtopinfosource.bindest.bin(3)如果在虚拟机下运行Linux,就将SD卡插入SD读卡器,将鼠标移到虚拟机中,然后将SD卡读卡器插入计算机,这是Linux中将自动挂载SD卡。如果再实体机下运行Linux,就直接把SD卡读卡器插入主机,如果没有自动挂载,就手动用mount命令挂载。#mount/dev/adb1/mnt57ppt课件(4)在Linux中执行df查看分区信息。#dfFilesystem1K-blocksUsedAvailableUse%Mountedon…/dev/sdb13864000438639961%/mntSdb1是SD卡的第1个分区。(5)执行命令烧写dest.bin到SD的第1块。(6)拔下SD卡,将其插入开发板,然后拨动启动选择开关,选择从SD启动,上电后,看到逻辑程序现象。58ppt课件7.4UART通信实例(二)在实例一中实现了串口的基本通信功能,下面在实例二使用按键通过串口传输命令来控制LED。在此程序中需要建立四个文件,分别是start.Skey.cuart.cclock.c

。在uart.c和clock.c中主要包含五个函数:clock_init()uart_init()uart_send_byte()uart_send_byte()uart_recv_byte()这几个函数与实例一相同,在此不再叙述。在start.S中定义一个程序入口。59ppt课件start.S.global_start@声明一个全局的标号.globalkey_isr_start:@设置栈,以调用c函数blclock_init bluart_init@开总中断

mrsr0,cpsr @读取cpsr寄存器中的值到r0bicr0,r0,#0x00000080@清除第7位,IRQ中断禁止位,写0使能IRQmsrcpsr,r0 @ ;把修改好的r0的值重新协会cpsrblmain@;跳转到C函数去执行60ppt课件halt:bhaltkey_isr:@;计算返回地址:PC的值等于当前执行的地址+8,当CPU正要执行某条指令时(还未执行),被中断,

@;这是这条刚要执行的指令的地址刚好=PC-4sublr,lr,#4stmfdsp!,{r0-r12,lr}@;保护现场

blkey_handle@;恢复现场

ldmfdsp!,{r0-r12,pc}^@;^表示把spsr恢复到cpsr61ppt课件voidkey_handle(){volatileunsignedcharkey_code=EXT_INT_0_PEND&0xF;//检查4个按键

volatileunsignedcharkey=0;VIC0ADDRESS=0;/*清中断向量寄存器*/EXT_INT_0_PEND|=0xF;/*清中断挂起寄存器*/

if(key_code==1)/*key1*/{key='1';GPC1DAT|=1<<3;/*LED1ON*/}elseif(key_code==2)/*key2*/{key='2';GPC1DAT&=~(1<<3);/*LED1OFF*/}

62ppt课件elseif(key_code==4)/*key3*/{key='3';GPC1DAT|=1<<4;/*LED2ON*/}elseif(key_code==8)/*key4*/{key='4';GPC1DAT&=~(1<<4);/*LED2OFF*/}uart_send_string("Youarepressedkey:");uart_send_byte(key);uart_send_string("\r\n");}63ppt课件intmain(){GPC1CON&=~(0xFF<<12);GPC1CON|=((0x01<<12)|(0x01<<16));/*配置GPC0_3和GPC0_4为输出:LED1和LED2*/GPH0CON|=0xFFFFFFFF<<0;/*配置GPH0_0-GPH0_3为外部中断:key1-key4*/EXT_INT_0_CON&=~(0xFF<<0); /*清空低八位*/EXT_

温馨提示

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

评论

0/150

提交评论