付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 串行通信模块及第一个中断程序结构1主要内容:6.1 异步串行通信的通用基础知识6.2 UART模块功能概述及编程结构6.3 UART驱动构件封装6.4 KL25的中断机制及UART接收中断程序实例6.5 进一步讨论6.6 本章小结6.1 异步串行通信的通用基础知识6.1.1 串行通信的基本概念实现异步串行通信功能的模块在一部分MCU中被称为通用异步收发器(Universal Asynchronous Receiver/Transmitters,UART),在另一些MCU中被称为串行通信接口(Serial Communication Interface,SCI)。1.异步串行通信的格式异
2、步串行通信通常采用NRZ数据格式, 其英文译为“标准不归零传号/空号数据格式”,“不归零”的最初含义是:用正、负电平表示二进制值,不使用零电平。“mark/space”即“传号/空号”分别是表示两种状态的物理名称,逻辑名称记为“1/0”。 2下图给出了8位数据、无校验情况的传送格式32.串行通信的波特率串行通信的波特率单位是位/秒,记为bps。通常情况下,波特率的单位可以省略。通常使用的波特率有300、600、900、1200、1800、2400、4800、9600、19200、38400、57600、115200等 。3.奇偶校验字符奇偶校验检查(character parity check
3、ing)称为垂直冗余检查( vertical redundancy checking,VRC),它是每个字符增加一个额外位使字符中“1”的个数为奇数或偶数。奇校验:如果字符数据位中“1”的数目是偶数,校验位应为“1”,如果“1”的数目是奇数,校验位应为“0”。偶校验:如果字符数据位中“1”的数目是偶数,则校验位应为“0”,如果是奇数则为“1”。4.串行通信的传输方式1)单工(Simplex):数据传送是单向的,一端为发送端,另一端为接收端。这种传输方式中,除了地线之外,只要一根数据线就可以了。有线广播就是单工的。42)全双工(Full-duplex):数据传送是双向的,且可以同时接收与发送数据
4、。这种传输方式中,除了地线之外,需要两根数据线,站在任何一端的角度看,一根为发送线,另一根为接收线。一般情况下,MCU的异步串行通信接口均是全双工的。3)半双工(Half-duplex):数据传送也是双向的,但是在这种传输方式中,除了地线之外,一般只有一根数据线。任何一个时刻,只能由一方发送数据,另一方接收数据,不能同时收发。56.1.2 RS-232总线标准MCU引脚输入/输出一般使用TTL(Transistor Transistor Logic)电平,即晶体管-晶体管逻辑电平,它适用于板内数据传输。为使信号传输得更远,美国电子工业协会EIA(Electronic Industry Asso
5、ciation)制订了串行物理接口标准RS-232C,以下简称RS-232。目前几乎所有计算机上的串行口都是9芯接口。66.1.3 TTL电平到RS-232电平转换电路具有串行通信接口的MCU,一般具有发送引脚(TxD)与接收引脚(RxD),不同公司或不同系列的MCU,使用的引脚缩写名可能不一致,但含义相同。串行接口的外围硬件电路,主要目的是将MCU的发送引脚TxD与接收引脚RxD的TTL电平,通过RS-232电平转换芯片转换为RS-232电平。下图给出一个基本芯片MAX232引脚图及串行通信接口电平转换电路7MAX232芯片进行电平转换基本原理是:发送过程:MCU的TXD(TTL电平)经过M
6、AX232的11脚(T1IN)送到MAX232内部,在内部TTL电平被“提升”为RS-232电平,通过14脚(T1OUT)发送出去。接收过程:外部RS-232电平经过MAX232的13脚(R1IN)进入到MAX232的内部,在内部RS-232电平被“降低”为TTL电平时,经过12脚(R1OUT)送到MCU的RXD,进入MCU内部。86.1.4 串行通信编程模型从基本原理角度看,串行通信接口UART的主要功能是:接收时,把外部的单线输入的数据变成一个字节的并行数据送入MCU内部;发送时,把需要发送的一个字节的并行数据转换为单线输出。96.2 UART模块功能概述及编程结构6.2.1 UART模块
7、功能概述1. 外部引脚MKL25Z128VLK4芯片共有三个串口,分别标记为UART0、UART1、UART2。它们并不是固定在哪几个引脚上,而是通过可以引脚配置寄存器配置。2基本结构与特点KL25中共有3个UART模块,分别为UART0、UART1和UART2。可编程的8位、9位或10位数据模式,其中UART1与UART2只支持8位与9位数据模式,UART0支持全部的数据模式。每个UART模块都有13位模数分频器。每个UART模块都可以独立地启用发送器和接收器,分别设置发送器与接收器的极性。UART0支持双边沿采样,而UART1与UART2不支持此功能。106.2.2 UART模块编程结构1
8、寄存器地址分析KL25芯片有3个UART模块。每个模块有其对应的寄存器。2控制寄存器1)UARTx控制寄存器2(UARTx_C2)2)UARTx控制寄存器1(UARTx_C1)3)UART0控制寄存器4(UART0_C4)4)UART0控制寄存器5(UART0_C5)3状态寄存器UARTx_S14. 波特率寄存器波特率高字节寄存器(UARTx_BDH)波特率低字节寄存器 (UARTx_BDL)5. 数据寄存器UARTx_D(x=02)116.4 KL25的中断机制及UART接收中断程序实例126.4.1 KL25中断基本概念1中断的概念及其KL25中断分类所谓中断,是指MCU在正常运行程序时,
9、 由于MCU内核异常或者MCU各模块发出请求事件,引起MCU停止正在运行的程序,而转去处理异常或执行处理外部事件的程序(又称中断服务程序)。这些引起MCU中断的事件称为中断源。KL25的中断源分为两类,一类是内核中断,另一类是非内核中断。内核中断主要是异常中断,也就是说,当出现错误的时候,这些中断会复位芯片或是做出其他处理。非内核中断是指MCU各个模块为中断源引起的中断, MCU执行完中断服务程序后,又回到刚才正在执行的程序,从停止的位置继续执行后续的指令。非内核中断又称可屏蔽中断,这类中断可以通过编程控制,开启或关闭该中断。2中断向量表的概念中断向量表是指按照中断源的中断向量序号的固定顺序,
10、存放中断服务程序入口地址的一段存储区域。每个中断服务程序入口地址占用4个字节单元,KL25中断向量表的位置在存储区0 x0000_00000 x0000_00c0的一段地址范围,一共48*4=192个字节,存放48个中断服务程序的入口地址。中断服务程序的入口地址又称为中断向量或中断向量指针,它指向中断服务程序在存储器中的位置。136.4.2 KL25中断向量表文件 如何将中断服务程序的入口地址(中断向量),按照中断源的中断向量序号的顺序,写入到中断向量表的位置呢?定义一个常量指针数组,再把中断向量存入这个数组中,工程编译时由链接文件intflash.ld指定这个数组存放到中断向量表的位置。 在
11、CW10.3开发环境下,这个常量指针数组是在vectors.h 和vectors.c两个文件中实现的,由于这两个文件定义和存放着中断向量,所以vectors文件称为中断向量表文件。146.4.3 KL25的中断服务程序及其“注册”1. 中断服务程序设计中断服务程序的设计与普通构件函数设计是一样的,只是这些程序只有在产生中断时才被执行。为了规范编程将各个中断服务程序,放在“isr.c”中断底层驱动构件源文件。如编写一个串口中断服务程序,串口1有数据到来时产生中断,执行isr_uart1_re(void)接收中断服务程序。服务程序首先进入临界区关总中断,接收一个到来的字符。若接收成功成功,则把这个
12、字符发送回去,退出临界区。2. 中断服务程序的“注册”中断服务程序的“注册”就是将用户编写好中断服务程序入口地址,添加到中断向量表中。实际是在中断向量表头文件vectors.h中,将宏定义的中断服务函数名替换成用户编写好中断服务程序名。156.4.4 ARM Cortex-M0+非内核模块中断编程结构1M0+中断结构及中断过程由模块中断源、中断控制器(NVIC)和M0+内核组成。其中断过程分为二步:(1)模块中断源向中断控制器(NVIC)发出中断请求信号。(2)中断控制器对发来的中断信号进行管理,判断该中断是否允许中断,若允许,通过私有外设总线发送给M0+内核,由内核进行中断处理;如果同时有多
13、个中断信号到来,NVIC根据设定好的中断信号的优先级进行判断,优先级高的中断首先响应,优先级低的中断挂起,压入堆栈保存;如果优先级完全相同的多个中断源同时请求,则先响应IRQ中断号较小的,其他的被挂起。1617M0+中断结构原理图:2NVIC各寄存器简介NVIC向量中断控制寄存器共有12个寄存器,如下表所示。183中断初始化设置步骤根据KL25的中断机制,想让一个非内核中断源能够得到内核响应,必须要进行初始化设置。初始化的几个基本步骤如下:(1)设置模块中断使能位使能模块中断,使模块能够发送中断请求信号。例如在UART中,将控制寄存器C2的RIE位置1。(2)在中断控制器中设置中断使能寄存器,
14、使该模块对应的使能位置1,允许该中断请求。4中断初始化示例串口模块中断初始化函数uart_enable_re_int(),包含两个方面的内容,一在控制寄存器UARTx_C2中,将接收中断允许位D5设置成1。另外根据IRQ号,在断控制器NVIC中断使能寄存器(NVIC_ISER),将对应为置1开中串口模块中断。6.5 进一步讨论KL25串口支持DMA传输。所谓DMA(Direct Memory Access,直接内存存取),是指存储器的内容可以不经过CPU而与外部设备之间直接传输。DMA是所有现代微控制器的重要特色,它允许不同速度的硬件装置来沟通,而不需要依于 MCU 的大量中断负载。否则,MC
15、U 需外设把资料复制到暂存器,然后再把它们写到新的地方。在这段时间,MCU无法做其他工作。DMA 传输将数据从一个地址空间复制到另外一个地址空间。当MCU 初始化这个传输动作,传输动作本身是由 DMA 控制器来实行和完成。196.6 本章小结(1)学习和掌握通信串行通信的基本知识,是通信串行通信程序设计的前提。(2)理解掌握串口模块涉及的编程寄存器各字段位的作用,是编写串口驱动程序的基础。(3)以KL25芯片为基础,封装了UART驱动构件驱动程序,设计了构件文件uart.h和uart.c,在构件中包括:模块初始化(uart_init)、接收1字节(uart_re1)、发送1字节(uart_send1)、等底层操作函数,另外,还添加了接收多字节(uart_reN)、发送多字节(uart_sendN)、发送字符串(uart_send_string)等常用的基本操作函数。(4)中断程序设计是嵌入式系统开发的一项重要内容。(5)本章阅读资料。20习题 61简述MCU与PC之间进行串行通信,为什么要进行电平转换?如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- BIM施工安全隐患检测
- 2025-2026学年小学趣味跑教学设计
- 2025-2026学年教案简短反思
- 智能建筑安全管理系统验收方案
- 企业设计阶段进度控制方案
- 2025-2026学年speaking课教学设计
- 2025-2026学年这个音乐游戏教案
- 3-Hydroxymandelic-Acid-Standard-生命科学试剂-MCE
- 2025-2026学年元宵家宴教案
- 2026年教育教学干事文笔测试题及答案
- GB/T 44731-2024科技成果评估规范
- 医学教材 《狂犬病暴露预防处置工作规范(2023年版)》解读课件
- 马戏团表演行业分析报告及未来三年行业发展报告
- 新部编版六年级语文下册一单元考试卷附答案
- 部编版五年级道德与法治下册全册必背知识点
- 《销售人员培训教材》课件
- 初中音乐八年级上册(简谱) ☆御风万里
- 樱与刀:日本民间故事集
- 项目一 新能源汽车维护作业前场地要求与准备
- GB/T 42756.1-2023卡及身份识别安全设备无触点接近式对象第1部分:物理特性
- 中国精神障碍分类与诊断标准第3版
评论
0/150
提交评论