1 / 38

ARM嵌入式体系结构与接口技术 第8章 串行通信接口

ARM嵌入式体系结构与接口技术 第8章 串行通信接口. 课程安排 :. 第1章 嵌入式系统基础知识 第2章 ARM技术概述 第3章 ARM的指令系统 第4章 ARM汇编语言程序设计 第5章 ARM Realview MDK集成开发环境 第6章 GPIO编程 第7章 ARM异常中断处理及编程 第8章 串行通信接口. 课程安排 :. 第9章 存储器接口 第10章 定时器 第11章 A/D转换器 第12章 LCD接口设计 第13章 温度监测仪开发实例. 本章课程:. 8.1 串行通信 8.2 S3C2410X异步串行通信 8.3 接口电路与程序设计

meryl
Download Presentation

ARM嵌入式体系结构与接口技术 第8章 串行通信接口

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 串行通信 • 8.1.1 串行通信与并行通信概念 • 在微型计算机中,通信(数据交换)有两种方式:串行通信和并行通信。 • 串行通信是指计算机与I/O设备之间数据传输的各位是按顺序依次一位接一位进行传送。通常数据在一根数据线或一对差分线上传输。 • 并行通信是指计算机与I/O设备之间通过多条传输线交换数据,数据的各位同时进行传送。

  6. 8.1 串行通信 • 8.1.2 异步串行方式的特点 • 异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位与位之间的传送基本上是同步的。 • 异步串行通信的特点: • 以字符为单位传送信息。 • 相邻两字符间的间隔是任意长。 • 因为一个字符中的比特位长度有限,所以需要的接收时钟和发送时钟只要相近就可以。 • 异步方式特点简单的说就是:字符间异步,字符内部各位同步。

  7. 8.1 串行通信 • 8.1.3 异步串行方式的数据格式 • 异步串行通信数据每个字符(每帧信息)由4个部分组成 • 1位起始位,规定为低电0; • 5~8位数据位,即要传送的有效信息; • 1位奇偶校验位; • 1~2位停止位,规定为高电平1。 图8-1 异步串行数据格式

  8. 8.1 串行通信 • 8.1.4 同步串行方式的特点 • 同步通信,是指数据传送是以数据块(一组字符)为单位,字符与字符之间、字符内部的位与位之间都同步。 • 同步串行通信的特点: • 以数据块为单位传送信息。 • 在一个数据块(信息帧)内,字符与字符间无间隔。 • 因为一次传输的数据块中包含的数据较多,所以接收时钟与发送进钟严格同步,通常要有同步时钟。

  9. 8.1 串行通信 • 8.1.5 同步串行方式的数据格式 • 同步串行通信的数据格式如图8-2所示,每个数据块(信息帧)由3个部分组成: • 2个同步字符作为一个数据块(信息帧)的起始标志; • n个连续传送的数据 • 2个字节循环冗余校验码(CRC) 8-2 同步串行数据格式

  10. 8.1 串行通信 • 8.1.6 RS-232C串口规范 • RS-232C 标准(协议)的全称是EIA-RS-232C 标准,其中EIA(Electronic IndustryAssociation)代表美国电子工业协会,RS(ecommeded standard)代表推荐标准,232是标识号,C代表RS232 的最新一次修改(1969) • 常用物理标准还有EIA-RS-232-C、EIA-RS-422-A、EIA-RS-423A、EIA-RS-485 • 目前在PC 机上的COM1、COM2 接口,就是RS-232C

  11. 8.1 串行通信 • 8.1.6 RS-232C串口规范 • 1、9针串口引脚定义 • PC电脑串行口中的典型是RS-232及其兼容接口,串口引脚有9针和25针两类

  12. 8.1 串行通信 • 8.1.6 RS-232C串口规范 • 2、RS-232C电气特性 • 在TXD和RXD引脚上电平定义: • 逻辑1=-3V~-15V • 在RTS、CTS、DSR、DTR和DCD等控制线上电平定义: • 信号有效=+3V~+15V • 信号无效=-3V~-15V • 注意:对于介于-3V~+3V之间的电压处于模糊区电位,此部分电压将使得计算机无法正确判断输出信号的意义,可能得到0,也可能得到1,如此得到的结果是不可信的。因此,实际工作时,应保证传输的电平在+3~+15V或-3V~-15V之间。

  13. 8.1 串行通信 • 8.1.6 RS-232C串口规范 • 3、RS-232C的通讯距离和速度 • RS-232C能够可靠进行数据传输的最大通讯距离为15米 • 传输速度一般都可以达到115200bps甚至更高,标准串口能够提供的传输速度主要有以下波特率:1200bps、2400bps、4800bps、9600bps、19200bsp、38400bps、57600bps、115200bps等

  14. 8.1 串行通信 • 8.1.6 RS-232C串口规范 • 4、RS-232C电平转换芯片及电路 • MAX3232主要特点有: • 符合所有的RS-232C规范 • 单一供电电压+5V或3.3V • 片内电荷泵,具有升压。电压极行反转能力,能够产生+10V和-10V电压V+、V- • 低功耗,典型供电电流3mA • 内部集成2个RS-232C驱动器 • 内部集成2个RS-232C接收器 图8-3 MAX3232芯片

  15. 8.1 串行通信 • 8.1.7 RS-232C接线方式 • RS-232C串口的接线方式有全串口连接、3线连接等方式 • 3线连接方法:RXD,TXD和GND 图 8-4 3线连接法

  16. 8.2 S3C2410X异步串行通信 • 8.2.1 S3C2410X串口控制器概述 • 1.S3C2410X串行通信(UART)单元 • S3C2410X UART单元提供3个独立的异步串行通信接口,皆可工作于中断和DMA模式。使用系统时钟最高波特率达230.4Kbit/s,如果使用外部设备提供的时钟,可以达到更高的速率。每一个UART单元包含一个16字节的FIFO,用于数据的接收和发送

  17. 8.2 S3C2410X异步串行通信 • 8.2.1 S3C2410X串口控制器概述 • 2.波特率的产生 • 波特率由一个专用的UART 波特率分频寄存器(UBRDIVn)控制,计算公式如下: • UBRDIVn = (int)(ULK/(bps × 16) ) – 1 • 或者 UBRDIVn = (int)(PLK/(bps × 16) ) –1 • 说明:时钟选用UCLK还是PCLK由UART控制寄存器UCONn[10]的状态决定。如果UCONn[10] = 0,用PCLK作为波特率发生,否则选用UCLK做波特率发生。UBRDIVn的值必须在1~到(216−1)之间 • 例:UCLK或者PCLK等于40MHz,当波特率为115200时 • UBRDIVn = (int) (40000000/(115200 × 16) ) −1 • = (int)(21.7) −1 • = 21 − 1 = 20

  18. 8.2 S3C2410X异步串行通信 • 8.2.1 S3C2410X串口控制器概述 • 3.S3C2410X UART通信操作 • 1、发送数据帧包含一个起始位,5~8个数据位,一个可选的奇偶校验位和1~2位停止位,停止位通过行控制寄存器ULCONn配置 • 2、接收数据帧由一个起始位,5~8个数据位,一个可选的奇偶校验和1~2位行控制寄存器ULCONn里的停止位组成 • 3、接收器还可以检测溢出错、奇偶校验错、帧错误和传输中断,每一个错误均可以设置一个错误标志。 • 1)溢出错误(Overrun Error)是指已接收到的数据在读取之前被新接收的数据覆盖 • 2)奇偶校验错是指接收器检测到的校验和与设置的不符 • 3)帧错误指没有接收到有效的停止位 • 4)传输中断表示接收数据RxDn保持逻辑0超过一帧的传输时间

  19. 8.2 S3C2410X异步串行通信 • 8.2.2 S3C2410X串口控制器寄存器详解 • 1、UART行控制寄存器ULCONn

  20. 8.2 S3C2410X异步串行通信 • 8.2.2 S3C2410X串口控制器寄存器详解 • 2、UART控制寄存器UCONn

  21. 8.2 S3C2410X异步串行通信 • 8.2.2 S3C2410X串口控制器寄存器详解 • 3、UART FIFO 控制寄存器UFCONn

  22. 8.2 S3C2410X异步串行通信 • 8.2.2 S3C2410X串口控制器寄存器详解 • 4、UART MODEM控制寄存器UMCONn

  23. 8.2 S3C2410X异步串行通信 • 8.2.2 S3C2410X串口控制器寄存器详解 • 5、发送寄存器UTXHn和接收寄存器URXHn • 这两个寄存器存放着发送和接收的数据,在关闭FIFO的情况下只有一个字节8位数据。需要注意的是,在发生溢出错误的时候,接收的数据必须被读出来,否则会引发下次溢出错误。

  24. 8.2 S3C2410X异步串行通信 • 8.2.2 S3C2410X串口控制器寄存器详解 • 6、波特率分频寄存器UBRDIVn

  25. 8.2 S3C2410X异步串行通信 • 8.2.2 S3C2410X串口控制器寄存器详解 • 7、串口状态寄存器UTRSTATn

  26. 8.3 接口电路与程序设计 • 8.3.1 电路连接 图8-5 串口连接图

  27. 8.3 接口电路与程序设计 • 8.3.2 寄存器设置 • (1)禁止串口控制器的FIFO功能 • 设置UFCON0的[0]为“0”。 • (2)禁止AFC自动流控功能 • 设置UMCON0的[4]为“0” • (3)设置通讯格式为正常串口通讯模式、8个数据位、1个停止位、无奇偶校验 • 设置ULCON0的[7:0]为0x03。 • (4)设置串口的接收、发送模式为轮询模式 • 设置UCONn的[3:0]为“0101” • (5)设置串口的时钟源为PCLK • 设置UCONn的[10]为“0”。

  28. 8.3 接口电路与程序设计 • 8.3.3 程序的编写 • 1、相关寄存器定义 在例程MDK\common\inc\2410addr.h中: #define rULCON0 (*(volatile unsigned *)0x50000000) //UART 0 Line control #define rUCON0 (*(volatile unsigned *)0x50000004) //UART 0 Control #define rUFCON0 (*(volatile unsigned *)0x50000008) //UART 0 FIFO control #define rUMCON0 (*(volatile unsigned *)0x5000000c) //UART 0 Modem control #define rUTRSTAT0 (*(volatile unsigned *)0x50000010) //UART 0 Tx/Rx status #define rUBRDIV0 (*(volatile unsigned *)0x50000028) //UART 0 Baud rate divisor #define rUTXH0 (*(volatile unsigned char *)0x50000020) //UART 0 Transmission Hold #define rURXH0 (*(volatile unsigned char *)0x50000024) //UART 0 Receive buffer

  29. 8.3 接口电路与程序设计 • 8.3.3 程序的编写 • 2、串口初始化函数 • 函数输入参数为:串口工作波特率、串口通道。 • void uart_init(int nMainClk, int nBaud, int nChannel) • { • switch (nChannel) • { • case UART0: • rUFCON0 = 0x0; //禁止FIFO • rUMCON0 = 0x0; //禁止AFC自动流控功能 • //设置通讯格式为正常串口通讯模式、8个数据位、1个停止位、无奇偶校验 • rULCON0 = 0x3; • //设置串口的接收、发送模式为轮询模式, 串口的时钟源为PCLK • rUCON0 = 0x245; • //根据nBaud波特率和PCLK 设置分频寄存器 • rUBRDIV0=( (int)( PCLK /16./nBaud) -1 ); • break; • 。。。。。。

  30. 8.3 接口电路与程序设计 • 8.3.3 程序的编写 • 3、串口接收一个字符 • char uart_getch(void) • { • if(f_nWhichUart==0) //判断从第几个串口获取字符 • { • while(!(rUTRSTAT0 & 0x1)); //根据UTRSTAT0第0位的值,判断是否接收完成 • return RdURXH0(); • } • 。。。。 • }

  31. 8.3 接口电路与程序设计 • 8.3.3 程序的编写 • 4、串口发送一个字符 • void uart_sendbyte(int nData) • { • if(f_nWhichUart==0) • { //判断发送的字符是否是换行符,如果是,则需要先发送回车符‘\r’ • if(nData=='\n') • { • while(!(rUTRSTAT0 & 0x2));//等待,直到发送缓冲为空 • delay(10); • WrUTXH0('\r'); //发送缓冲为空时,发送‘\r’ • } • while(!(rUTRSTAT0 & 0x2)); //等待,直到发送缓冲为空 • delay(10); • WrUTXH0(nData); //发送缓冲为空时,发送‘nData’ • } • 。。。 • }

  32. 8.3 接口电路与程序设计 • 8.3.4 调试与运行结果 • 1、调试步骤 • (1)串口设置 • 在PC 机上运行Windows自带的超级终端串口通信程序(波特率为115 200Bd、1位停止位、无校验位、无硬件流控制)如图8-6所示;或者使用其他串口通信程序 图8-6 超级终端配置

  33. 8.3 接口电路与程序设计 • 8.3.4 调试与运行结果 • (2)硬件接线,使用目标板附带的串口线连接目标板上UART0和PC机串口COMx,并连接好ULINK2仿真器套件 • (3)运行MDK开发环境,进入实验例程目录MDK\uart_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:”提示后输入想要发送的数据,并以回车作为发送字符串的结尾标志 • (7)继续运行程序,直至程序的结尾 • (8)结合实验内容和实验原理部分,熟练掌握S3C2410X处理器UART模块的使用

  34. 8.3 接口电路与程序设计 • 8.3.4 调试与运行结果 • 2、观察实验结果 • 在执行到第(6)步时,可以看到超级终端上输出等待输入字符: • boot success... • UART0 Communication Test Example • Please input words, then press Enter: • /> • 如果输入字符就会马上显示在超级终端上(假设输入为abcdefg),输入回车符后打印一整串字符: • The words that you input are: • abcdefg

  35. 8.4 小结 • 串口通讯的概念、数据规范 • S3C2410X串口控制器及编程方法

  36. 8.3 接口电路与程序设计 • 8.3.4 调试与运行结果

  37. 8.5 思考与练习 • 8-1 串行通讯与并行通讯的概念? • 8-2 同步通讯与异步通讯的概念、区别? • 8-3 RS-232C串口通讯接口规范? • 8-4 S3C2410X串口控制器中,哪个寄存器用来设置串口波特率? • 8-5 编写一个串口程序采用中断的方式,实现向PC的串口终端打印一个字符串“hello”的功能?

  38. 38

More Related