AVR和TMS320VC5402的HPI接口通信设计

发布者:mlgb999最新更新时间:2012-02-18 来源: 微计算机信息关键字:AVR  主机接口  bootloader  数字信号处理器 手机看文章 扫描二维码
随时随地手机看文章

 

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。

图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程序。[page]

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  主机接口  bootloader  数字信号处理器 引用地址:AVR和TMS320VC5402的HPI接口通信设计

上一篇:ATmega161在嵌入式测控网络中的应用研究
下一篇:基于Atmega8的实用车载空调控制器电路

推荐阅读最新更新时间:2024-03-16 12:53

利用AVR单片机制作电压表
通过研究和实验,用mega16可以制作5V电压。电压值从LED显示出来。 下面是部分源程序: uint mega16_ad() { uint addata; DDRD|=BIT(4)|BIT(5)|BIT(6); DDRA&=~BIT(PA3); PORTA&=~BIT(PA3); ADMUX=0x03; ADCSR=0X80;//转换使能 ADCSR|=BIT(ADSC);//开始转换 while(!(ADCSR&(BIT(ADIF))));//等待转换结束. addata=ADC*4.8876; //转换为四位5V电压数 return addata; } void main() {
[单片机]
利用异步通信芯片16C552实现PC机与DSP的串行通讯
当实现PC机与DSP的串行通讯时,通常可直接利用DSP的串行通讯接口(SCI)模块和SCI多处理器通讯协议(即空闲线路模式和地址位模式)来在同一串行线路中实现多个处理器之间的通讯,也可以采用SCI异步通讯模式实现串行通讯。这两种方式虽然都能方便地实现串行通讯,但它们都需占用系统较多的硬件和软件资源, 因而不适用于对实时性要求比较高且系统资源紧张的应用场合。笔者在研制电力有源滤波实验系统中,由于采用了异步通讯芯片16C552,从而成功解决了这个问题。本文将从电路结构和软件编程两个方面介绍该方案的实现方法。 1 16C552简介 1.1 功能特点及结构框图 16C552是TI(TL16C552)和VLSI(VL16C552
[嵌入式]
AVR损坏的主要原因及损坏后应急用电措施
一、AVR损坏的主要原因分析: AVR电路由整流主回路,电压检测电路,比较控制电路三个部分组成;排除原有电气元件本身质量上的原因造成损坏的可能性而言,在整块AVR电路中,主回路和比较控制电路的工作频率变动最大;其中主回路的整流桥和比较电路中的晶体管变动更频,其损坏比例占整块AVR损坏率的90%以上;鉴于进口发电机上的AVR属于非拆修配件,损坏了就要换新的,所以,我们主要分析造成发电机上的AVR损坏的原因,尽可能避免AVR的损坏是最重要的,只要使用适当,可以提高AVR的使用寿命。 (1)发电机电压越稳定,AVR内的变动频率越小;比较电路中的晶体管的开关动作越小,AVR损坏的几率越小; (2)输出负载相对平稳,AVR内的变动频率越
[单片机]
s3c2410的Bootloader(Vivi)简介
0.Bootloader Bootloader(引导加载程序)是系统加电后运行的第一段代码,一般运行的时间非常短,但是对于嵌入式系统来说,这段代码非常重要。在我们的台式电脑当中,引导加载程序由BIOS(固件程序)和位于硬盘MBR中的操作系统引导加载程序(比如NTLOADER,GRUB和LILO)一起组成 在嵌入式系统当中没有像BIOS这样的固件程序,不过也有一些嵌入式CPU会在芯片内部嵌入一小段程序,一般用来将bootloader装进RAM中,有点类似BIOS,但是功能比BIOS弱很多。在一般的典型系统中,整个系统的加载启动任务全由bootloader来完成。在ARM中,系统上电或复位时通常从地址0x00000000处开始执
[单片机]
AVR JTAGICE使用说明
可以用AVR Studio的4.0或更高版本控制STK500和 JTAG IC E,选择STK500 or AVRISP和Auto或者具体的COM?端口进行联机,点击avr studio主窗口中的图标 前面标有Con的那个图标,然后按下图选择即可进行JTAG的联机,由于avr studio会记忆用户使用的设备是并且同时会记忆用户使用的COM号,如果下次和上次使用的是相同的设备并且没有更换COM口,那么下次使用的时候直接点击右边标有AVR的那个图标就可以快速进入联机状态;如果下次和上次使用了不同的设备或不同的COM口请使用Con图标进行联机。 JTAG和目标板相连 AVR JTAG 同目标板的连接:最小需要6条线与目标板相
[单片机]
<font color='red'>AVR</font> JTAGICE使用说明
基于DSP的单兵背负式短波数字通信系统
  二十一世纪的战争将以数字化战场为背景,而数字化战场的一个重要特点是信息可以直达单个士兵。采用基于软件无线电的思想,应用第三代数字信号处理器TMS320C31和数模转换芯片TLC32044等器件构成短波自适应调制解调器的硬件平台,将其与传统的模拟电台相连接,构成了可传输数据信息的单兵背负式数字化电台,通过软件程序的编写实现信息处理的一系列功能。   此数字化电台不仅保留了原有的话音通信能力,而且又增加了数据通信功能。它充分利用了现有的短波通讯设备,并大大降低了数字化改造的成本。采用它可以将战场上的各种信息转化为数字保密代码,通过短波无线信道发送接收,把指挥所、部队及单个士兵紧密联系起来,形成机动灵活的短波通信网路,使指战员实时
[嵌入式]
AVR中生成的hex文件说明
编译完工程后,生成的hex文件大于flash的大小问题? HEX文件大于4K并不代表目标代码大于4K,所以不能用HEX的文件大小来衡量.通常情况下,将HEX文件长度除以2都略大于目标代码。 目标文件真正大小为:
[单片机]
DSP处理器上并行实现ATR算法
摘要:介绍了由DSP芯片构成的多处理器并行系统的结构和性能以及在多处理器并行系统上并行实现ATR算法需要考虑的要总是,着重研究了在指令级并行DSP处理器上实现ART算法的并行化软件开发方法,对ATR算法的实用化和工程化具有重要的参考价值。 关键词:DSP 自动目标识别(ATR) 并行算法 处理器 软件设计 自动目标识别(ATR)算法通常包括自动地对目标进行检测、跟踪、识别和选择攻击点等算法。战场环境的复杂性和目标类型的不断增长使ATR算法的运算量越来越大,因此ATR算法对微处理器的处理能力提出了更高的要求。由于通用数字信号处理芯片能够通过编程实现各种复杂的运算,处理精度高,具有较大的灵活性,而且尺寸小、功耗低、速度快,所以一般
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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