基于AVR和TMS320VC5402的HPI接口通信设计

发布者:sheng44最新更新时间:2018-03-01 来源: eefocus关键字:AVR  TMS320VC5402  HPI接口通信 手机看文章 扫描二维码
随时随地手机看文章

    1.前 言

    TMS320VC5402(简称VC5402)是TI公司的DSP处理器,具有高级的数据处理结构和丰富的片内资源。但是VC5402 DSP内部不具有可编程的非易失片内存储器,所以为了保存程序代码和参数表,一般情况下要外扩一片存储器。VC5402可用的通用输入输出口(I/O port)少,软件上对I/O口的控制不灵活,没有对I/O口按位控制的指令,且具有流水线延迟。多不具有通用的通信接口如UART接口,CAN总线接口等,对控制的支持功能较少。AVR(Advanced RISC Architecture)单片机是ATMEL公司的flash型单片机,广泛应用于数据处理和控制领域,具有丰富的片内资源和灵活的接口形式。片内往往集成了几十kB乃至几百kB的flash存储器,每个端口几乎都可以通过软件设置为通用的I/O口和具有特殊功能的端口。将AVR单片机和VC5402处理器相结合,发挥各自的优点将是一个很好的设计方案。本文详细描述了AVR型单片机ATMEL64L和VC5402的HPI接口的硬件设计原理和软件设计构架,同时详细阐述了VC5402 HPI形式的bootloader方法及AVR实现方法。

    2.  硬件设计原理

    2.1. VC5402的HPI接口

    VC5402的HPI接口是一个增强版的8位并行的HPI接口简称为HPI-8[1]。在 HPI-8接口中VC5402是从机。主机可以访问VC5402中位于0x60~0x3FFF存储器空间的片内存储器,这一区域是VC5402用户可用的所有的片内存储器资源。主机通过两个寄存器:地址寄存器(HPIA)和数据寄存器(HPID)访问VC5402内部的存储器。还有一个控制寄存器(HPIC)包含有控制和状态信息。HCNTL[0..1]是HPIA、HPID和HPIC的选址信号。同时,VC5402对 HCNTL[0..1]=“01”设置了特殊的访问模式以加快主机访问片内存储器的速度。此时主机读写HPID的内容不用每次设置HPIA,当主机读 HPID时VC5402将当前HPIA所指出的片内存储器的数据传送到HPID寄存器,同时HPIA的内容减1,当主机写HPID时DSP先将当前 HPIA的内容加1,然后由此时HPIA所指出的片内存储器的数据传送到HPID寄存器。由此可见此种方式比较适合于主机访问DSP内部的连续存储器空间。由于DSP内部是按着16位的数据进行组织,所以主机通过8位的HPI口进行读写操作都必须由两次操作组成,在两次操作中由HBIL信号标明高低位字节。

    2.2. ATMEL64L简介

    AVR单片机是ATMEL公司的8位高性能的低功耗微控制器。具有高级的精简指令集结构,绝大多数指令都是单周期指令,执行速度快。ATMEL64L是 Atmega103的升级版,具有64k字节在线可编程的flash存储器,可用于存储程序和固定的数据。具有2k字节的EEPROM,位于数据区,可用于保存参数表。具有4k字节的SRAM,为动态数据结构的存储建立了可能。丰富的指令集、大容量而多样的存储器结构增加了ATMEL64L程序设计的灵活性。另外ATMEL64L还具有丰富的片内外设,诸如:USART、SPI、定时器/计数器、PWM通道、在片的模拟比较器等,提供了丰富的通信及控制资源。

    2.3. 硬件设计实现

    ATMEL64L和TMS320VC5402的HPI-8接口的硬件设计关键在于实现HPI-8接口的逻辑时序。我们研究ATMEL64L外部数据空间的读写时序[2]和HPI-8接口时序[1]发现:AVR的ALE信号在下降沿锁存低8位地址信号(DA7:0),而HAS信号也是在下降沿锁存HCNTL[0..1]、HBIL和HRW信号。在 AVR的WR信号的上升沿数据总线上的数据DA7:0已处于有效状态,在RD信号的上升沿来临时数据总线的数据DA7:0必须处于有效状态,同时HPI- 8的两个数据存储信号HDS1和HDS2均是在上升沿将相应的寄存器内容设置到HD[7..0]上或是将HD[7..0]的数据锁存到相应的寄存器。由此可见HPI-8的重要控制线均可以和AVR相应的控制线直接相连而不需要其他逻辑电路。设计的电路原理图见图1。

36.gif
              图1 电路原理图

    当DSP退出复位状态后,30个有效时钟周期内触发了一个有效的DSP中断2,则DSP将仅进入HPI的 bootloader加载方式。原理图中将HINT引脚和DSP INT2引脚直接相连就是为了DSP复位后实时的触发DSP INT2中断。VC5402通过ATMEL64L的INT2中断申请加载DSP程序

    3.HPI bootloader方式的实现

    3.1. DSP bootloader方式简介

    DSP的bootloader模式就是将DSP的程序代码和参数表由存储位置移动到运行位置。之所以采用这一方式主要出于以下几方面的考虑:

    1.DSP系统的运行速度很快,如果程序代码存储在访问速度较慢的非易失存储器,将严重影响数据处理的速度。为提高效率有必要将程序代码移动到快速的存储空间[3]。

    2.将程序代码存储位置和运行位置分开将有利于软件的在线升级。

    VC5402的片内ROM存储器0xF800~0xFBFF中有TI公司固化的bootloader程序[3][4]。当VC5402处于微计算机模式时,其复位后首先执行bootloader程序。Bootloader程序依次扫描各种加载方式,当某一种方式满足时,程序停止扫描,开始以此种方式加载DSP程序。这里我只介绍HPI方式的bootloader,其他方式的bootloader加载方法请参考[5-7]。当DSP查询到有INT2中断发生时就进入HPI方式的bootloader,清零0x007F存储器单元,设置HINT信号向主机发送中断请求。查询 0x007F单元的内容是否为零,当不为零时表明DSP程序加载完毕。将0x007F单元的内容作为程序的入口地址开始执行加载的DSP程序。

    3.2.HPI bootloader方式的软件实现框架

    通过CCS将DSP源程序编译连接成COFF文件格式得到.out文件。然后,由.out文件获得DSP代码的二进制文件。在AVR的C语言编辑环境ICCAVR V6.30C中采用下述方法将DSP的代码数据配置到AVR flash空间。要注意const关键字使用。

    /* dsp vector section data. start address = 0x1000, length = 0x78 */

    const unsigned int vector[120]={0xF073,0x3000,…,0xF495};

    当DSP进入HPI Bootloader方式时,AVR的外部中断2产生。AVR响应外部中断2传输完相应的数据段到DSP对应的片内存储器后要撤销DSP的中断申请。软件框架如下:

    #pragma interrupt_handler int2_isr:4

    void int2_isr(void)

    {

    unsigned int number;

    HPIAL = 0x0f;

    HPIAH = 0xff;

    for(number=0;number<120;number++)    /* 传送vector数据段 */

    {

    AUTOWL = vector[number]>>8;

    AUTOWH = vector[number];

    }

    ……                                      /* 传送其他数据段 */

    HPIAL = 0x00;                          /* 设置DSP程序入口地址 */

    HPIAH = 0x7f;

    WRITEL = 0x30;

    WRITEH = 0x00;

    while(((PIND & 0x04)==0x00))        /* 撤销DSP的中断申请 */

    {

    HPICL = 0x0;

    HPICH = 0x8;

    }

    }

    4. 通信软件设计框架

    4.1. 主控器AVR命令的发布

    AVR是主控器,DSP是从机。AVR和DSP之间通过DSP内部存储器的命令缓冲区和响应标识缓冲区交换信息。AVR触发DSP的HPI中断通知DSP 有新的命令,DSP通过向响应标识缓冲区写入不同的内容向AVR表明DSP所处的状态。AVR通过查询的方式确定DSP的处理状态。

    AVR发布命令的程序框架:

    HPIAL = 0x00;

    HPIAH = 0x60;

    WRITEL = orderhighbyte;

    WRITEH = orderlowbyte;  /* 向命令缓冲区0x60写入命令*/

    HPIAL = 0x00;

    HPIAH = 0x61;

    WRITEL = orderhighparameter;

    WRITEH = orderlowparameter; /*向命令缓冲区0x61写入命令参数*/

    HPICL = 0x0;                   /*触发DSP中断*/

    HPICH = 0x4;

    dsphpidata = 0x00;

    HPIAL = 0x00;

    HPIAH = 0x62;

    while((dsphpidata != 0xaa)) /*判断响应标识区0x62内容是否为0xaaaa*/

    {

    dsphpidata = READL;

    dsphpidata = READH;

    }

    ……

    4.2. DSP对主控器命令的执行

    AVR发给DSP的命令由DSP在HPI中断中处理。DSP需要设置命令和响应缓冲区、处理响应的命令和设置响应标志等工作。软件设计框架如下:

    interrupt void HPINT_isr(void);

    #pragma DATA_SECTION(orderbuffer,"order_sec")   /* 设置命令和响应缓冲区 */

    volatile unsigned int orderbuffer[8];

    ……

    interrupt void HPINT_isr(void)

    {

    switch(order[0])

    {

    case order1:              /* 处理命令1 */

    ……

    orderbuffer[2] = 0xaaaa;     /* 处理完命令1,设置响应标志 */

    break;

    ……

    }

    }

    5. 结论

    1)  本文详细分析了AVR和TMS320VC5402 HPI接口通信软硬件设计,给出了硬件设计原理图和软件设计框架。实际测试表明该系统设计方案运行可靠。

    2)  利用AVR控制功能强、集成flash存储器和DSP运算功能强、程序代码配置灵活的特点,形成AVR和DSP之间优势互补,是一个可以选择的合理的系统设计方案。

    3)  有些DSP芯片内部集成的bootloader程序通过HPI口只能配置内部存储器,对于DSP程序比较大的系统仅仅利用集成的bootloader程序不能完成全部加载工作。此时用户可以自行设计一个bootloader程序,将大的DSP程序加载到外部存储器空间。

    6.参考文献

    [1] Texas Instruments Inc. TMS320C54x DSP Reference Set Volume 5: Enhanced Peripherals. P182~287

    [2] Atmel Incorporation. ATMEL64/ATMEL64L preliminary.

    [3] Texas Instruments. TMS320VC5402 and TMS320UC5402 Bootloader.

    [4] Texas Instruments. TMS320VC5402 FIXED POINT DIGITAL SIGNAL PROCESSOR data sheet.

    [5] Texas Instruments. A PractICal Application of the TMS320C54x Host Port Interface(HPI).

    [6] 李忠,李峰. DSP编程的几个关键问题. 电子技术应用, 2003,1:15-17.

    [7] 香勇,施克仁. TMS320C54x的加载引导. 国外电子元器件, 2003,3:4-7.


关键字:AVR  TMS320VC5402  HPI接口通信 引用地址:基于AVR和TMS320VC5402的HPI接口通信设计

上一篇:油缸压力嵌入式压力监测系统软硬补偿方法实现
下一篇:AVR看门狗使用范例即Reset程序详解

推荐阅读最新更新时间:2024-03-16 15:56

基于Atmega128嵌入式控制器的设计
  采用Atmega128单片机设计的嵌入式控制器,模拟量输入通道用Atmega128片内A/D转换器,输出用AD421 D/A转换器,数字量I/O通道配置高速先耦器件.用lccavr编译器修改OSTaskStklnit()函数及其相关文件,定义数据类型等以实现MicroC/OS-Ⅱ的移植. 1 引言   嵌入式控制器是机电设备实现自动化的核心部件。故以大型机电设备为控制对象,利用高性能Atmega 128微处理器, 设计了具有现场总线(CANBUS)网络通信和一定通用性的多功能嵌入式智能控制器。 2 硬件设计   系统的硬件结构如图1。   本控制器的核心采用64管脚TQFP封装的Atmega128芯片,具有53
[单片机]
基于Atmega128嵌入式控制器的设计
基于AVR单片机的博物馆防盗保护器系统设计
引言 博物馆内的藏品常常受到人为盗窃的威胁,周围环境的变化也会对其造成破坏,因此需要极为可靠的防盗系统及完善的空调系统,本设计的目的就是实现对馆藏品的智能化防盗和保护。博物馆关闭时便可将此防盗保护器启动,通过CMOS传感器对博物馆进行扫描,图像信号在微处理器中进行处理筛选压缩,并与被监控信号(人形信号)进行比较,一旦出现类人形信号,便将数据进行存储(这样可以大大节省存储空间),并进行报警。被监控信号可以增加,可以是其它任何可能对馆藏品造成损害的动物,只不过在进行筛选比较处理时要复杂一些。另外,通过温度传感器对温度信号进行采集监控,通过控制馆内空调来达到调节温度的效果,以避免馆内文物因为温度的变化而造成损害。 图1 系统功能框
[单片机]
基于<font color='red'>AVR</font>单片机的博物馆防盗保护器系统设计
Atmel 推出基于AVR 微控制器的射频发射器
日前,Atmel宣布推出用于遥控车门开关 (RKE)应用的新系列基于 AVR(R) 微控制器的射频发射器 ATA577x。新系列设备作为系统级封装 (System-In-Package,SiP) 或多芯片组件 (Multi Chip Module,MCM) 解决方案,同时采用了 Atmel 知名的 AVR 微控制器 ATtiny44V 和射频发射器 T5750/53/54。这一新的产品系列覆盖所有全球频段(ATA5773: 315 MHz,ATA5774: 433 MHz,ATA5771: 868 至 928 MHz)。小巧型 QFN24 封装(尺寸仅为 5mm x 5mm)可支持以极具竞争力的成本设计制作极小的钥匙扣。 AT
[单片机]
AVR单片机的调频立体声收音机设计解析
引言 早期的数字FM处理芯片TEA5767由Philips公司开发并被广泛地使用,但该芯片需要外加音频放大电路才能驱动耳机。鉴于此,国内锐迪科微电子公司独立开发了一颗具备高接收灵敏度的FM立体声数字芯片RDA5807P,具有自动搜台、重低音、静音、休眠、直接驱动耳机等优异的性能。本文介绍用RDA5807P芯片设计和制作了一款带遥控功能的收音机。 1 收音机总体设计方案 收音机的总体设计框图如图1所示。本收音机采用单节3.7 V、容量1500 mAh的锂电池作力电源,在使用寿命期内可以用手机充电器反复对它进行充电,使用非常方便。采用低功耗的AVR单片机ATmega8L作为微控制器,负责处理和协调各模块电路的工作,AT
[单片机]
<font color='red'>AVR</font>单片机的调频立体声收音机设计解析
基于AVR和ZigBee技术的工业园区环境监测系统
一、项目概述 1.1 引言 早在上世纪70年代,就出现了用单片机控制的将传统传感器采用点对点传输,连接控制器而构成传感器网络的雏形。随着科学技术的不断发展和进步,传感器网络同时还具有了获取多种信号的综合能力,并通过与传感控制器的连接,组成了有信息综合处理能力的传感网络;从上世纪末开始,现场总线技术开始应用到传感器网络,人们用其组建智能化传感器网络,大量多功能传感器被运用于无线技术连接,无线传感器网络逐渐形成,因为无线技术低能,低耗的特点,并得到迅速发展。 现今基于单片机技术的传感器的设计和无线传感器网络作为一种全新的信息获取平台,能够实时监测和采集网络分布区域内的各种检测对象的信息,并将这些信息发送到网关节点,以实现复杂的指
[单片机]
基于<font color='red'>AVR</font>和ZigBee技术的工业园区环境监测系统
AVR--IO结构分析
下图为AVR单片机通用I/O口的基本结构示意图。从图中可以看出,每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=ABCD)。I/O口的工作方式和表现特征由这3个I/O口寄存器控制。 方向控制寄存器DDRx用于控制I/O口的输入输出方向,即控制I/O口的工作方式为输出方式还是输入方式。 当DDRx=1时,I/O口处于输出工作方式。此时数据寄存器PORTx中的数据通过一个推挽电路输出到外部引脚(图6-2)。AVR的输出采用推挽电路提高了I/O口的输出能力,当PORTx=1时,I/O引脚呈现高电平,同时可提供输出20mA的电流;而当PORTx=0时,I/O引脚
[单片机]
<font color='red'>AVR</font>--IO结构分析
arduino制作AVRISP烧写器
本教程介绍如何使用Arduino作为AVR ISP(在线系统编程)。你可以使用它给其他AVR芯片烧写引导程序(bootloader)(例如使用ATmega168的或ATmega328的Arduino)。这个例子中的代码是基于Randall Bohn写的mega-isp固件。 说明 使用您的Arduino给其他AVR烧写引导程序(bootloader),步骤如下: 1.打开的ArduinoISP的固件(File examples ArduinoISP) 2.注意,如果是Arduino1.0:你需要对ArduinoISP代码进行小的改动。查找heartbeat()函数,把其中的“delay(40);”,更改为“delay(20)”。
[单片机]
arduino制作AVRISP烧写器
基于AVR单片机与FPGA的低频数字式相位测量仪
在工业领域中经常要用到低频数字式相位仪来精确测量两信号之问的相位差,比如在电力系统、频率特性的研究、激光测距等领域均有广泛的应用,相位检测的精度直接决定系统的整体性能。这就要求测量仪逐渐向智能化和测试自动化方向发展,本设计采用MCU和FPGA相结合的系统方案,以AVR单片机ATmega128和Altera公司的Cyclone系列EP1C3T100为核心,充分发挥各自的优势,如AVR单片机先进的RISC结构和强劲的运算、控制功能,Altera公司的FPGA运算速度快、资源丰富以及易编程的特点,合理设计,此方案的相位仪具备速度快、稳定可靠、精度高等优点,而且容易实现“智能化”和“自动化”。 1 系统方案设计 1.1 测量方法的比较与
[单片机]
基于<font color='red'>AVR</font>单片机与FPGA的低频数字式相位测量仪
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved