微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于TMS320DM6437的McBSP与EDMA实现串口通信

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

时间:02-09 来源:电子设计 点击:

参数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资源,取得了较好的效果,具有一定的应用价值。



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top