| | 网站首页 | 技术文章 | 专业论文 | PLC可编程 | 单片机 | 变频器 | 传感器 | 嵌入式系统 | 电源技术 | 运动与伺服 | | 校园招聘 | 留言板 | |
|
![]() |
|
| 您现在的位置: 自动化学习网 >> 技术文章 >> 单片机 >> 文章正文 |
|
|||||
| AVR和TMS320VC5402的HPI接口通信设计 | |||||
作者:佚名 文章来源:不详 点击数: 更新时间:2007-5-11 ![]() |
|||||
|
摘要:TMS320VC5402(VC5402)不具有可编程的非易失片内存储器,必须外扩存储程序代码和参数的存储器,在多数场合仅仅简单的扩充此类存储器会造成系统设计的繁琐。利用AVR单片机片内大容量的flash 存储器来存储DSP的程序和参数,使系统的整体设计更加紧凑,并弥补了VC5402控制和通用通信功能的不足,这不失为一种有效的解决办法。文中详细分析了AVR单片机(ATMEL64L)同VC5402的HPI接口通信硬件设计和DSP程序代码的加载方法。在通信软件的设计方面着重阐述了通信协议和DSP的bootloader实现方法。 关键字: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程序。 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 unsigned int number; HPIAL = 0x0f; HPIAH = 0xff; for(number=0;number<120;number++) /* 传送vector数据段 */ { 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; HPICH = 0x4; dsphpidata = 0x00; HPIAL = 0x00; HPIAH = 0x62; while((dsphpidata != 0xaa)) /*判断响应标识区0x62内容是否为0xaaaa*/ …… 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. |
|||||
| 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 基于PIC的无线数据传输发射机… 基于PSD3XX与ADMC401接口设计… 基于ST72单片机的快速充电系… 基于单片机的MicroDrive接口… 基于单片机的喷墨打印机控制… 利用ASSP实现成本节约,加速… 如何仿真单片机的外围设备 非接触式e5551读写器的开发 基于80C166单片机PEC服务的P… 基于8位微控制器控制硬盘进行… |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 文章索引 | 网站地图 | |
| 声明:本网站资源均来源于网络,如涉及版权问题,请通知我们,我们将尽快删除! QQ:279619038 备案序号:吉ICP备06005743号 自动化学习网版权所有 站长:guxing |
|