收藏 分销(赏)

K60-UART-串口通信讲解PPT.ppt

上传人:w****g 文档编号:10243810 上传时间:2025-04-29 格式:PPT 页数:26 大小:785.65KB
下载 相关 举报
K60-UART-串口通信讲解PPT.ppt_第1页
第1页 / 共26页
K60-UART-串口通信讲解PPT.ppt_第2页
第2页 / 共26页
K60-UART-串口通信讲解PPT.ppt_第3页
第3页 / 共26页
K60-UART-串口通信讲解PPT.ppt_第4页
第4页 / 共26页
K60-UART-串口通信讲解PPT.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单击此处编辑母版标题样式,第,4,章,异步串行通信,2012.01,1,主要知识点,异步串行通信的通用基础知识,4.1,UART,模块功能概述,4.2,K60,的,UART,模块的编程结构,4.3,K,60,的,UART,构件设计概述,4.4,以查询方式接收的,UART,模块测试实例,4.5,4.6,以中断方式接收的,UART,模块测试实例,2,2025/4/29 周二,4.1,异步串行通信的通用基础知识,4.1.1,串行通信的基本概念,异步串行通信的格式,通用异步收发器(,Universal Asynchronous Recei

2、ver/Transmitters,,,UART,)通常采用,NRZ,数据格式,其英文译为“标准不归零传号,/,空号数据格式”,“不归零”的最初含义是:用正、负电平表示二进制值,不使用零电平。“,mark/space”,即“传号,/,空号”分别是表示两种状态的物理名称,逻辑名称记为“,1/0”,。下图给出了,8,位数据、无校验情况的传送格式,串行通信数据格式,3,2025/4/29 周二,串行通信的波特率,串行通信的波特率单位是位,/,秒,记为,bps,。通常情况下,波特率的单位可以省略。通常使用的波特率有,300,、,600,、,900,、,1200,、,1800,、,2400,、,4800,

3、9600,、,19200,、,38400,、,57600,、,115200,等,奇偶校验,字符奇偶校验检查(,character parity checking,)称为垂直冗余检查(,vertical redundancy checking,,,VRC,),它是每个字符增加一个额外位使字符中“,1”,的个数为奇数或偶数。,奇校验:如果字符数据位中“,1”,的数目是偶数,校验位应为“,1”,,如果“,1”,的数目是奇数,校验位应为“,0”,。,偶校验:如果字符数据位中“,1”,的数目是偶数,则校验位应为“,0”,,如果是奇数则为“,1”,4.1,异步串行通信的通用基础知识,4,2025/4/

4、29 周二,串行通信的传输方式,单工(,Simplex,):数据传送是单向的,一端为发送端,另一端为接收端。这种传输方式中,除了地线之外,只要一根数据线就可以了。有线广播就是单工的。,全双工(,Full-duplex,):数据传送是双向的,且可以同时接收与发送数据。这种传输方式中,除了地线之外,需要两根数据线,站在任何一端的角度看,一根为发送线,另一根为接收线。一般情况下,,MCU,的异步串行通信接口均是全双工的。,半双工(,Half-duplex,):数据传送也是双向的,但是在这种传输方式中,除了地线之外,一般只有一根数据线。任何一个时刻,只能由一方发送数据,另一方接收数据,不能同时收发。,

5、4.1,异步串行通信的通用基础知识,5,2025/4/29 周二,4.1.2,RS-232,总线标准,串行传输标准,MCU,引脚输入,/,输出一般使用,TTL,(,Transistor Transistor Logic,)电平,即晶体管,-,晶体管逻辑电平,它适用于板内数据传输。为使信号传输得更远,美国电子工业协会,EIA,(,Electronic Industry Association,)制订了串行物理接口标准,RS-232C,。,逻辑“,0,“,逻辑,”1”,传输距离,TTL,小于,0.4V,大于,2.4V,5m,RS-232C,+3V,+15V,-15V,-3V,30m,4.1,异步串

6、行通信的通用基础知识,6,2025/4/29 周二,上图为,9,芯串行接口排列,引脚号,功能,引脚号,功能,1,接收线信号检测,(,载波检测,DCD),6,数据通信设备准备就绪,(DSR),2,接收数据线,(RXD),7,请求发送,(RTS),3,发送数据线,(TXD),8,允许发送,(CTS),4,数据终端准备就绪,(DTR),9,振铃指示,5,信号地,(SG),9,芯串行接口引脚含义表,4.1.3,RS-232C,串行接口,4.1,异步串行通信的通用基础知识,7,2025/4/29 周二,4.1.4 TTL,电平到,RS-232,电平转换电路,具有,SCI,接口的,MCU,,一般具有发送引

7、脚,(TxD),与接收引脚,(RxD),,不同公司或不同系列的,MCU,,使用的引脚缩写名可能不一致,但含义相同。,SCI,的外围硬件电路,主要目的是将,MCU,的发送引脚,TxD,与接收引脚,RxD,的,TTL,电平,通过,RS-232,电平转换芯片转换为,RS-232,电平。下图给出一个基本,SCI,电平转换电路及芯片,MAX232,引脚图,MAX232,引脚,串行通信接口电平转换电路,4.1,异步串行通信的通用基础知识,8,2025/4/29 周二,MAX232,芯片进行电平转换基本原理是:,发送过程:,MCU,的,TXD,(,TTL,电平)经过,MAX232,的,11,脚,(T1IN)

8、送到,MAX232,内部,在内部,TTL,电平被,“,提升,”,为,232,电平,通过,14,脚,(T1OUT),发送出去,接收过程:外部,232,电平经过,MAX232,的,13,脚(,R1IN,)进入到,MAX232,的内部,在内部,232,电平被,“,降低,”,为,TTL,电平,经过,12,脚(,R1OUT,)送到,MCU,的,RXD,,进入,MCU,内,组别,TTL,电平引脚,方向,典型接口,232,电平引脚,方向,典型接口,1,11,(,T1IN,),12,(,R1OUT,),输入,输出,接,MCU,的,TXD,接,MCU,的,RXD,13,14,输入,输出,接到,9,芯接口的,2

9、脚,RXD,接到,9,芯接口的,3,脚,TXD,2,10,(,T2IN,),9,(,R2OUT,),输入,输出,接,MCU,的,TXD,接,MCU,的,RXD,8,7,输入,输出,接到,9,芯接口的,2,脚,RXD,接到,9,芯接口的,3,脚,TXD,MAX232,芯片输入输出引脚分类与基本接法,4.1,异步串行通信的通用基础知识,9,2025/4/29 周二,4.2 UART,模块功能,基本原理角度,串行通信接口的主要功能是:接收时,把外部的单线输入的数据变成一个字节的并行数据送入,MCU,内部;发送时,把需要发送的一个字节的并行数据转换为单线输出。,接受引脚,RxD,发送引脚,TxD,发

10、送移位寄存器,接受移位寄存器,UART,数据寄存器,MCU,内部总线,UART,控制寄存器,UART,状态寄存器,UART,波特率,寄存器,10,2025/4/29 周二,4.2 UART,模块功能,程序员角度看,K60,包括,6,个相同且独立的,UART,模块,每个模块都含有相互独立的发送器和接收器。,1,外部引脚,UART,的外部引脚有:发送数据引脚:,UTXDx,、接收数据引脚:,URXDx,。“,x,”表示模块的编号,取值为,0,5,。,2,波特率发生器,UART0,和,UART1,时钟源为内核时钟,,UART2,UART5,的时钟源为外设时钟(总线时钟)。波特率由一个,13,位的模数

11、计数器和一个,5,位的分数微调计数器共同决定。,13,位的,SBRSBR,范围为,1,8191,,它决定了模块的时钟分频。微调计数器给波特率时钟增加一个细微的延时,以便匹配系统波特率。,UART,波特率,=UART,模块时钟,/(16*(SBRSBR+BRFA),11,2025/4/29 周二,4.2 UART,模块功能,收发器的工作,UART,发送器和接收器均可容纳,8,、,9,或,10,位数据字符。,发送数据流程 接收数据流程,1,数据寄存器将数据写到发送数据缓冲区,2,发送器进行移位发送,3,发送缓冲区空标志,位,S1TDRE,根据设置决定是否产生中断,1,一个完整的帧移进接收移位寄存器

12、帧的数据部分发送到,UART,接收缓冲区中,2,接收缓冲区数据转移到数据寄存器,3,接收缓冲区中的数据字数目等于或多于,RWFIFORXWATER,指定的数目,那么,S1RDRF,标志位会被置,1,12,2025/4/29 周二,4.3 K60,的,UART,模块编程结构,UART,模块存储映射,寄存器,基址,寄存器,权限,复位值,UART0,0 x4006_A000,波特率高字节寄存器(UARTx_BDH),读/写,0 x00,0 x4006_A001,波特率低字节寄存器(UARTx_BDL),读/写,0 x04,0 x4006_A002,控制寄存器1(UARTx_C1),读/写,0 x0

13、0,0 x4006_A003,控制寄存器2(UARTx_C2),读/写,0 x00,0 x4006_A004,状态寄存器1(UARTx_S1),只读,0 xC0,0 x4006_A005,状态寄存器2(UARTx_S2),读/写,0 x00,0 x4006_A006,控制寄存器3(UARTx_C3),读/写,0 x00,0 x4006_A007,数据寄存器((UARTx_D),读/写,0 x00,0 x4006_A008,地址匹配寄存器1(UARTx_MA1),读/写,0 x00,0 x4006_A009,地址匹配寄存器2(UARTx_MA2),读/写,0 x00,0 x4006_A00A,控

14、制寄存器4(UARTx_C4),读/写,0 x00,0 x4006_A00B,控制寄存器5(UARTx_C5),读/写,0 x00,0 x4006_A00C,扩展数据寄存器(UARTx_ED),只读,0 x00,0 x4006_A00D,调制解调器寄存器(UARTx_MODEM),读/写,0 x00,0 x4006_A00E,红外寄存器(UARTx_IR),读/写,0 x00,13,2025/4/29 周二,4.3 K60,的,UART,模块编程结构,0 x4006_A010,FIFO参数寄存器(UARTx_PFIFO),读/写,0 x00,0 x4006_A011,FIFO控制寄存器(UAR

15、Tx_CFIFO),读/写,0 x00,0 x4006_A012,FIFO状态寄存器(UARTx_SFIFO),读/写,0 xC0,0 x4006_A013,FIFO发送水位寄存器(UARTx_TWFIFO),读/写,0 x00,0 x4006_A014,FIFO发送计数寄存器(UARTx_TCFIFO),只读,0 x00,0 x4006_A015,FIFO接收水位寄存器(UARTx_RWFIFO),读/写,0 x01,0 x4006_A016,FIFO接收计数寄存器(UARTx_RCFIFO),只读,0 x00,0 x4006_A018,7816控制数寄存器(UARTx_C7816),读/写

16、0 x00,0 x4006_A019,7816中断使能寄存器(UARTx_IE7816),读/写,0 x00,0 x4006_A01A,7816中断状态寄存器(UARTx_IS7816),读/写,0 x00,0 x4006_A01B,7816等待参数寄存器(UARTx_WP7816T0),读/写,0 x0A,0 x4006_A01B,7816等待参数寄存器(UARTx_WP7816T1),读/写,0 x0A,0 x4006_A01C,7816等待N寄存器(UARTx_WN7816),读/写,0 x00,0 x4006_A01D,7816等待FD寄存器(UARTx_WF7816),读/写,0

17、x01,0 x4006_A01E,7816错误阈值寄存器(UARTx_ET7816),读/写,0 x00,0 x4006_A01F,7816发送长度寄存器(UARTx_TL7816),读/写,0 x00,14,2025/4/29 周二,4.4,K,60,的,UART,构件设计概述,4.4.1UART,构件设计概述,以,UART,具有初始化、接收和发送三种基本操作为例,来说明实现构件化的全过程,实现构件化编程的,UART,软件模块应当具有以下几个特点:,UART,模块是最底层的构件,它主要向上提供三种服务,分别是,UART,模块的初始化、接收单个字节和发送单个字节,向下则直接访问模块寄存器,实现

18、对硬件的直接操作。另外,从现实使用角,度,出发,它还需要封装接收,N,个字节和发送,N,个字节的功能函数。,UART,模块在软件上对应,1,个,hw_uart.c,程序源代码文件和,1,个,hw_uart.h,头文件,当需要使用,UART,构件时,大多数情况下只需简单拷贝这两个文件即可,无需对源代码文件和头文件进行修改,只有当进行不同芯片之间的移植时,才需要修改头文件中与硬件相关的宏定义。,上层构件或软件在使用该构件时,严格禁止通过全局变量来传递参数,所有的数据传递都直接通过函数的形式参数来接收。这样做不但使得接口简洁,更加避免了全局变量可能引发的安全隐患。,15,2025/4/29 周二,4

19、4.2,K,60,的,UART,构件的函数,通过以上分析,可以设计,UART,构件的,8,个基本功能函数。,(,1,)初始化:,uint8 hw_uart_init(uint8 uartNo,uint32 baud);,(,2,)接收单个字节:,uint8 hw_uart_re1(uint8 uartNo,uint8*fp);,(,3,)发送单个字节:,uint8 hw_uart_send1(uint8 uartNo,uint8 ch);,(,4,)接收,N,个字节:,uint8 hw_uart_reN(uint8 uartNo,uint16 len,uint8*buff);,(,5,)发送

20、N,个字节:,uint8 hw_uart_sendN(uint8 uartNo,uint16 len,uint8*buff);,(,6,)发送字符串:,uint8 hw_uart_send_string(uint8 uartNo,void*buff);,(,7,)使能串口接收中断:,void hw_uart_enable_re_int(uint8 uartNo);,(,8,)禁止串口接收中断:,void hw_uart_disable_re_int(uint8 uartNo);,4.4,K,60,的,UART,构件设计概述,16,2025/4/29 周二,4.4.3,K,60,的,UART,

21、的头文件,与,UART,通信子函数相关的文件有头文件,hw_uart.h,,以及包含,UART,初始化和收发子函数的程序文件,hw_uart.c,。,头文件,hw_uart.h,中的内容可分为两个主要的部分,它们分别是,8,个函数原型的声明和外设模块寄存器相关信息的定义。前者给出了本,UART,构件对上层构件或软件所提供的接口函数,而后者则指明了本“元构件”与具体硬件相关的信息。,这样设计,应用程序和上层构件在使用(调用)它时,将具有极大的灵活性。,4.4,K,60,的,UART,构件设计概述,17,2025/4/29 周二,4.5,以查询方式接收的,UART,模块测试实例,程序查询方式,程序

22、查询方式是一种程序直接控制方式,这是主机与外设间进行信息交换的最简单的方式,输入和输出完全是通过,MCU,执行程序来完成的。一旦某一外设被选中并启动后,主机将查询这个外设的某些状态位,看其是否准备就绪?若外设未准备就绪,主机将再次查询;若外设已准备就绪,则执行一次,I/O,操作。,18,2025/4/29 周二,4.5,以查询方式接收的,UART,模块测试实例,查询方式,主循环,for(;)/主循环,/=主循环(开始)=,/1.主循环计数到一定的值,使小灯的亮、暗状态切换,run_counter+;,if(run_counter=500),run_counter=0;,light_change

23、Light_Run_PORT,Light_Run1);,light_change(Light_Run_PORT,Light_Run2);,hw_uart_send_string(UART_TEST,Hello World!,rn);,/2.串口接收到数据后即刻回发,ch=hw_uart_re1(UART_TEST,if(0=uart_flag),hw_uart_send1(UART_TEST,ch);,uart_flag=1;,/=主循环(结束)=,19,2025/4/29 周二,4.5,以查询方式接收的,UART,模块测试实例,UART,模块首先向,PC,机发送字符串,然后等待接收,PC,

24、机从串口发送来的数据,若成功接收到,1,个数据,则立即将该数据回发给,PC,机,随后继续等待接收,1,个数据并回发,如此循环。下图给出的是串口测试情况。,串口调试工具软件界面,20,2025/4/29 周二,4.6,以中断方式接收的,UART,模块测试实例,中断方式的基本概念,在程序中断方式中某一外设的数据准备就绪后,它“主动”向,CPU,发出请求中断的信号,请求,CPU,暂时中断日前的工作而进行数据交换当,CPU,响应这个中断时便暂停运行主程序,并自动转移到该设备的中断服务程序当中断服务程序结束以后,CPU,又回到原来的主程序,中断与异常的含义,中断服务例程,ISR,中断源与中断向量表,中断

25、优先级,可屏蔽中断与不可屏蔽中断,中断处理的一般过程,21,2025/4/29 周二,4.6,以中断方式接收的,UART,模块测试实例,堆栈的使用,K60CPU,的中断过程的详细说明,中断的关闭与开启方法,中断的处理过程一般为:,关中断、保护现场、,执行中断服务程序、,恢复现场、开中断等,中断过程,CPU,中寄存器进出栈情况,22,2025/4/29 周二,在,CW10.1,环境下使用中断的步骤是:,在,main.c,中,依照“关总中断开模块中断开总中断”的顺序打开模块中断;,在,isr.c,文件中,编写中断服务程序;,在,vectors.h,文件中,修改中断向量表;,为了方便代码移植,在,c

26、ommon.h,文件中做了如下定义:,#,define EnableInterrupts asm(CPSIE i);/,开总中断,#define DisableInterrupts asm(CPSID i);/,关总中断,AW60,的中断编程的可概括为下述,3,个步骤:,新建(或者复制)一个,isr.c,文件,并加入工程中,定义中断向量表(复制,isr.c,的应修改中断向量表),定义,ISR,并在中断向量表中填入相应,ISR,的名称,4.6,以中断方式接收的,UART,模块测试实例,23,2025/4/29 周二,UART0,接收中断,UART0,模块首先向,PC,机发送字符串“,Hello

27、World!,”;同时,串口等待接收从,PC,机发来的数据,一旦接到数据,马上将该数据回发给,PC,机。串口接收程序使用中断来实现,中断处理程序执行完毕后,又回到主程序。,串口0接收中断服务例程,void isr_uart0_re(void),uint8 ch;,uint8 flag=1;,DisableInterrupts,;/,关总中断,ch=hw_uart_re1(UART_0,if(0=flag),hw_uart_send1(UART_0,ch);,EnableInterrupts;,/,开总中断,4.6,以中断方式接收的,UART,模块测试实例,24,2025/4/29 周二,第,4

28、章 习题,1,简要阐述异步串行通信涉及的主要基本概念。,2,表征串行通信速度的物理量是什么?串行通信的传输速度有限制吗?,3,MCU,与,PC,之间进行串行通信,为什么要进行电平转换?如何进行电平转换?,4,给出,UART,编程的通用模型。,5,简述中断的作用与处理过程。,6,K60,系列,MCU,都有哪些中断源?,7,K60,系列,MCU,的中断执行过程分为哪几个步骤?,8,给出,K60,中断编程框架与基本步骤。,25,2025/4/29 周二,9.,用一种高级语言实现,PC,方串行数据收发的通用程序(要求:从,PC,方发送数据,A,到,MCU,,,MCU,收到后,判断是否是,A,,若是,

29、回发给,PC,机,在,PC,机显示“串行口正常”,若不是,则在,PC,机显示:“通信有误”。),10.,在上一题测试的基础上编写通信程序,实现如下功能:通过,PC,机发送一个命令以控制接在,PTA0PTA7,口的,8,个小灯亮暗状态,各个小灯初始状态都为暗,首先进行通信测试,,PC,机发送“,A,”,若,MCU,接收到则,8,个小灯全亮,并回送字符“,A,”,虽然,MCU,接收到但有问题,不是“,A,”,说明有误码,则,4,个小灯全亮,并回送字符“,0,”,否则,8,个小灯全暗无反应,通信测试成功后进入控制状态,,PC,机发送字符串“,11,”,,PTA0,口灯亮;发送“,10,”,,PTA0,口灯暗;发送“,21,”,,PTA1,口灯亮;发送“,20,”,,PTA1,口灯暗;依此类推,当给,PTA,口发送“,01,”,,8,个小灯全亮,发送“,00,”,全暗。,26,2025/4/29 周二,

展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服