基于MC9S12DT512的通用串口_第1页
基于MC9S12DT512的通用串口_第2页
基于MC9S12DT512的通用串口_第3页
基于MC9S12DT512的通用串口_第4页
基于MC9S12DT512的通用串口_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1 基于MC9S12DT512 的通用串口 与CAN 总线接口转换设计 张浩 1 2 周凯1 2 王晓平1 彭道刚1 2 1 上海电力学院 2 同济大学 摘要 结合嵌入式微控制器 MC9S12DT512 主要特性 重点介绍了以微处理器 MC9S12DT512 为核心的 串口与 CAN 总线之间的接口转换设计实现 在分析处理器模块主要技术性能的基础上 完成串口及 CAN 总线 接口电路的硬件设计 通过对串口及 CAN 总线工作状态的设置 结合软件设计 进行数据收发 实现通用串 口与 CAN 总线接口间通信的目的 关键词 关键词 MC9S12DT512 串口 CAN 接口转换 Design of Common Serial Interface to CAN bus Interface Converter with MC9S12DT512 Zhang Hao Zhou Kai Wang Xiao Ping Peng Daogang Abstract Combined with main characters of embedded MCU MC9S12DT512 the design of common serial interface to CAN bus interface converter using the MCU MC9S12DT512 as the core is described in this paper On basis of the analysis of the technical performance of MCU module the hardware of common serial interface and CAN bus interface are designed By setting up working mode of the common serial interface and CAN bus interface combining the soft design then data receiving an date sending were realized which meet the need of communication from common serial interface to CAN bus interface Keywords MC9S12DT512 serial interface controller area network CAN interface converter 1 引言 控制器局域网 Controller Area Network CAN 是 一种有效支持分布式控制或实时控制的串行通信 网络 主要应用在汽车监控 开关量控制 制造 业等领域内的数据通信 它最初是为了解决汽车 中众多的控制与测试仪器之间的数据交换而开发 的一种串行数据通信总线 属于现场总线范畴 1993年 CAN 总线成为国际标准 ISO11898 道 路车辆的高速控制局域网数字信息交换标准 CAN属于总线式串行通信网络 由于采用了 许多新技术和独特的设计 与一般的通信总线相 比 它的数据通信具有突出的可靠性 实时性和 灵活性 CAN总线主要有以下特点 1 允许多种 工作方式 介质访问采用非破坏性位仲裁方式 能够有效避免总线冲突 2 信号传输采用短帧结 构 占用总线时间短 3 数据采用循环冗余码 2 CRC校验 出错率低 具有较强的抗干扰能力 4 采用数据块编码 数据块标识符可由11 bit或 29 bit二进制数组成 最多可定义211或229个数据块 使不同节点同时接收相同数据 5 信号传输介质 为双绞线 通信速度高 通信速率最高可高达1 Mb s 此时通信距离最长为40m 通信距离 教育部科学技术研究重点项目 206049 上海市科技攻关项目 061111004 上海市曙光跟踪计划项目 06GG13 上海市重点科建项目 P1303 最远可达到10 km 此时通信速率仍可达 5kb s 挂 接设备最多可达110个 CAN总线作为国际上应用 最广泛的现场总线之一 在工业控制领域得到了普遍 应用 并被认为是最有前途的现场总线之一 1 我们在项目研究过程中 遇到这样的问题 系 统设计要求能够通过多种通信方式与外部信号进行 数据交互通信 CAN总线作为应用最广泛的一种现 场总线当然必不可少 但我们以高性能 PowerPC8248处理器为核心的用户开发板中 没有 支持与CAN总线通信的通信接口 如果在用户开发 板中直接扩展CAN通信接口 系统整体契合度将很 难保证 且研究难度大 技术成本过高 所以我们 考虑采用16位微处理器MC9S12DT512设计一独立 接口板 该接口板实现 CAN口与通用串口间的接口 转换 并通过通用串口与我们的用户板相连 从而 实现用户板对CAN总线的数据收发功能 2 通用串口与CAN总线接口转换系统 结构设计 2 1 16 位微控制器 MC9S12DT512 MC9S12DT512 是 Freescale 半导体公司 MC9S12 系列中的一款高性能 16 位微控制器 它 在处理速率高达 24MHz 的 S12 处理器的基础上进 一步提高 集成一 XGATE 协处理器 使微控制 器性能提高 2 5 倍 同时延续 S12 处理器的高度 管脚复用性 MC9S12DT512 有众多的硬件资源 以下为它的一些技术特性 1 512 KB Flash EEPROM 4KB EEPROM 32 KB SRAM 2 一个 16 路 A D 转换器和一格 8 路 A D 转 换器 3 五路 CAN 控制器 符合 CAN 规范 CAN2 0A B 总线数据波特率可达 1Mb s 4 6 路异步串行通信接口 SCI 3 路同步 外部串行接口 SPI 5 8 路脉冲宽度调节器 PWM 通道 可以看出 MC9S12DT512 是一块资源丰富的 高性能 MCU 它内部集成了五路 CAN 控制器 3 支持 CAN2 0B 规范 总线速率可达 1Mb s 同时 有多达 6 路串行通信接口 这就为我们串口到 CAN 总线接口硬件实现打下坚实的基础 2 2 2 系统结构设计 通用串口和CAN总线接口转换系统主要是实现 通用串口RS232与CAN总线数据之间的互联通信 图1为串口与CAN总线接口转换系统结构图 3 RS232 接口板 MC9S 12DT 512 ICL 3232 82C250 用户板 CAN 总线 图1 串口与CAN总线接口转换系统结构图 系统微控制采用 MC9S12DT512 它内置有 CAN 控制器 主要负责监控任务 CAN 总线接 口电路由 CAN 总线收发器 PCA82C250 来实现 通用串口 RS232 通信端主要由串口收发器 ICL3232 来实现 系统硬件结构除了上述主要部 分外 当然还需要其他一些系统运行必不可少的 硬件部分如 电源隔离模块 复位电路 外部晶 振模块等 本文就不再探讨这些硬件组成 3 通用串口与CAN总线接口转换的软 硬件实现 3 1 硬件实现 由于该设计用的嵌入式微控制器 MC9S12DT512 继承了 CAN 总线控制器 所以硬 件实现相对来说较为简单 主要包括两块 串口 收发器 ICL3232 与 MCU 的硬件连接 如图 2 所 示 以及 CAN 总线收发器 PCA82C250 与 MCU 的连接 如图 3 所示 图 2 串口收发器 ICL3232 和 MC9S12DT512 的连接 图 3 CAN 总线收发器与 MC9S12DT512 的连接 其中TxD0 RxD0 为MC9S12DT512 串口数据发送 接收管脚线 TxCAN0 RxCAN0 为MC9S12DT512CAN 总线发送 接收管脚线 它们均为管脚复用 COM 为 标准RS232 串行接口 通过串行线与用户板串口进 行连接 CAN PORT 作为CAN 总线接口接入点 CANH 与CANL 之间加有一个120 的电阻 这个电阻对于 总线阻抗的匹配起着相当大的作用 去掉它会使数 据通信的抗干扰性及可靠性大大降低 3 2 软件实现 4 一个好的应用程序一般应具备一定的灵活性 和通用性 也就是模块化设计 这样它可以移植 应用到不同的应用系统去 因此软件设计时应采 用模块式机构 把程序中多次使用的程序写为功 能子程序 这样既便于容错和调试连接 又便于 移植 修改和再次开发应用 本次设计的通用串口和 CAN 总线接口转换系 统的软件设计也基于以上原则 设计了基于 MC9S12DT512 的串口和 CAN 总线接口转换的程序 实现 包括模块初始化 包括串口和 CAN 控制器 串口收 CAN 口发数据处理及 CAN 口收串口发数据 处理 3 个基本模块和对应的功能子程序 图 4 为 本软件实现的程序结构图 图 4 串口与 CAN 总线接口转换程序结构图 3 2 1 初始化模块 初始化模块包括 CAN 控制器初始化和串口初 始化两块 其中 CAN 控制器初始化主要包括 CAN 中断设置 CAN 位定时设置 验收滤波器配置及 CAN 控制器错误报警界限值配置等 串口初始化 主要包括串口工作方式设置 定时器方式设置 波特率设置以及串口中断相关设置等 对于串口 和 CAN 控制器 本文中就不再赘述 3 2 2 串口收 CAN 口发数据处理模块 微处理器在对串口和 CAN 总线接口进行处理 时 可以采用轮训查看串口和 CAN 控制器状态的 方式 也可以采用中断的方式 本文中 转换器 串口接收及 CAN 口接收都采用中断方式 图 5 为 串口收 CAN 口发数据处理模块程序流图 其中串口接收数据处理及 CAN 数据发送处理 为该模块的两个功能子程序 当发生串口接收中 断时 程序调用串口中断接收子程序对串口数据 进行接收 它首先关串口中断 清除串口接收中 断标志位 4 然后从串口接收缓冲区读出串口数 据并保存到事先定义好的数据缓存区 串口接收 数据处理子程序的程序流图如图 6 所示 图 5 串口收 CAN 口发数据处理模块程序流图 5 图 6 串口接收数据处理子程序流程图 程序然后判断缓存区是否有数据 若没有数 据表示串口数据读入失败 结束函数 程序返回 若有数据 则表示串口数据已成功读入数据缓存 区 将缓存区数据发送到 CAN 控制器发送缓存区 再调用 CAN 数据发送处理子程序 CAN 数据发 送处理子程序的数据流图如图 7 所示 图 7 CAN 数据发送处理子程序流程图 由于每个 CAN 控制器有 3 个发送缓冲区 CAN 数据发送子程序首先判断是否有发送缓冲区 空闲 并选择空闲缓冲区 然后调用 WriteCANTxBuf 函数将要发送的数据写入发 送缓冲区 最后启动 CAN 发送命令 5 3 2 3 CAN 口收串口发数据处理模块 CAN 口收串口发数据处理模块也采用中断接收 模式 它的程序流图如图8 所示 其中串口数据发 送比较简单 这里用串口数据发送命令来实现 图 8 CAN 口收串口法数据处理模块程序流图 CAN 控制器数据接收是该模块的重点 它包括 两部分 CAN 接收中断处理函数Write CAN RcvBuf 和 数据读取处理函数Read CAN RcvBuf 它们的程 序流程图如图9 所示 a CAN 接收中断处理函数流程图 6 b 数据读取处理函数流程图 图 9 程序流程图 当发生 CAN 报文接收中断时 调用中断处理 函数 Write CAN RcvBuf 它将接收到的报文写 入设定的缓冲区 为了方便的暂存数据 设计了 数据接收环形缓冲区 同时定义读指针 写指针 以及缓冲区满标志 当 CAN 总线数据写入到环形 缓冲区时 相应的写指针将加 1 如果写指针大 于缓冲区长度 写指针清零 如果写指针等于读 指针 说明之前的报文未及时读取 接受缓冲区 已满 满标志置位 之后释放 CAN 数据寄存器中 数据 由下一帧接收到的报文代替 数据的实际读取是由 Read CAN RcvBuf 函 数实现 它直接由环形缓冲区中读取数据 根据 读指针和写指针是否相等判断缓冲区是否有数据 存在 若存在 把缓冲区中读指针对应得数据帧 读取 读指针加 1 函数返回数据接收成功 若 无数据 则程序结束 返回数据接收失败 4 结束语 本文基于实际项目中遇到的困难 设计了接 口板实现通用串口和 CAN 总线接口转换 从而实 现我们用户板和 CAN 总线之间的数据通信 该设 计的优点有 1 接口板独立设计 结构清晰 保证了用户板 的契合度 且利于系统维护和纠错 2 通信监控程序在接口板中运行 节省了用户 板的硬件资源 利于以后的系统扩展 3 采用高性能微处理器保证数据转换速率 提 供用户板和 CAN 总线之间高的通信速率 本设计中的通用串口和CAN总线接口转换器 虽然是针对特定的项目背景设计实现的 但同样 可以作为典型的通用串口和CAN总线接口转换器在 工业控制网络中得到广泛的应用 该转换器对于 实现CAN接口设备和串口设备之间的互连通信以及 提高串口通信速率将起到

温馨提示

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

最新文档

评论

0/150

提交评论