《串行通信接口.ppt》由会员分享,可在线阅读,更多相关《串行通信接口.ppt(38页珍藏版)》请在三一办公上搜索。
1、ARM嵌入式体系结构与接口技术第8章 串行通信接口,2,第1章 嵌入式系统基础知识第2章 ARM技术概述第3章 ARM的指令系统第4章 ARM汇编语言程序设计第5章 ARM Realview MDK集成开发环境第6章 GPIO编程第7章 ARM异常中断处理及编程第8章 串行通信接口,课程安排:,3,第9章 存储器接口 第10章 定时器第11章 A/D转换器第12章 LCD接口设计第13章 温度监测仪开发实例,课程安排:,4,8.1 串行通信8.2 S3C2410X异步串行通信8.3 接口电路与程序设计8.4 小结8.5 思考与练习,本章课程:,5,8.1.1 串行通信与并行通信概念在微型计算机
2、中,通信(数据交换)有两种方式:串行通信和并行通信。串行通信是指计算机与I/O设备之间数据传输的各位是按顺序依次一位接一位进行传送。通常数据在一根数据线或一对差分线上传输。并行通信是指计算机与I/O设备之间通过多条传输线交换数据,数据的各位同时进行传送。,8.1 串行通信,6,8.1.2 异步串行方式的特点异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位与位之间的传送基本上是同步的。异步串行通信的特点:以字符为单位传送信息。相邻两字符间的间隔是任意长。因为一个字符中的比特位长度有限,所以需要的接收时钟和发送时钟只要相近就可以。异步方式特点简单的说就是:字符间异步,字符内部
3、各位同步。,8.1 串行通信,7,8.1.3 异步串行方式的数据格式异步串行通信数据每个字符(每帧信息)由4个部分组成1位起始位,规定为低电0;58位数据位,即要传送的有效信息;1位奇偶校验位;12位停止位,规定为高电平1。图8-1 异步串行数据格式,8.1 串行通信,8,8.1.4 同步串行方式的特点同步通信,是指数据传送是以数据块(一组字符)为单位,字符与字符之间、字符内部的位与位之间都同步。同步串行通信的特点:以数据块为单位传送信息。在一个数据块(信息帧)内,字符与字符间无间隔。因为一次传输的数据块中包含的数据较多,所以接收时钟与发送进钟严格同步,通常要有同步时钟。,8.1 串行通信,9
4、,8.1.5 同步串行方式的数据格式同步串行通信的数据格式如图8-2所示,每个数据块(信息帧)由3个部分组成:2个同步字符作为一个数据块(信息帧)的起始标志;n个连续传送的数据2个字节循环冗余校验码(CRC)8-2 同步串行数据格式,8.1 串行通信,10,8.1.6 RS-232C串口规范RS-232C 标准(协议)的全称是EIA-RS-232C 标准,其中EIA(Electronic IndustryAssociation)代表美国电子工业协会,RS(ecommeded standard)代表推荐标准,232是标识号,C代表RS232 的最新一次修改(1969)常用物理标准还有EIA-RS
5、-232-C、EIA-RS-422-A、EIA-RS-423A、EIA-RS-485目前在PC 机上的COM1、COM2 接口,就是RS-232C,8.1 串行通信,11,8.1.6 RS-232C串口规范1、9针串口引脚定义PC电脑串行口中的典型是RS-232及其兼容接口,串口引脚有9针和25针两类,8.1 串行通信,12,8.1.6 RS-232C串口规范2、RS-232C电气特性在TXD和RXD引脚上电平定义:逻辑1=-3V-15V在RTS、CTS、DSR、DTR和DCD等控制线上电平定义:信号有效=+3V+15V信号无效=-3V-15V注意:对于介于-3V+3V之间的电压处于模糊区电位
6、,此部分电压将使得计算机无法正确判断输出信号的意义,可能得到0,也可能得到1,如此得到的结果是不可信的。因此,实际工作时,应保证传输的电平在+3+15V或-3V-15V之间。,8.1 串行通信,13,8.1.6 RS-232C串口规范3、RS-232C的通讯距离和速度RS-232C能够可靠进行数据传输的最大通讯距离为15米传输速度一般都可以达到115200bps甚至更高,标准串口能够提供的传输速度主要有以下波特率:1200bps、2400bps、4800bps、9600bps、19200bsp、38400bps、57600bps、115200bps等,8.1 串行通信,14,8.1.6 RS-
7、232C串口规范4、RS-232C电平转换芯片及电路MAX3232主要特点有:符合所有的RS-232C规范单一供电电压+5V或3.3V片内电荷泵,具有升压。电压极行反转能力,能够产生+10V和-10V电压V+、V-低功耗,典型供电电流3mA内部集成2个RS-232C驱动器内部集成2个RS-232C接收器 图8-3 MAX3232芯片,8.1 串行通信,15,8.1.7 RS-232C接线方式RS-232C串口的接线方式有全串口连接、3线连接等方式3线连接方法:RXD,TXD和GND图 8-4 3线连接法,8.1 串行通信,16,8.2.1 S3C2410X串口控制器概述1S3C2410X串行通
8、信(UART)单元S3C2410X UART单元提供3个独立的异步串行通信接口,皆可工作于中断和DMA模式。使用系统时钟最高波特率达230.4Kbit/s,如果使用外部设备提供的时钟,可以达到更高的速率。每一个UART单元包含一个16字节的FIFO,用于数据的接收和发送,8.2 S3C2410X异步串行通信,17,8.2.1 S3C2410X串口控制器概述2波特率的产生波特率由一个专用的UART 波特率分频寄存器(UBRDIVn)控制,计算公式如下:UBRDIVn=(int)(ULK/(bps16)1或者 UBRDIVn=(int)(PLK/(bps16)1说明:时钟选用UCLK还是PCLK由
9、UART控制寄存器UCONn10的状态决定。如果UCONn10=0,用PCLK作为波特率发生,否则选用UCLK做波特率发生。UBRDIVn的值必须在1到(2161)之间例:UCLK或者PCLK等于40MHz,当波特率为115200时UBRDIVn=(int)(40000000/(11520016)1=(int)(21.7)1=211=20,8.2 S3C2410X异步串行通信,18,8.2.1 S3C2410X串口控制器概述3S3C2410X UART通信操作1、发送数据帧包含一个起始位,58个数据位,一个可选的奇偶校验位和12位停止位,停止位通过行控制寄存器ULCONn配置2、接收数据帧由一
10、个起始位,58个数据位,一个可选的奇偶校验和12位行控制寄存器ULCONn里的停止位组成3、接收器还可以检测溢出错、奇偶校验错、帧错误和传输中断,每一个错误均可以设置一个错误标志。1)溢出错误(Overrun Error)是指已接收到的数据在读取之前被新接收的数据覆盖2)奇偶校验错是指接收器检测到的校验和与设置的不符3)帧错误指没有接收到有效的停止位4)传输中断表示接收数据RxDn保持逻辑0超过一帧的传输时间,8.2 S3C2410X异步串行通信,19,8.2.2 S3C2410X串口控制器寄存器详解1、UART行控制寄存器ULCONn,8.2 S3C2410X异步串行通信,20,8.2.2
11、S3C2410X串口控制器寄存器详解2、UART控制寄存器UCONn,8.2 S3C2410X异步串行通信,21,8.2.2 S3C2410X串口控制器寄存器详解3、UART FIFO 控制寄存器UFCONn,8.2 S3C2410X异步串行通信,22,8.2.2 S3C2410X串口控制器寄存器详解4、UART MODEM控制寄存器UMCONn,8.2 S3C2410X异步串行通信,23,8.2.2 S3C2410X串口控制器寄存器详解5、发送寄存器UTXHn和接收寄存器URXHn这两个寄存器存放着发送和接收的数据,在关闭FIFO的情况下只有一个字节位数据。需要注意的是,在发生溢出错误的时候
12、,接收的数据必须被读出来,否则会引发下次溢出错误。,8.2 S3C2410X异步串行通信,24,8.2.2 S3C2410X串口控制器寄存器详解6、波特率分频寄存器UBRDIVn,8.2 S3C2410X异步串行通信,25,8.2.2 S3C2410X串口控制器寄存器详解7、串口状态寄存器UTRSTATn,8.2 S3C2410X异步串行通信,26,8.3.1 电路连接图8-5 串口连接图,8.3 接口电路与程序设计,27,8.3.2 寄存器设置(1)禁止串口控制器的FIFO功能设置UFCON0的0为“0”。(2)禁止AFC自动流控功能设置UMCON0的4为“0”(3)设置通讯格式为正常串口通
13、讯模式、8个数据位、1个停止位、无奇偶校验设置ULCON0的7:0为0 x03。(4)设置串口的接收、发送模式为轮询模式设置UCONn的3:0为“0101”(5)设置串口的时钟源为PCLK设置UCONn的10为“0”。,8.3 接口电路与程序设计,28,8.3.3 程序的编写1、相关寄存器定义在例程MDKcommoninc2410addr.h中:#define rULCON0(*(volatile unsigned*)0 x50000000)/UART 0 Line control#define rUCON0(*(volatile unsigned*)0 x50000004)/UART 0 C
14、ontrol#define rUFCON0(*(volatile unsigned*)0 x50000008)/UART 0 FIFO control#define rUMCON0(*(volatile unsigned*)0 x5000000c)/UART 0 Modem control#define rUTRSTAT0(*(volatile unsigned*)0 x50000010)/UART 0 Tx/Rx status#define rUBRDIV0(*(volatile unsigned*)0 x50000028)/UART 0 Baud rate divisor#define r
15、UTXH0(*(volatile unsigned char*)0 x50000020)/UART 0 Transmission Hold#define rURXH0(*(volatile unsigned char*)0 x50000024)/UART 0 Receive buffer,8.3 接口电路与程序设计,29,8.3.3 程序的编写2、串口初始化函数函数输入参数为:串口工作波特率、串口通道。void uart_init(int nMainClk,int nBaud,int nChannel)switch(nChannel)case UART0:rUFCON0=0 x0;/禁止FIF
16、O rUMCON0=0 x0;/禁止AFC自动流控功能/设置通讯格式为正常串口通讯模式、8个数据位、1个停止位、无奇偶校验 rULCON0=0 x3;/设置串口的接收、发送模式为轮询模式,串口的时钟源为PCLK rUCON0=0 x245;/根据nBaud波特率和PCLK 设置分频寄存器 rUBRDIV0=(int)(PCLK/16./nBaud)-1);break;。,8.3 接口电路与程序设计,30,8.3.3 程序的编写3、串口接收一个字符char uart_getch(void)if(f_nWhichUart=0)/判断从第几个串口获取字符 while(!(rUTRSTAT0。,8.3
17、 接口电路与程序设计,31,8.3.3 程序的编写4、串口发送一个字符void uart_sendbyte(int nData)if(f_nWhichUart=0)/判断发送的字符是否是换行符,如果是,则需要先发送回车符r if(nData=n)while(!(rUTRSTAT0/发送缓冲为空时,发送nData。,8.3 接口电路与程序设计,32,8.3.4 调试与运行结果1、调试步骤(1)串口设置在PC 机上运行Windows自带的超级终端串口通信程序(波特率为115200Bd、1位停止位、无校验位、无硬件流控制)如图8-6所示;或者使用其他串口通信程序 图8-6 超级终端配置,8.3 接口
18、电路与程序设计,33,8.3.4 调试与运行结果(2)硬件接线,使用目标板附带的串口线连接目标板上UART0和PC机串口COMx,并连接好ULINK2仿真器套件(3)运行MDK开发环境,进入实验例程目录MDKuart_test 子目录下的uart_test.Uv2例程,编译链接工程(4)单击MDK控制栏“Options for Target”选择Debug 菜单,选择ULINK ARM Debugger(5)单击Debug运行程序,下载调试代码到目标系统的RAM中(6)在超级终端的“Please input words that you want to transmit:”提示后输入想要发送的
19、数据,并以回车作为发送字符串的结尾标志(7)继续运行程序,直至程序的结尾(8)结合实验内容和实验原理部分,熟练掌握S3C2410X处理器UART模块的使用,8.3 接口电路与程序设计,34,8.3.4 调试与运行结果2、观察实验结果在执行到第(6)步时,可以看到超级终端上输出等待输入字符:boot success.UART0 Communication Test ExamplePlease input words,then press Enter:/如果输入字符就会马上显示在超级终端上(假设输入为abcdefg),输入回车符后打印一整串字符:The words that you input are:abcdefg,8.3 接口电路与程序设计,35,串口通讯的概念、数据规范S3C2410X串口控制器及编程方法,8.4 小结,36,8.3.4 调试与运行结果,8.3 接口电路与程序设计,37,8-1 串行通讯与并行通讯的概念?8-2同步通讯与异步通讯的概念、区别?8-3RS-232C串口通讯接口规范?8-4 S3C2410X串口控制器中,哪个寄存器用来设置串口波特率?8-5编写一个串口程序采用中断的方式,实现向PC的串口终端打印一个字符串“hello”的功能?,8.5 思考与练习,38,