




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
集成外设及DSPBIOS应用实例本文将主要介绍C6000系列DSP的外设,分别从硬件接口特点、接口设计和接口设置等方面介绍了主机口HPI、多通道缓冲串口McBSP和直接存取控制器DMAEDMA等外设。另外,介绍了如何利用DSPBIOS操作系统提供的芯片支持库(CSL)访问和控制各个外设。1 集成外设资源概述C6000系列DSP在内部集成了丰富的外围设备(Peripherals),方便用于控制片外的存储器、主机以及串行通信设备。对于每种型号的外设资源都是不一样的,具体的需要查询该芯片的技术资料。 在C6000系列DSP中集成的外设资源有: 1DMA与EMDA控制器DMA、EDMA控制器最大的特点是可以在没有CPU参与的情况下完成映射存储空间中的数据搬移。这些数据搬移可以是在片内存储器、片内外设或是外部器件之间,而且是在CPU后台进行的。C620xC670x内部集成了DMA外设,其特点如下: (1)DMA摔制器独立于CPU 工作,具有单周期的数据吞叶率。 (2)四个通道,外加专用的辅助通道,每一个通道对于CPU的优先级可设置。 (3)32位寻址能力,可以对存储器映射空间的任何一个区域进行访问。 (4)传送数据支持81632位字长。 (5)具有灵活的地址产生方式,有单通道分割(split-channel)操作模式。 (6)每次数据块传输完毕后,可以进行DMA通道的自动初始化。 (7)传输操作可以由选择的同步事件触发。 (8)每个通道都可以触发中断事件。 C621xC671x内部集成的是EDMA外设,其特点如下: (1)16个通道,EDMA可以对16个通道进行彼此独立的控制。 (2)连接:EDMA通道可以被连接起来,构成一个传输链。 (3)事件同步:每一个通道都有一个特定的事件来触发。 (4)主机接口HPI。主机口(HPI)是一个1632位宽度的并行端口,主机可以通过它直接访问CPU的整个存储空间,包括C6000片内存储映射的外围设备。C62xC67x HPI与CPU存储空间的互连是通过DMA控制器实现的。借助专门的地址和数据寄存器,通过DMA辅助通道,完成HPI对存储空间的访问。主机和CPU都可以对HPI控制寄存器(HPIC)进行访问,主机还可以访问HPI地址寄存器(HPIA)和HPI数据寄存器(HPID)。对于C64x器件,CPU也可以访问HPIA寄存器。2多通道缓冲串口McBSPC6000的多通道缓冲串口(McBSP)是存C2x和C54x的串口的基础上发展起来的,McBSP的功能包括: (1)全双工通信。 (2)两级缓冲数据寄存器,允许连续的数据流。 (3)收发独立的帧信号和时钟信号。 (4)可以与工业标准的编解码器、AICs(模拟接口芯片)以及其他串行AD,DA接口。 (5)数据传输可以利用外部时钟,或者是片内的可编程时钟。 (6)当利用DMA、McBSP服务时,串口数据读写具有自动缓冲能力。 3外设存储接口EMIF EMIF是实现外设存储器与DSP无缝连接的桥梁,EMIF支持的存储器包括: (1)同步突发静态RAM(SBSRAM)。 (2)同步动态RAM(SDRAM)。 (3)异步器件(包括异步SRAM,ROM和FIFO等)。 (4)外部共享存储空间的操作。EMIF整个外部空间最大容量为64MB,分为4个空间(CE0CE3,每个CE空间彼此独立,可以进行不同的访问控制,但是某些控制信号线是复用的,使用时一定要注意。数据总线宽度32bit,同时也提供816位存储器的读写支持。4扩展总线XBUS扩展总线(XBUS)是一个32位宽度的总线,支持多种异步外设、异步或同步FIFOs、PCI接口芯片和其他类型的外部主机。在主机口接口方面,扩展总线的功能较HPI有了很大增强。XBUS提供了曲种模式,即同步和异步主机口模式。异步模式相当于一个32位的HPI,同步模式支持多种协议的接口。目前在C6202和C6203中具有扩展总线XBUS功能。5自举逻辑控制 TI C6000系列DSP芯片使用多种加载方式。根据复位前管脚的状态执行相应的加载方式。目前提供的3种加载方式如下:(1)没有BOOT处理:CPU直接从地址0处开始运行。(2)ROM加载模式:通过DMA控制器,把存储在外部存储器里的程序加载到内部首地址0处,在加载过程中,CPU已经脱离复位状态,但是仍处于stall状态。对于C620xC670x DSP,要求程序代码必须是以Little-Endian模式存储在外部存储器中,尤其是ROM设备。(3)主机加载模式:在主机加载模式下,外部主机可以通过HPI接口读写访问CPU的存储空间,包括内部配置的寄存器,如EMIF控制寄存器或其他外设。一旦主机完成了所有的初始化工作后,必须置DSPINT为1,表示已经完成加载过程,同时使CPU脱离stall状态,CPU开始从地址0处运行程序。在C6201C6701有专门的管脚BOOTMODE4:O决定DSP芯片复位后运行的加载方式,而C6211C6711是利用主机口的HD4:0管脚复用,C6202C6203是利用扩展总线的XD4:0管脚复用。6定时器C6000系列集成了32位的通用定时器。定时器的输入时钟可以由内部产生,也可以是外部时钟;可以通过输出口TOUT输出时钟。TINT和TOUT两个管脚也可以被配置为GPIO口。定时器可以用于 (1)计时。 (2)事件计数。 (3)产生脉冲。 (4)产生CPU中断信号。 (5)产生DMA的同步信号。2 DSPBlOSCCS(Code Composer Studio)是一个完整的DSP集成开发环境,所有的TI DSP都可以使用该软件进行开发。在CCS中,不仅集成了常规的开发工具如源程序编辑器、代码生成工具(编译、连接器)以及调试环境外,还提供了DSPBIOS开发工具。DSPBIOS是一个可裁剪的实时操作系统,方便用户编写多任务应用程序。DSPBIOS提供了类似于先占式的多线程运行方式、硬件驱动、实时分析和配置工具。DSPBIOS已经是DSP开发过程中重要的工具。在本节将介绍DSPBIOS工具的使用。2.1 DSP/BIOS概述DSPBIOS是一个可裁剪的实时操作系统,本身占用很少的CPU资源,被集成在CCS开发环境里。该操作系统由TI公司免费提供。DSPBIOS提供底层的应用函数接口,可用于支持系统实时分析、线程管理、调度软件中断、周期函数idle函数(后台运行函数)以及外部硬件中断与各种外设的管理。DSPBIOS主要包括以下几个部分: 1DSPBlOS配置工具CCS提供了DSPBIOS GUI功能,即DSPBIOS配置工具。使用该工具,可以静态创建和配置程序中使用的DSPBIOS对象,也可以配置存储器分配、线程管理和中断句柄。2DSPBIOS实时分析工具DSPBIOS提供的一个强大的实时分析工具。使用该工具可以实时观测程序的运行状况,如各个线程占用CPU运行时间、代码执行时间统计、显示输出信息等。 3DSPBIOS应用程序接口(API)DSPBIOS提供了超过150个API函数,其中有与C语言、C+语言和汇编语言接口的函数。这些API函数是为在硬件目标的嵌入式程序工作的,包括实时统计、IO模块、软件中断管理和时钟管理等模块。由于应用程序的不同,DSPBIOS API函数的代码长度从2002000B不等。程序通过调用API函数来使用DSPBIOS的资源。目前DSPBIOS中主要的API模块有CLK模块、HST模块、HWI模块、IDL模块、LOG模块、MEM模块、PIP模块、PRD模块、RTDX模块、STS模块、SWI模块、DEC模块、SIO模块、MXB模块、QUE模块和SEM模块。2.2 DSPBIOS GUI配置在DSPBIOS的程序里,有一个DSPBIOS的配置文什,该配置文件的后缀名为.cdb。这是一个图形界面的参数设置窗口,如图4-1所示。主要有两种功能:(1)确定DSPBIOS使用的各种参数。(2)可以静态说明需要调用的DSPBIOS模块,包括中断、任务和内部集成的外设等。1系统设置项系统设置项包括全局设置、存储器段管理器、系统设置和模块钩子管理器,如图4-2所示。在全局设置的属性窗口中可以设置正使用的DSP型号、选择使用的片级支持库CSL、Endian模式和Cache模式等多种参数。在存储器段管理器的属性窗口中可以进行系统程序存储段的管理。通过该项设置,系统将自动生成系统程序连接时使用的.cmd文件。2实时分析工具实时分析工具包括LOG管理器和统计类管理器,如图4-3所示。用户可以利用LOG模块中的事件日志来记录实时的事件。系统日志记录系统所有运行事件包括系统出错等事件。用户可以用LOG_printf或LOG_event函数在用户日志中添加消息。用户可以利用STS模块全面了解中断、任务以及用户自己定义的代码段或函数的运行时间。3线程管理DSPBIOS是一个类似于先占式的多任务操作系统。BIOS把任务称之为线程,一个线程是一个单独的控制点,可能包含一个子程序、一个宏或者是一个函数调用。DSPBIOS内核支持具有不同优先级的多种类型线程运行,高优先级的线程可以中断低优先级的线程,因此具有类似的先占式特点。 DSPBIOS提供了以下几种线程类型,优先级从高到低。 (1)硬件中断HWI(含CLK模块)。 (2)软件中断SWI(含PRD模块)。 (3)任务TSK。 (4)后台线程IDL。 线程管理的界面如图4-4所示,使用GUI可以很方便地增加删除线程。 4同步同步主要的任务就是负责线程之间的协调,如同步通信、数据交换等。其中包括旗语、邮箱、队列管理和资源锁定管理等部分,如图4-5所示。5输入输出 DSPBIOS内核提供了丰富的数据交换途径。利用BIOS可以方便地实现主机和DSP之间的实时数据交换(RTDX和HST)以及各种线程之间的数据交换。DSPBIOS的PIP模块和SIO模块将主要用于IO数据流的缓冲,这些数据流称为线程、DSP芯片和实时外围设备提供了牢固的数据软件结构。输入输出界面如图4-6所示。6片级支持库片级支持库(CSL)提供了一个C语言接口的配置和控制片内外设1具。CSL集成在BIOS里,系统程序可以使用该功能,也可以不使用。使用片级支持库(CSL)简化了DSP片上外设开发时间,可以加快项目开发进度。片剂支持库(CSL)可以预先静态设置,也可以在程序运行时动态设置。2.3 DSPBIOS编程实例DSPBIOS是一个嵌入式实时操作系统。在BIOS基础上编程与普通的编写程序不同,下面将以TI的例了来介绍BIOS的编程特点。 (1)首先新建一个BIOS配置文件。建立两个软件中断SWl0和SWll,SWl0的优先级设为1,SWll优先级设为2,如图4-7所示。保存例子,名称为switest.cdb。(2)新建一个工程,工程名switest.pjt。把配置文件switest.cdb加入到工程文件中去,同时把switestcfg.cmd文件也加入到工程文件中。(3)新建switest.C文件。源文件如下:(4)编译连接工程,打开execution graph、statistics view和message log窗口,然后运行程序。在实时分析工具中可以观察到线程SWIO和SWll运行一次,部分时间是其他线程和KNL-swi运行,如图4-8图4-10所示。3 TMS320C6000的HPl接口设计本节主要介绍主机接口外设HPI,其中介绍了主机如何通过主机接口(Host-port interface,HPI)读写访问C6000的存储器资源,包括HPI的控制寄存器设置,有关信号的作用与接口等。3.1 HPI硬件介绍主机口(HPI)是一个1632位宽度的并行端口,主机可以通过它直接访问CPU的整个存储空间,包括C6000片内的存储映射的外围设备。HPI与CPU存储空间的互连是通过DMA/EDMA控制器实现的。借助专门的地址和数据寄存器,通过DMA辅助通道,完成HPI对存储空间的访问。主机和CPU都呵以对HPI控制寄存器(HPlC)进行访问,另外主机可以访问HPI地址寄存器(HPIA)和HPI数据寄存器(HPID)。对于C64x器件,CPU也可以访问HPIA寄存器。图4-11中的阴影部分是HPI在C620xC670x整个芯片中的位置。图4-12是HPI在C621xC671XC64x整个芯片中的位置(阴影部分)。表4-1列出了在C6000系列芯片中HPI外设的区别。3.2 HPI接口及其应用在这里将仔细介绍HPI接口的特点,分析HPI接口信号和总线时序的特点,硬件接口设计和软件设计特点。 1HPI接口与信号主机可以通过HPI接口与CPU连接,HPI管脚信号功能如表4-2所示,详细的信号描述可以参照TI相关文档。C6000 DSP不同芯片的HPI外设与主机接口有所不同,下面简要介绍其区别。对于C620xC670x芯片的HPI外设,HPI是16位宽度的并行接口,CPU可以自动地把主机连续写入的两个16位数据组合成一个32位数据。丰机把数据写入HPID寄存器,DMA辅助通道可以访问所有的CPU地址,把写入的数据存储到指定地址的存储空间中去。C620xC670x芯片的HPI外设与主机连接框图如图4-13所示。C621xC671x的HPI管脚接口与C620xC670x类似,但是不支持字节使能信号线HBE1:0。C621xC671x没有提供特殊的EDMA通道来专门进行HPI存取,而是直接将HPI与片内的地址产生单元相连,完全由硬件来处理硬件请求,如图4-14所示。C64x芯片的HPI外设与主机连接框图如图4-15所示。C64x HPI外没有32根外部数据引脚,支持1632位数据传输。C64x器件根据自举加载配置和器件配置决定是16位还是32位数据通道。C64x HPll6是C621xC67lx的HPI外设增强版本。除了C621xC67lx的HPI外设功能外,HPll6允许DSP访问HPI地址寄存器HPIA。如图4-15所示,地址寄存器HPIA分成两个寄存器,即HPIA写寄存器(HPIAW)和HPIA读寄存器(HPIAR)。HPI 32和HPI16功能类似,区别在于数据总线宽度不一样,而且HPI 32不使用 HHWIL信号线。2HPI总线时序图4-16图4-19分别给出了HPI读和写操作的时序。HSTROBE是内部选通信号,由HDSl、HDS2和,HCS信号逻辑组合产生。控制信号:HCNTL1:0、HRW、HHWIL和HBE1:0是输入信号,由主机驱动。HCNTL1:0和HRW控制对两个半字的访问。HRDY低电平表示HPI已经准备好收发数据。HAS信号为高电平或者没有使用,那么HSTROBE的下降沿锁存控制信号。如果使用了HAS信号,在HAS的下降沿锁存控制信号。可以根据具体的情况来决定是否在接口中应用选通信号HAS,因此下面的读写时序中部各自给出了有HAS和没有HAS信号时的情况。3HPI控制寄存器HPI外设利用3个寄存器完成主机和DSP之间的数据交换。3个寄存器分别是HPI数据寄存器(HPID)、HPI地址寄存器(HPIA)和HPI控制寄存器(HPIC)。对于C64x器件,HPI地址寄存器分为地址读寄存器(HPIAR)和地址写寄存器(HPIAW)。HPIA中存放主机访问DSP存储空间的地址,这是一个30位值,最低2位固定为0。对于C62xC67x,只有主机才能访问HPIA,DSP不可以访问。对于C64x,主机和DSP都可以访问HPIA寄存器,主机可以对DSP的不同存储空问进行读写操作。HPID中存放的是主机从存储空问读取的数据,或者是主机要向DSP的存储空间写入的数据。HPIC是32位寄存器,高16位和低16位对应的是同一个物理存储区,因此高16位和低16位的内容是一样的。在写HPIC时,必须保证写入数据的高16位和低16位的内容一致。HPIC寄存器如图4-20所示,其中各位意义如表4-3所示。4主机访问操作顺序 主机按照以下的顺序完成对HPI的访问: (1)初始化HPIC寄存器。 (2)初始化HPIA寄存器。 (3)从HPID寄存器读取写入数据。对HPI任何一个寄存器的访问,主机都需要在HPI总线上进行两次half-word的存取(第1个16位HHWIL为0,第2个HHWIL为1)。一般主机不会打断这样的两次存取,一旦打断可能会引起整个数据的丢失或者数据被破坏。如果前一次HPI的访问尚未完成,那么当前的第一个half-word的存取需要等待,此时HPI会置HRDY信号为高。但是在第2个半字存取访问时,HRDY可以为有效状态。C64xfPl32把两个半字组合成一个字传输。在访问任何数据之前,必须对HPI进行初始化,包括设置HPIC和HPIA寄存器。对C62xC67x和C64x是有所不同的。 HPI的数据传输模式有4种: (1)不带地址白增的读操作。 (2)带地址自增的读操作。 (3)不带地址自增的写操作。 (4)带地址自增的写操作。这些模式由HPI的HCNTL1:O信号以及HHWIL进行控制,具体如表4-4所示。其中的地址自增功能使主机可以很便捷地访问一个线性存储区域,而无需反复地向HPIA中写入需要的地址。5HP的自举加载操作通过HPI接口也提供了相应的HPI加载方式。当CPU复位时,根据相应的加载配置,CPU进入HPI加载处理方式。在HPI加载处理方式中,DSP处在复位状念,而其他部分脱离复位状态。通过HPI接口,主机可以访问DSP的全部存储空间,包括片内外设寄存器、片内存储器和片外存储器。主机完成初始化DSP后,需要向HPI控制寄存器HPIC的DSPHlNT位写1,这样才可以使DSP脱离复位状态开始从地址0处执行程序。HPI加载处理过程如图4-21所示。3.3 BlOS中HPI设置实例HPI模块提供了访问HPI寄存器的API函数,其中用于访问HPI状态位和设置中断事件。对于C64x,还包括读写HPlA寄存器。在CCS中没有提供HPI设置图形用户接口。 HPI模块提供的API函数如表4-5所示。4 TMS320C6000的McBSP接口设计本节对多通道缓冲串口McBSP(Multi-channel Buffered Serial Port)的硬件及其操作进行介绍,包括有关的控制寄存器设置和时序图。此外,还介绍在BIOS中McBSP模块的特点和应用。4.1 McBSP硬件介绍C6000的多通道缓冲串口(McBSP)是在TMS320C2xC3xC5x和TMS320C54x串口的基础上发展起来的,McBSP的功能包括: (1)全双工通信。 (2)双缓冲数据寄存器,允许连续的数据流。 (3)收发独立的帧信号和时钟信号。 (4)可以与工业标准的编解码器、AICs(模拟接口芯片)以及其他串行AD,DA接口。 (5)数据传输可以利用外部时钟,或者是片内的可编程时钟。 (6)通过5通道的DMA控制器,串口数据读写具有自动缓冲能力。 另外,McBSP有以下特点: (1)支持以下方式的传输接口: TIE1帧协议 MVIP兼容的交换方式以及STBUS兼容设备,包括:MVIP帧方式、H.100帧方 式和SCSA帧方式 IOM-2兼容设备 AC97兼容设备 IIS兼容设备 SPI设备 (2)可与多达128个通道进行收发。 (3)传输的数据字长可以是8位、12位、16位、20位、24位和32位。 (4)-律/A-律压扩硬件。 (5)对8位数据的传输,可选择LSB先传还是MSB先传。 (6)可设置帧同步信号和数据时钟信号的极性。 (7)内部传输时钟和帧同步信号可编程程度高。所有的C6000器件有着同样的McBSP接口,但是C621xC671x和C64x器件的McBSP接口却有所不同,增加了新的特色和增强功能。4.2 McBSP接口及应用McBSP外设具有很多强大功能,在这里将要介绍外设的信号接口、控制寄存器、时序特点以及初始化工作;同时介绍了作为SPI接口和通用IO口使用的原理和方法。对于McBSP的多通道工作模式和-律A-律压扩硬件功能没有介绍,有兴趣的读者可以参照TI相关文档。 1信号接口和寄存器McBSP包括一个数据通道和一个控制通道,连接到外部器件。数据通过发送(DX)和接收(DR)引脚与外部器件通信,而其他的4个引脚起时钟和帧同步信号作用。C6000通过片内的外设总线访问串口的32位控制寄存器,进而实现与McBSP间的通信与控制。McBSP结构如图4-23所示。外部引脚含义如表4-6所示。数据通道完成数据的发送和接收。CPU或DMA控制器将待发送的数据写入发送寄仔器(DXR)中,从接收寄存器(DRR)读取接收到的数据。写入DXR的数据通过发送移化寄存器(XSR)移位,从DX管脚输出。同样,DR管脚上接收到的数据先移位到接收移位寄存器(RSR)中,然后被复制到接收缓冲寄存器(RBR)中,RBR再将数据复制到DRR中,最后等候CPU或DMA控制器将数据读走。这种多级缓冲方式使得片内的数据搬移和外部数据的通信可以同时进行。McBSP可以触发多种中断事件,中断事件可以中断CPU执行中断服务子程序:也可以产生同步事件告知DMA控制器,见表4-7。2数据的收发如图4-23所示,McBSP的接收操作采用三级缓冲方式,发送操作采用两级缓冲方式。接收数据到达DR管脚后移位进入RSR,一旦整个数据单元(8位,12位,16位,20位,24位或32位)接收完毕,如果RBR寄存器末满,则RSR将数据复制到RBR中。如果DRR中旧的数据已经被CPU或DMAEDMA控制器读走,则RBR将新的数据复制到DRR中。发送数据被CPU或DMAEDMA控制器写到DXR。如果XSR寄存器没有数据,则DXR中的值被复制到XSR中:否则,DXR会等待XSR中旧数据完全发送完,才将数据复制到XSR中。McBSP的复位有两种方式:(1)一种是芯片复位,那么McBSP中发送、接收和采样时钟都同时被复位。(2)另一种是通过设置串口控制寄存器SPCR中的相应位,单独使McBSP复位。设置XRST使得发送复位。RRST=0将分别使接收复位,GRST=0将使采样速率发生器复位。复位后,整个串口初始化为默认状态。所有计数器及状态标志均被复位,这包括接受状态标志RFULL、RRDY及RSYNCERR,发送状态标志XEMPTFY、XRDY及XSYNCERR。器件复位和McBSP控制器复位对寄存器标志位和管脚将产生不同的影响。RRDY和XRDY分别是McBSP接收和发送状态准备标志位。读山DRR数据和写入DXR数据都将分别对RRDY和XRDY状态位产生影响。读写串口数据有多种方式进行同步: 轮询RRDY和XRDY状态位; DMAEDMA控制器产生的同步事件(REVT和XEVT); CPU事件(RINT和XINT)产生的中断。McBSP的控制信号,如时钟、帧同步和时钟源都是可以设置的。图4-24是McBSP时钟和帧同步信号的一个典型时序。时钟CLKR和CLKX对数据的接收发送进行同步,而帧同步信号17SR和FSX则与一个数据单元传输同步。McBSP允许对数据时钟以及帧同步信号设置参数,如下:FSR、FSX、CLKX、CLKR的极性选择单相帧或二相帧定义每相中数据单元的个数定义每相中,一个数据单元的位数是选择帧同步信号触发新的串行数据发送流,还是被忽略选择帧同步与第一个数据位之间的延迟时间,可以是0位,l位,2位延迟接收数据的左右调整,进行符号扩展或是填充0对McBSP的收发部分可以各自独立地选择时钟以及帧同步配置。接收和发送的帧同步信号和时钟可以由内部或是外部产生,根据寄存器PCR、SRGR中相应位的设置而定。 3SPl协议下的接口 McBSP中的传输时钟具有停止模式,与SPI协议的兼容。McBSP支持两种SPI传输格式,在SPCR寄存器的CLKSTP位中设置。表4-9列出了CLKSTP与CLKXP相配合,对串口时钟工作模式的控制。图4-25和图4-26分别给出了在两种SPI格式下,时钟传输接口的时序情况。McBSP既可以作为SPI主设备又可以作为SPI从设备。作为SPI主设备时,由McBSP内部的采样率发生器产生时钟CLKX和从设备使能信号FSX.CLKX定义为输出口(CLKXM=1),FSX定义为输出口,与从设备的使能端(SS)连接。SPI协议要求:McBSP在移位输出数据之前,FSX信号就必须有效,所以XCR寄存器中XDATDLY位必须设置为1。XDATDLY=0或2时将导致非法操作。用户需要设置SRGR寄存器中的CLKSM位来选择采样率发生器的时钟源,以及利用CLKGDV位设置需要的SPI数据传输速率。在McBSP内部会产生一个连续的CLKX时钟,在完成传输后时钟禁止输出,从而实现传输接口所需要的时钟停止模式。因此在McBSP-端,对于发送和接收的内部操作而言,时钟信号实际上是连续的。选择时钟停止模式时,SRGR寄存器中的帧设置位(FPER和FWID)无意义。McBSP作为主设备时的接口框图如图4-27所示。当McBSP作为SPI从设备时,由外部的主设备产生所需的时钟信号和从设备使能信号。串口按照时钟进行数据同步传输。输入的CLKX和FSX信号同时也分别作为McBSP内部接收端的CLKR信号和FSR信号。McBSP的FSX引脚信号同从设备SPI的使能信号SS要求一样,在进行数据传输之前,外部主设备必须先将FSX信号置为有效(低电平)。图4-28是McBSP作为SPI从设备的接口框图。作为SPI从设备时,McBSP的CLKX管脚和FSX管脚配置为输入管脚(CLKXM=FSXM=0)。McBSP的RCRXCR寄存器中的(RX)DATDLY位必须置为0,以保证发送的第一个数据能够出现在DX管脚上,一旦检测到串行时钟CLKX有效,就可以立刻接收数据。虽然CLKX信号是由外部主设备产牛,但是McBSP内部的采样率发生器仍必须被使能,并被设置为相应的SPI模式。内部采样时钟对输入的CLKX和FSX:信号进行同步化处理。寄存器SRGR中的CLKSM=I,指定内部采样时钟由内部CPU时钟产生。必须保证内部的CLKG信号频率至少是SPI数据传输率的8倍,比如,可以令CLKGDV=l,将采样率发生器设置为最大的速率。设定McBSP工作在SPI模式下,需要按照以下步骤初始化寄存器:(1)复位收发端口,将SPCR寄存器中XRST和RRST置为0;(2)McBSP保持复位的状态下,设置有关的寄存器为需要的值,先设置CLKSTP=1xb;(3)置SPCR寄存器中GRST=l,采样率发生器退出复位态,开始工作:(4)等待两个时钟周期,以确保McBSP重新初始化;(5)根据由CPU还是由DMA来访问McBSP,分别进行下面的设置:如果是由CPU进行访问,置XRST=RRST=1,使能串口,注意SPCR寄存器中其他 的设置值不变。如果是由DMA进行访问,先对DMA进行初始化,启动DMA,使之等候同步事件, 然后再将XRST=/RRST=1,使串口退出复位态。(6)两个数据时钟周期后,发送端和接收端进入有效状态。4通用IO口在两种情况下,串口的管脚(CLKX,FSX,DX,CLKR,FSR,DR以及CLKS)可以作为通用IO口使用:接收或发送处于复位状态,SPCR寄存器中(RX) RST=0。串口使能为通用IO状态,PCR寄存器中(RX)IOEN=1。在表4-10中详细描述了这些管脚作为通用IO口的用法,其中有几个引脚只能定义为单向IO口,这一点一定要注意。 4.3 BIOS中McBSP设置实例在TMS320C6x系列器件里都集成了McBSP外设。不同类型的DSP芯片集成的McBSP外设个数不一样。BIOS为McBSP提供了对应的API模块。 1BlOS中McBSP控制器API函数同样McBSP模块基于句枘模式,完成对DSP器件McBSP外设的控制,进行串行收发数据操作。API模块包括结构定义、函数和宏。McBSP只有一个结构,定义如下:McBSP配置管理器创建配置对象,通过设置属性页的内容可以设置McBSP的工作方式。属性页的设置界面如图4-30所示,属性页主要包括以下几个部分:发送模式:中断方式、帧同步方式和时钟控制;发送帧和数据单元格式:相位、数据单元个数;接收模式:中断模式、帧同步、时钟摔制;接收帧和数据单元格式:相位、数据单元个数;采样频率发生器:采样频率发生器;多通道操作:数据单元和块分割:通用IO口:使能GPIO功能;McBSP资源管理器中显示器件内部集成的McBSP外设个数,并对每个外设定义一个初始化的句柄名。C6202和C6203芯片支持第3个外设MCBSP_Prot2,端口和句柄对应方式如下: McBSP_Prot0:句柄名hMcbspO; McBSP_Protl: 句柄名 hMcbspl: McBSP_Prot2: 句柄名hMcbsp2;通过属性页可以使能打开串口操作和用配置对象初始化串口。属性页如图4-31所示:通过CSL GUI设置好McBSP端口后,将会分别在头文件和源文件中生成相应代码,详细可以参照附带光盘里的例子。在csl_mcbsp.h头文件中有如下代代码:5 TMS320C6000的DMA控制器设计本节主要介绍C6000系列的直接存储器访问(DMA,Direct Memory Access)控制器其中介绍硬件特点、DMA通道与寄存器。5.1 DMA硬件介绍DMA控制器最大的特点是可以在没有CPU参与的情况下完成映射存储空间中的数据搬移。这些数据搬移可以是在片内存储器、片内外设或是外部器件之间,而且是在CPU后台进行的。DMA控制器具有4个相互独立编程的传输通道,允许进行4个不同内容的DMA传输。另外,还有一个辅助通道用来服务于主机口接口读写访问。在讨论DMA操作时,需要了解C6000的DMA传输中的几个概念:(1)数据的读传输(read transfer):DMA控制器从源地址存储器中读取数据。(2)数据的写传输(write transfer):DMA控制器将读取的数据写入目标地址存储器中。(3)数据单元传输(element transfer):一个数据单元的读传输和写传输的结合。(4)帧传输( transfer):帧的大小可编程设置。完成一个帧传输即传输一定数量的数据单元。(5)块传输(block transfer):每个DMlA通道也可以独立定义每块中帧的数量。完成一个块传输即传输一定数量的帧。(6)发送数据单元的传输(transmit element transfer):在通道分割模式下,数据单元从源 地址中读出并写入分割目的地址。(7)接受数据单元的传输(receive element transfer):在通道分割模式下,数据单元从分割源地址中读出并写入目的地址。DMA控制器有如下主要特点:(1)后台操作:DMA控制器可以独立于CPU工作。(2)高吞吐率:可以以CPU时钟的速度进行数据传输。(3)4个通道:DMA摔制器可以控制4个独立通道的传输。(4)辅助通道:主机口用辅助通道来访问CPU的存储空间。辅助通道与其他通道间的优先级可以设置。(5)单通道分割(split-channel)操作:利用单个通道就可以与一个外设间同时进行数据的读和写传输,效果就好像使用两个DMA通道一样。(6)多帧()传输:传送的每个数据块可以含有多个数据帧。(7)优先级可编程:每一个通道对于CPU的优先级是可编程确定的。(8)地址产生方式可编程:每个通道的源地址寄存器和目标地址寄存器对于每次读写都是可配置索引的。地址可以是常量、递增、递减,或是设定地址索引值。(9)32位地址范围:DMA控制器可以对仟何一个地址映射区域进行访问,包括:片内数据存储区片内程序存储区(当其作为映射存储器时,而不是作为cache使用)片内的集成外设通过EMIF接口的外部存储器通过扩展总线接口的扩展存储器(10)传送数据的字长可编程:每个通道都可以独立选择宽度为字节、半字(16位)或字(32位)。(11)自动初始化:每传送完一块数据,DMA通道会自动为下一个数据块的传送重新初始化。(12)事件同步:读、写和帧操作都町以由指定的事件触发。(13)中断反馈:当一帧或一块数据传送完牛,或是出现错误情况时,每一个通道都可以向CPU发出中断请求。DMA控制器在C6000中的位置如图4-32所示的阴影部分。5.2 DMA控制器设计及应用 1DMA寄存器、初始化和启动DMA寄存器用于初始化和控制DMA操作。每一个DMA通道都有一套相关的寄存器完成传输控制,在启动DMA之前,必须刘它们进行初始化。表4-14列出了有关的控制寄存器及其在映射存储器中的位置。限于篇幅,这里没有列出寄存器各个控制位的意义。读者可以参考TI的相关文档。每一个DMA通道启动可以在程序中由CPU完成,也可以是通过自动初始化肩动。每一个DMA通道都可以山CPU控制独立启动、暂停和停止。DMA通道丰控寄存器(PRICTL)的STATIS域指示相应DMA通道的当前状态。只有在STATUS位和START位相同时,才可以修改主控寄存器。启动操作如下所示:手工启动:向DMA主控制寄存器(PRICTL)的START域写入01b将直即启动该通 道的DMA。一旦启动,STATUS的值会变成01b。注意一旦启动,再写入01b将不会有任何影响。 暂停操作:在启动后,向START写10b可以暂停DMA。暂停时,如果某个数据单元传输的读传输过程已经完成,此时DMA通道会继续完成其对应的写传输。STATUS在DMA完成当前写传送后变为10b。 停止操作:启动后写入START=00b,DMA控制器将被停止。停止操作和暂停操作相 同。除非是工作在自动初始化模式下,否则一旦DMA完成数据传输,该通道使进入停止状态,STATUS的值变为00b。在一次块传送任务完成后,DMA控制器可以自动初始化。向主控制寄存器的START写入11b将以自动初始化方式启动DMA。在一次块传送任务完成后,DMA控制器自动调用DMA全局数据寄存器值预先为下一次数据块的传送操作初始化,因此DMA通道参数设置可以在下一次传送操作之前完成。自动初始化可以使DMA进行以下几种操作方式:连续操作:该方式占用一定CPU时间。通常,CPU必须在一次读写传送完成之后立 即重新初始化DMA。利用重载寄存器,就可以在当前块传输中的任何时间为下一次传送初始化参数。重复操作:连续操作的一个特例。传送完一块后,DMA控制器将重复前一次相同的 块传输。这种情况下,CPU不需要反复设置重载寄存器,只需在开始传输之前设定重载寄存器的值。使能自动初始化:只需通道主控制寄存器的START=11b,就可以使能自动初始化。 传送完一块后,DMA控制器将重载寄存器,重复前一次相同的块传输。如果在暂停后重新启动,START必须被重新设置为11b,以使自动初始化使能。在从自动初始化到非自动初始化操作中,首先需要暂停DMA摔制器,即写入10b,然后再次启动DMA控制器,即写入01b。2传输计数 DMA的通道传输计数寄存器(XFRCNT)包含两个域,分别表示当前传输的帧计数和每帧的数据单元计数,如图4-33所示。DMA的全局计数重装载寄存器结构与传输计数寄存器的结构相同,如图4-34所示。 COUNT:此域的16位无符号数指示当前块传输中的帧数,每块的最大帧数 为65535。当一帧内的最后一个读传输完成后,该计数值递减。一旦最后一帧传送完后,整个计数器会被DMA通道主控寄存器的CNT RELOAD域所指定的DMA全局计数重载寄存器内的高16位值重载。COUNT设置为0的效果和设置为1一样。ELEMENT COUNT:此域内的16位无符号数指示每帧传输的数据单元个数。每次数 据单元的读传输完成后,该值递减。每帧的最大数据单元数目为65535。最后一个数据单元完成传输后,ELBMENT会被DMA通道主控寄存器的CNT RELOAD域所选定的DMA全局计数重载寄存器内的低16位值重载。在块传输开始前,计数器以及对应的全局计数重载寄存器低16位必须设置相同的值,以保证每次的帧长度相同。 除了在自动初始化模式下需要这种重载以外,对于多帧数据传送,也需要数据单元计 数的重加载,必须设定重载值。如果数据单元计数初始值为零,则操作无效。 3传输控制:同步与地址产生同步机制使得用户可以利用某些事什来触发DMA的传输过程,例如外设中断或外部引脚中断。每一个通道有三种类型的同步方式: 读同步:由指定的事件触发读传输。 写同步:由指定的事件触发写传输。 帧同步:由指定的事件触发帧传输。由DMA通道主控寄存器的RSYNC和WSYNC两个域控制DMA的同步事件。如果这个寄存器内的FS=1,那么整个帧的同步事件是RSYNC选定的事件,这时WSYNC必须设置为00000b。如果该通道设置为分裂模式(SPLIT不等于OOb),那么RSYNC和WSYNC必须设为非零值。表4-15列出了两个域和同步事件的对应关系。DMA通道副控寄存器中的STAT和CLR位与同步事件的控制有关。当指定事件的有关信号发生由低变高(或由高变低)变化时,各个通道会锁定事件,同时相应的STAT位被置位。如果没有选择同步事件,读SFAT位总是1。单个事件可以用来触发多个动作。通过清除悬挂事件可以强制DMA通道等待下一个事件。相反,设置事件可以触发块传输。在触发事件的相关操作完成后,锁定事件的STAT位标志会被自动清除,也可以通过手动清除。用户可以分别向STAT和CLR写入1,手工设置事件或是清除事件。对STAT和CLR位写入0足无效的。手工清除与设置的优先级总是高于任何自动的清除与设置。DMA控制器负责对每个通道的读写传输进行地址计算。利用不同的地址产生方式,DMA控制器可以支持多种结构数据的传输。例如,DMA控制器可以对矩阵数据进行转置操作。DMA通道的源地址寄存器和目的地址寄存器都是32位,分别存放下次读传输和写传输的操作地址。如图4-35和图4-36所示。在计算传输地址时,有基本调整和使用全局索引值调整两种计算方式。基本调整是指通过控制域SRC DIR和DST DIR来设置传输地址按数据字长大小递增、递减、保持不变。全局索引寄存器如图4-37所示。与基本调整不同,这种模式是根据传输的数据元素是否是当前帧的最后一个来进行不同的地址调整。全局索引寄存器的LSBl6(ELEMENTINDEX)中存放普通调整值,MSBl6( INDEX)中存放帧尾调整值,两个索引值都是16位有符号数,范围从3276832767。每帧中数据除最后一个数据传输之外都按ELEMENT INDEX值规定地址寄存器的增量,对于最后一个数据传输,按照 INDEX值调整地址寄存器的值。4单一通道的分裂操作利用通道分裂操作方式可以使一个DMA通道为一个具有固定地址的外部或是内部外设同时提供输入和输出数据流。 分裂通道操作分为发送数据单元的传输和接收数据单元的传输,每种传输都依次执行一次读传输和一次写传输: 发送数据单元的传输发送读传输:数据从DMA通道的源地址读出,然后源地址按照设置参数进行调 整,传送计数减1。没有同步事件。发送写传输:由发送读传输得到的数据被写入分裂目标地址。此过程有WSYNC 域所指定的同步事件。接收数据单元的传输 接收读传输:数据从DMA通道的分裂源地址读出。此过程有RSYNC域所指定的事件同步。 接收写传输:由接收读传输得到的数据被写入目标地址,然后目标地址按照设置 调整。没有同步事件。由于每个通道只有一个数据单元传输和帧传输计数器,因此接收与发送的帧数以及每帧的数据单元个数必须是相同的。为了使分裂通道正常工作,RSYNC和WSYNC控制域必须配置为非零值,同时禁止帧同步方式。所有传输都按照以上次序进行。但是在以上的过程中,发送数据单元传输并不需要等前一次的接收数据单元传输完成之后才能进行。因此发送数据有可能会发生在接收数据之前。整个相关的发送数据单元传输完成后,源地址寄存器会被递减或者重新初始化。只要发送数据单元传输的次数不会超过接收数据单元传输的次数8次,DMA通道的硬件会继续运行,否则发送数据单元传输将被停止。在DMA主控寄存器中SPLIT域选取相应的DMA全局地址寄存器作为分裂传输操作中的分裂地址: 分裂源地址:即C6000的输入数据流的源地址,保存在选定的DMA全局地址寄存器 里。 分裂目标地址:即C6000的输出数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医学影像学影像诊断报告准确性评估答案及解析
- 校园安全教育培训方案课件
- 初级经济师资格考试(农业经济专业知识和实务)复习题库及答案(延边2025年)
- 中国移动大理白族自治州2025秋招笔试行测题库及答案计算机类
- 长春市中储粮2025秋招笔试性格测评题专练及答案
- 2025年矿业权评估师职业资格考试(矿业权评估经济与法律专业能力)考前冲刺试题及答案
- 2025青海联通校园招聘(30个岗位)笔试题库历年考点版附带答案详解
- 2025下半年四川宜宾市引进人才3938人笔试模拟试题及答案解析
- 2025安徽古井贡酒股份有限公司招聘高层次人才(博士)笔试模拟试题及答案解析
- 2026江苏银行校园招聘笔试备考题库及答案解析
- Unit 1~2单元月考测试(含答案) 2025-2026学年译林版(2024)八年级英语上册
- 中秋国庆节假期安全教育安全防范不松懈宣传课件模板
- 八年级语文写作技巧与课堂教案
- 鼻出血的课件护理
- 2025年干细胞治疗行业研究报告及未来行业发展趋势预测
- (2025年标准)清理乱账服务协议书
- 2025年4月自考00155中级财务会计试题及答案含评分标准
- 道路工程培训课件
- DGTJ08-2004B-2020 建筑太阳能光伏发电应用技术标准
- 国庆假期大学生安全教育
- 呼吸内科出科汇报
评论
0/150
提交评论