当前位置:首页 >> 信息与通信 >>

基于TMS320DM6437的McBSP与EDMA实现串口通信


基于 TMS320DM6437 的 McBSP 与 EDMA 实现串口通信 TMS320DM6437 是专为高性能、低成本视频应用开发的,主频 600 MHz,32 位定点,采用 达 芬 奇 (DaVinci(TM)) 技 术 。 该 器 件 采 用 TI 第 3 代 超 长 指 令 集 结 构 (VelociTI . 3) 的 TMS320C64x+DSP 内核,主频可达 60

0 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 进行操作时, 实际上是通过 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 模式。 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 接 收 发 送 功 能 时 , 硬 件 控 制 命 令 为 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 的可屏蔽中断 5,还需使能 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 所示,可以看出中断在连续不断的被触发。 4 结论 通过 TMS320DM6437 的 McBSP 和 EDMA 实现了异步串口通信,并已经通过软硬件调试, 该部分已被实际运用于实时数据处理中。该方法硬件部分较容易实现,并且简单可靠,且采 用 EDMA 方式,大大节约了 CPU 资源,取得了较好的效果,具有一定的应用价值。


相关文章:
基于TMS320DM6437的McBSP与EDMA实现串口通信
基于TMS320DM6437 的 McBSP 与 EDMA 实现串口通信 TMS320DM6437 是专为高性能、低成本视频应用开发的,主频 600 MHz,32 位定点,采用 达芬奇 (DaVinci(TM)) ...
基于TMS320C6437的MCBSP与EDMA实时串口通讯
基于TMS320C6437的MCBSP与EDMA实时串口通讯_信息与通信_工程科技_专业资料。TMS320DM6437 是专为高性能、低成本视频应用开发的,主频 600 MHz,32 位定 点,采用达...
McBSP模拟UART通信
McBSP模拟UART通信_信息与通信_工程科技_专业资料。McBSP模拟UART通信基于TMS320C6416T DSK 的 McBSP 和 EDMA 实现串口通信针对 TI 公司的 DSP 芯片 TMS320C6416...
McBSP与EDMA实现UART--文档
McBSP与EDMA实现UART--文档_计算机硬件及网络_IT/计算机_专业资料。今日...基才TMS320DM6437的McBS... 5页 免费 EDMA 11页 2下载券 基于EDMA和MCBSP的...
DM6437
TMS320DM643x 处理器是达芬奇技术中首批仅基于 DSP...McBSP SPRU943 Peripheral Component Interconnect PCI ...DM6437 DSP EDMA/QDMA 触发方式 EDMA3CC 包括两种...
dsp作业
TMS320C62xx 一、DSP 简介 自 1982 年推出第...EDMA通道(0到15)中断 保留 保留 保留 McBSP 0 ...SP:高速同步串行通信,T1/E1/MVIP 接口 HPIF:16...
北京化工大学《DSP原理与应用》期末考试考点答案整理与汇总
DM6437,DM6447, DM6467) (1)C6416 结构特点: ●主处理器:TMS320C6416,...EDMA EDMA、外部存储器接口 EMIF、主机接口 HPI HPI、多通道缓冲串行口 McBSP ...
DM6437学习笔记
DM6437学习笔记_信息与通信_工程科技_专业资料。DM6437...EDMA 64 通道 Video Ports 1 input 1 output 串口...McBSP 都不能用 当 S/PDIF 接口使能时 TLV320...
C6455-EDMA3-mcbsp
C6455-EDMA3-mcbsp_信息与通信_工程科技_专业资料。...转:DSP(TMS320C6713)入... 23页 免费©...
mcbsp与EDMA发送和接收数据初始化程序
mcbsp与EDMA发送和接收数据初始化程序_计算机软件及应用...第4章 EDMA 51页 免费 基才TMS320DM6437的McBS....第十六讲 多功能缓冲串口... 34页 免费©...
更多相关标签:
tms320dm6437 | tms320dm6437核心板 | tms320dm6437开发板 | edma 和串口空闲中断 | tms320f28035串口 | dm6437 | dm6437核心板 | dm6437实验讲义 |