首页 > 范文大全 > 知识文库 >

tms320c67x,mcbsp

知识文库   发布时间:05-10    阅读:

tms320c67x,mcbsp。 基于TMS320C6437的MCBSP与EDMA实时串口通讯TMS320DM6437是专为高性能、低成本视频应用开发的,主频600 MHz,32位定点,采用达芬奇(DaVinci(TM))技术。该器件采用TI第3代超长指令集结构(VelociTI.3)的TMS320C64x+DSP内核,主频可达60以下是大智慧教育网www.dazhihui008.cn为大家整理的《tms320c67x,mcbsp》,希望大家能够喜欢!更多资源请搜索知识文库频道与你分享!

tms320c67x,mcbsp

基于TMS320C6437的MCBSP与EDMA实时串口通讯
篇一:tms320c67x,mcbsp

TMS320DM6437是专为高性能、低成本视频应用开发的,主频600 MHz,32位定点,采用达芬奇(DaVinci(TM))技术。该器件采用TI第3

代超长指令集结构(VelociTI.3)的TMS320C64x+DSP内核,主频可达600 MHz,支持8个8位或4个16位并行MAC运算,峰值处理能力高达4 800MIPS。基于TMS320DM6437诸多特点,这里提出一种实现DSP与FPGA的双向数据交换设计方案,采用TMS320DM6437的McBSP和EDMA实现异步串口通信。 McBSP接口是全双工串行接口,提供收发数据双缓冲以处理连续的数据流,并可独立配置收发部分,接收和发送都可使用独立的帧信号和时钟源。

TMS320DM6437有2个独立的McBSP接口(McBSP0和McBSPl)。EDMA可处理该处理器上所有内存单元和外设的数据传输,且不占用DSP时钟周期,EDMA还提供针对McBSP的同步事件,可方便控制数据传输。接收数据时,FPGA的数据通过McBSP传到DSP的DRR寄存器中,触发McBSP接收同步事件,EDMA将数据搬入DSP内存。发送数据时,当EDMA从DSP内存中将数据搬入DSP的DXR寄存器时,利用McBSP发送同步事件,将数据传输给FPGA。

1 硬件接口电路设计

McBsP接口的硬件连接如图1所示。DSP的McBSP接口可由内部时钟发生器或外部器件提供收/发时钟信号(CLKR/CLKX)及收/发帧同步信号(FSR/FSX)。为了简化FPGA内部时序,以上信号均由FPGA提供。图1中的EN_IN、EN_OUT为DSP控制FPGA中McBSP接口的使能信号,它们均与DSP的GPIO相连。当EN_IN为高时,FPGA接收DSP的数据;当EN_OUT为高时,FPGA开始向DSP发送数据。

2 软件程序设计

传统的C6000型DSP对McBSP和EDMA进行操作时,多使用TI公司提供的CSL(Chip Support Library)进行编程操作,由于TMS320DM6437不支持CSL,而是改用

PSP(Proeessor Support Package),所以对TMS320DM6437 McBSP接口采用PSP提供的McBSP Driver,主要用McBSP Driver提供的LLC层API进行编程。LLC层提供基于不同平台的驱动核心抽象。在该层可进行寄存器操作,宏定义,并且底层API可直接与硬件通信。

对应的EDMA程序开发则采用EDMA LLD(EDMA low Level Driver)提供的各种库进行编程。LLD实际上包含2个库用于管理EDMA外设:一个是EDMA RM(EDMA Resource Manager),管理所有的EDMA硬件资源以及中断;另一个是EDMA DRV(EDMA Driver),完成所有EDMA相关配置,并且通过RM满足资源需求。当调用DRV层API进行操作时,tms320c67x,mcbsp。

实际上是通过DRV层API调用RM层API来对EDMA外设寄存器进行直接操作来配置EDMA硬件。

本例中实现DSP和FPGA通信时,McBSP所需的帧同步信号以及时钟信号均由FPGA产生,McBSP发送过来32 bit的数据,DSP内部采用EDMA方式接收数据,McBSP接收同步事件触发EDMA传输。将数据放入DSP片内二级存储器的缓冲区,等待DSP处理。为了保证后写入的数据不会覆盖先写入的还没来得及被DSP处理的数据,片内二级存储器缓冲区采用乒乓缓冲结构。同样,DSP发送32bit数据给FPGA时,也是通过EDMA方式,由McBSP发送同步事件触发EDMA传输。

2.1 McBSP配置

McBSP的开启以及参数配置均采用LLC提供的API以及数据结构完成。但是因为

TMS320DM6437的引脚多采用引脚复用,并且GPIO和McBSP引脚复用到一起,由于本例中McBSP帧同步信号是由外部源产生,为了保证能监测到第一个帧同步信号,需先在PINMUX寄存器里将复用的引脚配置成GPIO模式,等检测到帧同步信号后,再将复用的引脚恢复成McBSP模式。

tms320c67x,mcbsp。

2.1.1 接收数据格式配置

McBSP接收数据格式在数据结构LLC_RcvDataSetup中设置,该数据结构在McBSP Driver提供的头文件llc_mcbsp Type.h中定义,在编译工程文件的时候需包含此头文件。接收数据为单帧数据,一个数据帧长度为4个字节,采用帧同步信号检测模式,不进行压缩,数据传输延迟一个比特,采用McBSP同步事件产生中断。McBSP发送数据格式在数据结构LLC_XmitDatasetup中设置,具体参数和接收数据格式保持一致。M-cBSP帧同步和时钟参数在数据结构LLC_mcbspClkSetup中设置,该结构同样在头文件

llc_mcbspType.h中定义。本例中,发送和接收的帧同步信号以及时钟源都由外部产生,接收和发送帧同步都是高电平有效,接收时钟上升沿有效,发送时钟下降沿有效,帧同步脉冲宽度为1bit,脉冲周期为32 bit。

2.1.2 启动McBSP

首先调用MeBSP LLC层API对McBSP接口进行设置,准备接收FPGA传输过来的信号。先调用函数LLC_mcbspOpen,该函数在llc_mcbsp.c中定义,函数原型为LLC_mcbspOpen(LLC_McbspObj*const pMcbspObj,Uint32InstanceId,

Int32*pMcbspParam,CSL_Status*pStatus),所需参数分别为用户定义的McBSP通道对象,McBSP通道ID,用户定义的配置参数及状态信息,返回参数为指向该通道的句柄hMcbsp。该句柄作为调用API的参数。

然后设置McBSP通道0,调用函数LLC_mcbspHwSetup(LLC_McbspHandle hMcbsp,const LLC_McbspHwSetup*setup)。第1个参数即为刚才返回的指向McBSP通道0的句柄,第2个参数为一个结构体,包含了前面定义的接收和发送数据结构以及帧同步和时钟参数结构,这样就按照实际应用的要求完成了对McBSP0通道的设置。配置完成后,相应的McBSP寄存器的值为:SPCR=0X0000400;RCR=0x00050040;XCR=0x00050040;SRGR=0x20000001;PCR=0x00000080。

最后利用函数LLC_mcbspHwControl使能McBSP接收和发送功能。函数原型为LLC_mcbspHwControl(LLC_McbspHandle hMcbsp,LLC_Mcbsp ControlCmd cmd,const void*arg)。第1个参数为指向McBSP通道0的句柄,第2个参数为硬件控制命令,第3个为对特定命令的补充说明。开启McBSP接收发送功能时,硬件控制命令为tms320c67x,mcbsp。

LLC_MCBSP_CMD_RESET_CONTROL,使能发送功能时,命令补充说明为

LLC_MCBSP_CTIRL_RX_ENABLE,使能接收功能时,命令补充说明为

LLC_MCBSP_CTRL_TX_ENABLE。

2.2 EDMA配置

2.2.1 EDMA配置原理

EDMA中传输的数据种类有3种:ARRAY,BLOCK,FRAME,分别对应3种不同类型的传输。首先是一维传输,即每一个EDMA事件触发的传输只传输一个ARRAY,该ARRAY所包含的字节数由参数RAM里的参数ACNT决定。然后是二维传输,每一个EDMA事件触发传输一个FRAME,每个FRAME里包含的ARRAY数由参数BCNT决定。以此类推。三维传输即每次传输一个BLOCK,每个BLOCK里包含的FRAME数由参数CCNT决定。 TMS320DM6437的EDMA共有128个参数RAM,其中存放每个EDMA通道需要的各个传输控制参数,参数RAM的默认对应关系为:EDMA EVENTO对应参数RAMO,EDMAEVENT1对应参数RAM1,等。以此类推。但是也可以在DCHMAPO-63寄存器里修改相应位自行对应。参数RAM的具体结构如图2所示。

一个参数RAM的长度为32个字节。首先是32 bit的可选参数OPT,对于可选参数,通过对各个位置0或1设置事件优先级,数据单元大小,源地址/目的地址变更模式,传输结束代码,是否使能传输参数链接(LINK)功能,同步传输方式等。SRC和DST为EDMA传输所需的源地址和目

的地址。SRCBIDX和DSTBIDX用于二维传输中,表示一个ARRAY的开始到下个ARRAY的开始所跨越的字节数。SRCCIDX和DSTCIDX用于三维传输中,一个FRAME的开始到下个FRAME的开始所跨越的字节数。BCNTRLD:三维传输里需要重新加载的BCNT。LINK:传输完成后重新加载的参数RAM地址,默认是LINK到空参数RAM。

在此实例中采用的双缓冲结构,即在DSP缓冲区内开辟2块缓冲用于并行处理FPGA通过McBSP传过来的数据。当EDMA往PingBuffer里传输数据时,CPU即可处理PongBuffer里的数据,当工作完成后,彼此又交换缓冲区,EDMA往PongBuffer里写数据,CPU处理PingBuffer里的数据。为了实现双缓冲结构,采用了EDMA提供的LINK功能,即将不同的EDMA传输参数RAM链接起来,组成一个传输链,在传输链中,一个传输的结束会导致自动从参数RAM中装载下一个传输需要的事件参数。在具体程序中,只需将Ping通道的参数RAM LINK到Pong通道,同时将Pong通道的参数RAMLINK到Ping通道即可。

2.2.2 EDMA接收数据配置实现

开发环境采用CCS 3.3。通过调用LLD API实现对EDMA Driver的配置以及传输操作。 在使用EDMA3 Driver之前必须首先对其进行初始化。EDMA3 LLD提供了2个API进行相关工作。EDMA3_DRV_create和EDMA3_DBV_open。前者用于创建一个EDMA3

Driver对象,后者用于开启对应的EDMA3 Driver

通道。

创建并开启EDMA3 Driver通道后,即可为此通道分配资源以及初始化其配置。首先调用EDMA3_DRV_requestChannel请求分配一个DMA通道,随后对该通道的参数RAM进行配置,以满足传输需要。EDMA3_DRV_setSrcParams用于设置该EDMA通道接收数据源地址为McBSPO的DRR寄存器,地址为0x01D00000,地址计数模式为递增模式。EDMA3_DRV_setDestParams设置该EDMA通道接收数据目的地址为DSP片内存储区PingBuf-fer首地址,确保第一次传输数据是到PingBuffer,地址计数模式同样为递增模式。EDMA3_DRV_setSrcIndex用于配置源地址计数索引值,由于源地址为McBSPO的DRR寄存器,固定不变,所以srcBidx=0,srcCidx=0。接着调用EDMA3_DRV_setDestIndex配置目的地址计数索引值,由于接收数据为32 bits,所以sreBidx=srcCidx=4,这是因为DSP内的最小计数单元为一个字节,8bit。EDMA3_DRV_setTransferPamms配置剩余的参数RAM传输参数,包括设置ACNT=4,BCNT=2 048,CCNT=1,采用一维传输A-SYNC。 接下来是Ping/Pong传输的程序实现。需再调用EDMA3_DRV_requestChannel两次,替Ping/Pong各自分配一个通道,于是,一共有3个通道,对应3个参数RAM。Ping通道的参数RAM与主通道的参数RAM完全一致,Pong通道的参数RAM与主通道相比,只需将Pong通道接收数据目的地址改为PongBuffer首地址。随后调用

EDMA3_DRV_linkChannel 3次,分别将主通道和Ping通道LINK,Ping通道和Pong通道相互LINK。

2.2.3 EDMA中断实现

结合DSP/BIOS设置了EDMA中断,以便在一个接收Buffer被填满时,产生的EDMA中断可通知DSP处理该Buffer的数据。

TMS320DM6437中,EDMA的128个通道只产生一种中断,当一个通道传输完成后,IPR(Interrupt Pending Register)寄存器里的相应位会被置1,EDMA中断处理器通过查询IPR寄存器确定是哪个通道完成了传输,并调用相应的中断服务程序。

EDMA LLD中中断的设置通过调用EDMA3_DRV_requestChannel实现。该函数的参数中跟中断有关的为eventQ(与通道优先级相关),tceCb(回调函数,即通道传输完成后所调用的中断服务程序)。本例中,设置eventQ=0,保证最高优先级,tceCb=edma_isr,该函数的作用是在通道传输完成后发送一个旗语信号给信号处理程序,通知其对收到的数据进行处理。此外,还需调用EDMA3_DRV_setOptField将参数RAMOPT参数中TCINTEN位置1,以使能EDMA中断。随后,利用DSP/BIOS将EDMA中断源和DSP的可屏蔽中断5连接起来,具体参数在DSP/BIOS配置文件中的HWI模块设置,如图3所示。

最后,由于选用了TMS320DM6437的可屏蔽中断5tms320c67x,mcbsp。

,还需使能

IER寄存器里的对应位,C64_enableIER(C64_EINT5)。

2.2.4 EDMA发送数据配置实现

EDMA发送数据程序流程和接收数据程序流程大略一致,但较为简单。只需请求一个EDMA传输通道,配置其源地址为DSP内部存放FPGA所需数据内存首地址,目的地址为McBSP的DXR寄存器。其余参数和EDMA接收数据通道参数相同。

3 实现结果

配置好MeBSP和EDMA后,启动FPGA传输数据,DSP做好接收和发送数据的准备,实验中,FPGA连续不断地发送自加地数给DSP,而DSP只发送2048个32 bit的从0开始的自加数据给FPGA。实验结果表明,DSP内部的PingBuffer区和PongBuffer区能连续不断的收到FPGA传输过来的数

据。某一时刻的PingBuffer区和PongBuffer区内部数据如图4所示,能看出实验实现了上述功能。

在FPGA端监测到DSP发送过去的数据如图5所示,可以看出是从0开始的连续自加数据。

本例中设置传完2 048个数据后EDMA发送事件触发一次中断,调用的中断服务程序主要作用是发送一个旗语信号给信号处理程序,并打印出“GOT INTO RCV ISR”,进入中断服务程序,随后已被阻塞的信号处理程序线程收到旗语信号后,开始运行,并打印信息“receive rcv int”,中断测试结果如图6所示,可以看出中断在连续不断的被触发。

基于TMS320C6713DSK McBSP输入输出通信的软件设计
篇二:tms320c67x,mcbsp

基于TMS320C6713DSK McBSP输入输出通信的软件设计

作者:刘金河 于 刚 陆 锋

来源:《现代电子技术》2008年第01期

摘 要:根据TMS320C6713外设芯片的特点,介绍了TLV320AIC23(AIC23)和McBSP接口电路的设计,搭建了DSP和AIC23之间的串口通信的软硬件系统。最后,根据实际的操作和应用以及结合TI公司提供的相关库函数,给出了在轮询方式或者中断方式下利用McBSP进行数据通信的详细代码和实现方法。

关键词:TMS320C6713;TLV320AIC23B;McBSP;轮询;中断

中图分类号:TP311 文献标识码:B

文章编号:

Software Design of Input and Output Communication Based on TMS320C6713DSK McBSP

2.Shenzhen Kaifa Technology Co.Ltd.,Shenzhen,518035,China)

Abstract:According to the characteristics of the TMS320C6713-peripheral,the paper introduces the interface circuit about the TLV320AIC23(AIC23) and McBSP design,and then sets up a hardware-software system to realize the communication beteeen DSP and AIC23.Finally,combined with the CCS3.0 of TI surport including relation functions and the practical operation and application,the detail codes and the realized methods are given based on McBSP communication by using polling or interrupt mode.

Keywords:TMS320C6713;TLV320AIC23;McBSP;polling;interrupt

1 引 言

数字信号处理器具有广泛的应用,从通信、语音处理到磁盘驱动器、图像处理都能发现DSP的应用。TMS320C6713(C6713))是基于超长指令(VLIW)结构高性能32位浮点DSP,被认为是TI公司运算能力最强的处理器之一。在225 MHz时钟主频下,其最高执行速度可达到1 350 MFLOPS、1 800 MIPS,是多功能多通道应用的理想选择。C6713提供了两个标准多通道高速缓冲串口(McBSP),具有全双工通信、收发独立时钟和成帧以及直接和AD/DA、AIC23等通信,允许8~32

位数据传送。

C6713DSK有32位TLV320AIC23B(AIC23)[1,2]输入输出模拟音频接口编解码器,该编解码器采用了Sigma-Delta技术进行数模和模数转换,并和McBSP直接相连作为数据输入输出通信接口,同时根据板上的12 MHz时钟可以设置8~96 kHz的采样频率。AIC23还提供了麦克风输入、线性输入、线性输出和耳机输出4个模拟接口,输入端的输入电压最大为

大输出电压为,DSP最。AIC23编解码器是采用McBSP0控制其内部寄存器配置和利用McBSP1

进行接收和发送数字信号。本文将详细介绍AIC23与McBSP实现DSK进行数据信号输入输

出通信的硬件和软件设计。 2 AIC23和McBSP

之间的硬件接口设计

TMS320C6713中的AIC23是一款高性能的集成功能的模拟音频接口,是信号处理的理想模拟I/O口的选择。AIC23提供了2线制和SPI两种接口连接方式,并由MODE引脚选择,他是一个可控制的芯片,内部有11个寄存器,如表1所示,默认情况下是以SPI方式和McBSP进行通信。其中McBSP0作为单向控制通道控制向AIC23发出信号, McBSP1承担双向数据传输任务。为了使McBSP和AIC23能够顺利实现通信,需要配置AIC23的

LRCIN,LRCOUT,DIN,DOUT和BCLK 5个引脚,分别和McBSP1中对应引脚

FSR1,FSX1,DX1,DR1和CLKR1与CLKX1相连接实现数据交换;同样还要配置McBSP0的FSX0,CLKX0,DX0分别控制AIC23的CS,SCLK,SDIN引脚。其接口电路如图1所示。 当AIC23和McBSP接口电路实现之后,McBSP1可以使用硬件中断CPU方式或EDMA方式接收和发送数据。因此,接收数据时,接收引脚DR1从AIC23接收的数据在FSR1和CLKR1作用下先移位到接收移位寄存器(RSR1),紧接着复制到接收缓冲器(RBR1),然后复制到数据接收寄存器(DRR1),最后CPU或EDMA控制器从DRR1读入数据。同样,当发送数据时,在FSX1和CLKX1作用下,CPU或EDMA控制器把要发送数据写到数据发送寄存器(DXR1),接着发送移位寄存器(XSR1)把数据移到发送引脚DX1上,以便通过AIC23的DA变换输送到外界。而接收和发送帧同步脉冲既可以由内部采样速率产生器产生,也可以由外部时钟源驱动,McBSP1

分别在相应时钟的上升沿和下降沿进行数据检测。

3

输入输出通信的软件设计

以上就是大智慧教育网http://www.dazhihui008.cn/带给大家的精彩知识文库资源。想要了解更多《tms320c67x,mcbsp》的朋友可以持续关注大智慧教育网,我们将会为你奉上最全最新鲜的知识文库内容哦! 大智慧教育网,因你而精彩。

  • ·适合睡觉听的中文歌(2017-02-10)
  • ·商务邮件范文(2017-02-14)
  • ·超好听的伤感中文歌(2017-02-14)
  • ·高兴的歌曲有哪些(2017-02-15)
  • ·开头好听的中文歌曲(2017-02-16)
  • ●【往下看,下一篇更精彩】●

    上一篇: vba,if,static

    下一篇: 大长脸于洋

    最新知识文库

  • excel做一周环比图
  • 室外停车场管理用房面积
  • 罚没收入,返还比例
  • 福州市数学少年宫
  • 幼儿科普剧剧本
  • 在坚持民主集中制过程中遇到的种种问...
  • 工厂供应商调查表
  • 党员,如何批评同事