K60-UART 串口通信讲解.ppt_第1页
K60-UART 串口通信讲解.ppt_第2页
K60-UART 串口通信讲解.ppt_第3页
K60-UART 串口通信讲解.ppt_第4页
K60-UART 串口通信讲解.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

第4章异步串行通信 2012 01 主要知识点 异步串行通信的通用基础知识 4 1 UART模块功能概述 4 2 K60的UART模块的编程结构 4 3 K60的UART构件设计概述 4 4 以查询方式接收的UART模块测试实例 4 5 4 6 以中断方式接收的UART模块测试实例 4 1异步串行通信的通用基础知识 4 1 1串行通信的基本概念异步串行通信的格式通用异步收发器 UniversalAsynchronousReceiver Transmitters UART 通常采用NRZ数据格式 其英文译为 标准不归零传号 空号数据格式 不归零 的最初含义是 用正 负电平表示二进制值 不使用零电平 mark space 即 传号 空号 分别是表示两种状态的物理名称 逻辑名称记为 1 0 下图给出了8位数据 无校验情况的传送格式 串行通信数据格式 串行通信的波特率串行通信的波特率单位是位 秒 记为bps 通常情况下 波特率的单位可以省略 通常使用的波特率有300 600 900 1200 1800 2400 4800 9600 19200 38400 57600 115200等奇偶校验字符奇偶校验检查 characterparitychecking 称为垂直冗余检查 verticalredundancychecking VRC 它是每个字符增加一个额外位使字符中 1 的个数为奇数或偶数 奇校验 如果字符数据位中 1 的数目是偶数 校验位应为 1 如果 1 的数目是奇数 校验位应为 0 偶校验 如果字符数据位中 1 的数目是偶数 则校验位应为 0 如果是奇数则为 1 4 1异步串行通信的通用基础知识 串行通信的传输方式单工 Simplex 数据传送是单向的 一端为发送端 另一端为接收端 这种传输方式中 除了地线之外 只要一根数据线就可以了 有线广播就是单工的 全双工 Full duplex 数据传送是双向的 且可以同时接收与发送数据 这种传输方式中 除了地线之外 需要两根数据线 站在任何一端的角度看 一根为发送线 另一根为接收线 一般情况下 MCU的异步串行通信接口均是全双工的 半双工 Half duplex 数据传送也是双向的 但是在这种传输方式中 除了地线之外 一般只有一根数据线 任何一个时刻 只能由一方发送数据 另一方接收数据 不能同时收发 4 1异步串行通信的通用基础知识 4 1 2RS 232总线标准串行传输标准MCU引脚输入 输出一般使用TTL TransistorTransistorLogic 电平 即晶体管 晶体管逻辑电平 它适用于板内数据传输 为使信号传输得更远 美国电子工业协会EIA ElectronicIndustryAssociation 制订了串行物理接口标准RS 232C 4 1异步串行通信的通用基础知识 上图为9芯串行接口排列 9芯串行接口引脚含义表 4 1 3RS 232C串行接口 4 1异步串行通信的通用基础知识 4 1 4TTL电平到RS 232电平转换电路 具有SCI接口的MCU 一般具有发送引脚 TxD 与接收引脚 RxD 不同公司或不同系列的MCU 使用的引脚缩写名可能不一致 但含义相同 SCI的外围硬件电路 主要目的是将MCU的发送引脚TxD与接收引脚RxD的TTL电平 通过RS 232电平转换芯片转换为RS 232电平 下图给出一个基本SCI电平转换电路及芯片MAX232引脚图 MAX232引脚 串行通信接口电平转换电路 4 1异步串行通信的通用基础知识 MAX232芯片进行电平转换基本原理是 发送过程 MCU的TXD TTL电平 经过MAX232的11脚 T1IN 送到MAX232内部 在内部TTL电平被 提升 为232电平 通过14脚 T1OUT 发送出去接收过程 外部232电平经过MAX232的13脚 R1IN 进入到MAX232的内部 在内部232电平被 降低 为TTL电平 经过12脚 R1OUT 送到MCU的RXD 进入MCU内 MAX232芯片输入输出引脚分类与基本接法 4 1异步串行通信的通用基础知识 4 2UART模块功能 基本原理角度串行通信接口的主要功能是 接收时 把外部的单线输入的数据变成一个字节的并行数据送入MCU内部 发送时 把需要发送的一个字节的并行数据转换为单线输出 接受引脚RxD 发送引脚TxD 发送移位寄存器 接受移位寄存器 UART数据寄存器 MCU内部总线 UART控制寄存器 UART状态寄存器 UART波特率寄存器 4 2UART模块功能 程序员角度看K60包括6个相同且独立的UART模块 每个模块都含有相互独立的发送器和接收器 1 外部引脚UART的外部引脚有 发送数据引脚 UTXDx 接收数据引脚 URXDx x 表示模块的编号 取值为0 5 2 波特率发生器UART0和UART1时钟源为内核时钟 UART2 UART5的时钟源为外设时钟 总线时钟 波特率由一个13位的模数计数器和一个5位的分数微调计数器共同决定 13位的SBR SBR 范围为1 8191 它决定了模块的时钟分频 微调计数器给波特率时钟增加一个细微的延时 以便匹配系统波特率 UART波特率 UART模块时钟 16 SBR SBR BRFA 4 2UART模块功能 收发器的工作UART发送器和接收器均可容纳8 9或10位数据字符 发送数据流程接收数据流程 4 3K60的UART模块编程结构 4 3K60的UART模块编程结构 4 4K60的UART构件设计概述 4 4 1UART构件设计概述以UART具有初始化 接收和发送三种基本操作为例 来说明实现构件化的全过程实现构件化编程的UART软件模块应当具有以下几个特点 UART模块是最底层的构件 它主要向上提供三种服务 分别是UART模块的初始化 接收单个字节和发送单个字节 向下则直接访问模块寄存器 实现对硬件的直接操作 另外 从现实使用角度出发 它还需要封装接收N个字节和发送N个字节的功能函数 UART模块在软件上对应1个hw uart c程序源代码文件和1个hw uart h头文件 当需要使用UART构件时 大多数情况下只需简单拷贝这两个文件即可 无需对源代码文件和头文件进行修改 只有当进行不同芯片之间的移植时 才需要修改头文件中与硬件相关的宏定义 上层构件或软件在使用该构件时 严格禁止通过全局变量来传递参数 所有的数据传递都直接通过函数的形式参数来接收 这样做不但使得接口简洁 更加避免了全局变量可能引发的安全隐患 4 4 2K60的UART构件的函数通过以上分析 可以设计UART构件的8个基本功能函数 1 初始化 uint8hw uart init uint8uartNo uint32baud 2 接收单个字节 uint8hw uart re1 uint8uartNo uint8 fp 3 发送单个字节 uint8hw uart send1 uint8uartNo uint8ch 4 接收N个字节 uint8hw uart reN uint8uartNo uint16len uint8 buff 5 发送N个字节 uint8hw uart sendN uint8uartNo uint16len uint8 buff 6 发送字符串 uint8hw uart send string uint8uartNo void buff 7 使能串口接收中断 voidhw uart enable re int uint8uartNo 8 禁止串口接收中断 voidhw uart disable re int uint8uartNo 4 4K60的UART构件设计概述 4 4 3K60的UART的头文件与UART通信子函数相关的文件有头文件hw uart h 以及包含UART初始化和收发子函数的程序文件hw uart c 头文件hw uart h中的内容可分为两个主要的部分 它们分别是8个函数原型的声明和外设模块寄存器相关信息的定义 前者给出了本UART构件对上层构件或软件所提供的接口函数 而后者则指明了本 元构件 与具体硬件相关的信息 这样设计 应用程序和上层构件在使用 调用 它时 将具有极大的灵活性 4 4K60的UART构件设计概述 4 5以查询方式接收的UART模块测试实例 程序查询方式程序查询方式是一种程序直接控制方式 这是主机与外设间进行信息交换的最简单的方式 输入和输出完全是通过MCU执行程序来完成的 一旦某一外设被选中并启动后 主机将查询这个外设的某些状态位 看其是否准备就绪 若外设未准备就绪 主机将再次查询 若外设已准备就绪 则执行一次I O操作 4 5以查询方式接收的UART模块测试实例 查询方式主循环 for 主循环 主循环 开始 1 主循环计数到一定的值 使小灯的亮 暗状态切换run counter if run counter 500 run counter 0 light change Light Run PORT Light Run1 light change Light Run PORT Light Run2 hw uart send string UART TEST HelloWorld r n 2 串口接收到数据后即刻回发ch hw uart re1 UART TEST 主循环 结束 4 5以查询方式接收的UART模块测试实例 UART模块首先向PC机发送字符串 然后等待接收PC机从串口发送来的数据 若成功接收到1个数据 则立即将该数据回发给PC机 随后继续等待接收1个数据并回发 如此循环 下图给出的是串口测试情况 串口调试工具软件界面 4 6以中断方式接收的UART模块测试实例 中断方式的基本概念在程序中断方式中 某一外设的数据准备就绪后 它 主动 向CPU发出请求中断的信号 请求CPU暂时中断日前的工作而进行数据交换 当CPU响应这个中断时 便暂停运行主程序 并自动转移到该设备的中断服务程序 当中断服务程序结束以后 CPU又回到原来的主程序 中断与异常的含义中断服务例程ISR中断源与中断向量表中断优先级可屏蔽中断与不可屏蔽中断中断处理的一般过程 4 6以中断方式接收的UART模块测试实例 堆栈的使用K60CPU的中断过程的详细说明中断的关闭与开启方法中断的处理过程一般为 关中断 保护现场 执行中断服务程序 恢复现场 开中断等 中断过程CPU中寄存器进出栈情况 在CW10 1环境下使用中断的步骤是 在main c中 依照 关总中断 开模块中断 开总中断 的顺序打开模块中断 在isr c文件中 编写中断服务程序 在vectors h文件中 修改中断向量表 为了方便代码移植 在common h文件中做了如下定义 defineEnableInterruptsasm CPSIEi 开总中断 defineDisableInterruptsasm CPSIDi 关总中断AW60的中断编程的可概括为下述3个步骤 新建 或者复制 一个isr c文件 并加入工程中定义中断向量表 复制isr c的应修改中断向量表 定义ISR并在中断向量表中填入相应ISR的名称 4 6以中断方式接收的UART模块测试实例 UART0接收中断UART0模块首先向PC机发送字符串 HelloWorld 同时 串口等待接收从PC机发来的数据 一旦接到数据 马上将该数据回发给PC机 串口接收程序使用中断来实现 中断处理程序执行完毕后 又回到主程序 串口0接收中断服务例程voidisr uart0 re void uint8ch uint8flag 1 DisableInterrupts 关总中断ch hw uart re1 UART 0 开总中断 4 6以中断方式接收的UART模块测试实例 第4章习题 1 简要阐述异步串行通信涉及的主要基本概念 2 表征串行通信速度的物理量是什么 串行通信的传输速度有限制吗 3 MCU与PC之间进行串行通信 为什么要进行电平转换 如何进行电平转换 4 给出UART编程的通用模型 5 简述中断的作用与处理过程 6 K60系列MCU都有哪些中断源 7 K60系列MCU的中断执行过程分为哪几个步骤 8 给出K60中断编程框架与基本步骤 9 用一种高级语言实现PC方串行数据收发的通用程序 要求 从PC方发送数据A到MCU MCU收到后 判断是否是A 若是 回发给PC机 在PC机显示 串行口正常 若不是 则在PC机显示 通信有误 10 在

温馨提示

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

评论

0/150

提交评论