摘要:本文通过一个开发实例详细说明如何通过DSP的HPI接口与运行Linux操作系统的ARM架构处理器进行数据通信。给出接口部分的实际电路和ARM-Linux下驱动程序的开发过程。 关键词:设备驱动程序 嵌入式Linux HPI ARM DSP 1 引言 基于ARM核心处理器的嵌入式系统以其自身资源丰富、功耗低、价格低廉、支持厂商众多的缘故,越来越多地应用在各种需要复杂控制和通信功能的嵌入式系统中。 内核源码开放的Linux与ARM体系处理器相结合,可以发挥Linux系统支持各种协议及存在多进程调度机制的优点,从而使开发周期缩短,扩展性增强。作为数字处理专用电路,DSP的数字信号处理能力十分强大,但对诸如任务管理、通信、人机交互等功能的实现较为困难。

如果将这三者结合起来,即由DSP结合采样电路采集并处理信号,由ARM处理器作为平台,运行Linux操作系统,将经过DSP运算的结果发送给用户程序进行进一步处理,然后提供给图形化友好的人机交互环境完成数据分析和网络传输等功能,就会最大限度的发挥三者所长。 2 系统结构 该系统硬件由二部分组成,其中一部分为若干块DSP板,各自独立承接数据采集和信号处理。另一部分为以ARM为核心处理器的CPU板。系统硬件框图如图1 所示(仅接口部分)。 3 接口硬件部分设计 3.1 HPI接口简介 HPI接口是TI公司新一代、高性能DSP上用以完成与主机或其他DSP之间数据交换的接口,这里主要介绍实际电路中使用的控制引脚和时序。 HCNTL0和HCNTL1为访问控制选择。用来确定主机(ARM)究竟对TMS320C6711中的哪一个HPI寄存器进行处理。具体功能如表1所列。 表1 HCNTL0和HCNTL1的功能 HCNTL0 HCNTL1 功 能 0 0 主机对HPI控制寄存器(HPIC)进行读写 0 1 主机对HPI地址寄存器(HPIA)进行读写 1 0 主机对HPI数据寄存器(HPID)地址自动增加模式(Auto increment mode)进行读写,对HPID读写后,地址寄存器(HPIA)自动增加一个字地址(4字节地址) 1 1 主机对HPI数据寄存器(HPID)地址固定模式(Fixed mode)进行读写。对HPID读写后,地址寄存器(HPIA)保持不变 HR/W:读写选择控制。为“1”表示是从DSP中读,反之则为写。 HHWIL:半字节定义选择,与HPIC寄存器中的HWOB位进行配合可以选择当前传输的是高半字还是低半字。低电平是第一个半字,高电平是第二个半字。 HCS:选通脉冲(Strobe),与HDS1、HDS2相互配合完成内部信号HSTROBE的生成。逻辑关系如图2所示。 将HDS1、HDS2分别固定为高电平和低电平,这样HCS就和HSTROBE完全一致。 HSTROBE读时序如图3所示。 3.2 接口电路 ARM处理器通过DSP的HPI接口与DSP进行连接的硬件原理如图4所示(以单板DSP为例)。其中SN74LVTH16245为16位(二个8位)双向三态总线收发器,主要起总线驱动和方向控制的作用同时也保证在不对HPI口进行操作时数据总线锁闭。AT91RM9200为Atmel公司生产的 ARM9为核心的处理器,其中引脚D0-D15为数据总线,A2-A8为地址总线的一部分,CS3为片选信号线,当ARM对总线地址范围为0x40000 0000~0x4FFF FFFF的外部设备进行操作时,会在该引脚产生一个片选信号。同时该信号控制SN74LVTH16245的使能端,避免在读写其他地址时对HPI端口造成影响。TMS320C6711D是TI公司生产的DSP,每秒可以完成15亿次浮点运算,数据处理功能十分强大。引脚D0-D15为数据总线。其余端口是 HPI接口的控制引脚。 大功率电感厂家 |大电流电感工厂