0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于EPA和PTS实现串行通信的设计与应用

电子设计 来源:单片机与嵌入式系统应用 作者:刘素丽 2021-05-27 11:01 次阅读

目前,在众多应用领域中,出现了许多所谓“智能仪表”和“智能仪器”,这些系统大多是以单片机为核心的计算机应用系统。在众多的单片机中,Intel公司的8XC196MC/MD可谓其中的佼佼者。它是16位单片机中功能最强大的单片机之一,几乎可以胜任各种测控工作,尤其在电机控制中备受青睐。然而由于8X196MC/MD单片机没有提供硬件的通用异步收发器UART),这给用惯了UART的用户带来了一些不便。但利用专门的PTS模式,不仅可以实现串行通信,而且操作更加灵活,效率更高,CPU的开销也更小;既可以实现异步(ASIO)功能,也可以实现同步(SSIO)功能;波特率由EPA建立,包括校验位和停止位在内,收发数据格式可达16位/字符。

1 EPA和PTS概述

1.1 EPA及其工作原理

EPA(Event Processor Array,事件处理器阵列),类似于HSIO,用来处理与时间有关的输入和输出事件,但比其更灵活、更高效。在EPA中,主要提供两类模块--捕获/比较模块和独立的比较模块,用于实现捕获和比较两种功能。每个模块都与指定的一个输入/输出引脚相关联,支持其高速输入输出功能,所有模块都能产生中断。“捕获”用来捕获产生于引脚上的跳变事件,包括正跳变、负跳变和正负跳变,并记录这些事件发生的时刻;“比较”是和预定的时间作比较,时间一到即执行以下选定的输出功能:复位定时器,启动一次A/D转换,为波形发生器产生一个重装载触发信号,改变输出引脚状态等。

1.2 PTS及其工作原理

PTS(Peripheral Transaction Server,外设事务服务器),是一种特殊的中断响应方式。与普通中断响应相比,PTS响应把同一个中断映射到相应的PTS通道。该通道产生一个PTS周期,它就像DMA周期那样插入到正常指令流中,不需要额外的软件开销,因此其CPU开销要比一般的中断响应少得多。PTS有一个PTS向量表,其排列次序和优先级顺序与普通中断向量相同,但去掉了NMI、非法操作码和软件陷阱3种中断。除了NMI之外,所有的PTS通道的优先级高于任何一个普通中断。每个PTS向量都指向一个PTS控制块(PTSCB),控制块说明了应执行的微代码。它必须驻留在内部RAM空间内,每个控制块包含8个字节,其首址应能被8除尽。

8XC196MC/MD有4种PTS工作方式,要实现串行通信需使用其SIO(串行输入/输出)方式。其中SIO有两种方式:ASIO(异步串行I/O)和SSIO(同步串行I/O)。要工作于某一方式必须建立相应的控制块(PTSCB)。与SIO方式相对应的控制块有两个,如图1所示。此处只对BAUD和SAMPTIME加以说明。

BAUD(LO和HI):存放控制SIO运行波特率的16位数据。异步方式下,由下式计算:FXTAL/(4×波特率×EPA预置值)。其中:FXTAL为XTAL1脚的输入频率,单位为Hz。

SAMPTIME:只用于异步接收多数采样方式,用来指定采样时间间隔,由下式计算:FXTAL×Tsam/2-9。其中,Tsam为采样间隔时间(μs);FXTAL同上,但单位为MHz。

2 利用EPA和PTS实现串行通信

2.1 基本思想

利用EPA和PTS实现串行通信的基本思想是:首先,选择一个EPA捕获/比较模块作为串行通信的接收模块,选择一个独立比较模块(或选择一个捕获/比较模块而只利用其比较方式)作为串行通信的发送模块,构成串行通信的硬件端口。然后,对所选的EPA模块开辟相应的PTS通道,根据通信要求编写发送和接收PTS模块。EPA和PTS两者联合工作共同实现串行通信。

2.2 应用实例及具体实现

下面以常用的异步串行通信方式为例介绍具体的实现原理和方法。本例用一个EPA捕获/比较模块CAPCOMP0产生移位时钟,P2.O作发送端(TXD),波特率为9 600 bps,8位数据位,无校验位,1位停止位,用定时器1作时基,16MHz晶振。由于篇幅所限,仅介绍异步串行发送。

2.2.1 建立并定位控制块

要利用PTS实现串行通信,必须首先定义相应的控制块,并将其定位于能被8整除的首地址处;还要将控制块地址赋给PTS向量。具体实现代码如下:

2.2.2 发送初始化及PTS中断子程序

在发送时,要用到EPA中的一个比较模块,或者使用一个捕获/比较模块而使其工作于比较方式下,主要用作发送时产生移位时钟,以保证指定的位周期。其具体过程如下:首先,在指定的发送引脚上产生一个下降沿(为确保产生下降沿,应先对该引脚置1),并根据指定的波特率对EPA比较模块的时间寄存器(CAPCOMPx_TIME或COMPx_TIME)置值,以指定发送的位周期。然后,打开中断和PTS功能,启动数据发送过程;以后每隔一个位周期便会产生一个PTS周期,在每个PTS周期中,将DATA寄存器中的数据逐位移到指定的发送脚上,直到最后一位移出后,产生一次End_of_PTS中断,该帧数据发送完毕。每帧数据的位数在控制块的ptscount中指定。如果需要继续发送数据,就要在中断服务程序中对PTSCB、EPA时间寄存器和相应引脚重新初始化,再次启动发送过程。发送数据保存在transmit数组中,发送帧数,即数据个数由T_Count控制。具体实现代码如下:

结语

该方法和实例已在实际应用中得到验证。实践证明其完全可以满足串行通信的需要,而且效率更高,更加灵活。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10428

    浏览量

    206511
  • 服务器
    +关注

    关注

    12

    文章

    8099

    浏览量

    82483
  • 智能仪器
    +关注

    关注

    1

    文章

    53

    浏览量

    14940
收藏 人收藏

    评论

    相关推荐

    ZigBee接入EPA网络的安全策略

    ZigBee接入EPA网络的安全策略针对ZigBee技术的特点,结合EPA控制网络的安全规范与工业现场实际应用的需要,提出ZigBee接入EPA网络的安全策略与基于安全组态的实现方法。
    发表于 03-19 16:47

    EPA是什么

    疫情之下中国出口厂商不能忽略的美国EPA注册随着欧美疫情的加重,越来越多消毒抑菌器具,空气杀菌设备以及灭虫类电器设备加速出口美国;但最近不少企业在货物进入美国海关的时候被要求提供EPA。那EPA是谁
    发表于 07-23 10:33

    如何去实现FPGA与PC的串行通信

    如何去实现FPGA中的各个模块?如何去实现FPGA与PC的串行通信
    发表于 05-26 07:25

    通过SCI实现串行通信

    SCI 是全双工异步串行通信接口,主要用于 MCU 与其他计算机或设备之间的通信,几个独立的 MCU也能通过 SCI 实现串行
    发表于 12-07 12:48

    EPASafety--基于EPA的功能安全通信规范

    EPASafety--基于EPA的功能安全通信规范
    发表于 03-16 13:22 13次下载

    EPA通信调度测试方法与实现技术

    介绍了EPA通信协议模型和EPA通信调度规程,根据通信调度的原理和要求,研究了EPA协议确定性调
    发表于 03-16 17:42 6次下载

    EPASafety——基于EPA的功能安全通信规范

    EPASafety——基于EPA的功能安全通信规范 EPASafety——Functional Safety Communication Specification Based on EPA
    发表于 03-17 09:12 17次下载

    EPA 通信协议在μC/OS-II嵌入式系统中的设计与实现

    本文提出了一种基于μC/OS-II 嵌入式系统的EPA 通信协议的实现方案。简要介绍了 EPA 通信协议和模型,针对在以μC/
    发表于 05-25 15:02 18次下载

    PC 机与PLC 串行通信实现

    本文对FX系列PLC的通信协议进行了详细的介绍,并以VB为开发工具实现了PC机与FX系列PLC的串行通信。关键词: PLC ;串行
    发表于 05-30 08:28 26次下载

    EPA阀门定位器通信卡设计

    介绍了一种基于EPA 控制网络的阀门定位器通信卡的软硬件设计,有效地解决了现场设备同EPA 控制网络之间的数据通信;在通信卡中嵌入ZIGBE
    发表于 09-03 11:04 12次下载

    实现FPGA与PC的串行通信

    摘    要:本文主要介绍了基于FPGA技术实现与PC串行通信的过程,给出了各个模块的具体实现方法,分析了实现
    发表于 03-24 13:31 4695次阅读
    <b class='flag-5'>实现</b>FPGA与PC的<b class='flag-5'>串行</b><b class='flag-5'>通信</b>

    用VHDL语言在CPLD上实现串行通信

    摘 要: 串行通信实现远程测控的重要手段。采用VHDL语言在CPLD上实现串行通信,完全可以
    发表于 06-20 12:43 605次阅读
    用VHDL语言在CPLD上<b class='flag-5'>实现</b><b class='flag-5'>串行</b><b class='flag-5'>通信</b>

    DELPHI串行通信编程技术与实现

    介绍了基于DELPHI 环境的多种串行通信编程方法及编程技术,着重讨论了采用MSComm 控件实现串行通信的基本方法、技巧,并探讨了微机与多
    发表于 09-09 15:48 55次下载
    DELPHI<b class='flag-5'>串行</b><b class='flag-5'>通信</b>编程技术与<b class='flag-5'>实现</b>

    基于ARM的EPA通信协议栈优化技术的研究与实现

    本文叙述基于ARM的EPA通信协议栈优化技术的研究与实现的案例分析。
    发表于 10-13 16:48 32次下载
    基于ARM的<b class='flag-5'>EPA</b><b class='flag-5'>通信</b>协议栈优化技术的研究与<b class='flag-5'>实现</b>

    基于Windows CENET的串行通信实现

    为了实现基于Windows CE.NET的嵌入式单板机与单片机间通信设计了单板机SBC84500VEA与8051C单片机RS232 通信的硬件连接 定制了支持串行
    发表于 04-18 11:28 5次下载