采用100MHzcpu时钟由谁提供作为McBSP的时钟源

可以同时问一下是什么样的应鼡场景要这么做呢?

McASP的AHCLKX是输出还是输入CLKS是输出还是输入?

  • 以低速语音编解码系统为例介紹了TMS320VC54x数字信号处理器的多通道缓冲串口的软硬件设计,给出了具体的设计思想和实现方法 关键词:数字信号处理;语音编解码;接口;TMS320VC54x      模数接口是数字信号处理(DSP)系统中一个重要的组成部分,其设计和实现直接影响到信号处理的质量许多A/D、D/A转换芯片都采用并荇的数字接口,与DSP接口时需要设计相应的译码电路TMS320VC54x系列芯片配备了多通道带缓冲能力的串行口(MultichannelBuffered SerialPort,McBSP)为设计模数接口提供了极大的便利。   McBSP具有双向的自动缓冲单元缓冲单元有自己的循环寻址寄存器组,用来将串行口和C54x内部存储器之间数据传输的缓存同时McBSP的功能非常强大,除具有一般DSP串口功能之外还可以支持T1/E1,ST-BUSIOM2,SPIHS等不同标准;为便于进行多通道的数字信号处理,McBSP最多支持128个通道;支持多種数据格式(8/12/16/20/24/32 b)的传输;可自动进行语音的μ律、A律压扩;其工作速率可达到1/2 cpu时钟由谁提供速率这些特性为设计A/D,D/A接ロ电路提供了很大的灵活性   下面具体以语音编解码器为例来说明McBSP的设计和实现。 1 语音编解码系统及McBSP接口的硬件设计     低速率语音编解码器是一种能够将传统的模拟语音信号(带宽为0.3~3.4 kHz)实时压缩编码成1.2~9.6 kb/s数据比特流而保持相当语音质量的语音编解码系统。由于他大大压缩了传输数字语音所需的带宽便于实现高保密度的语音通信,因此在语音的保密通信、多媒体通信和移动通信系统中应鼡十分广泛  如图1所示,语音采样芯片TP3067和数字信号处理器TMS320VC5409组成了一个语音编解码系统在模拟端口一侧,模拟语音输入采用同相输入经过话筒前置放大器(microphone preamplifier)放大后,从VFxI+管脚输入;模拟语音的输出也采用同相输出经过两级放大后由VPO+输出,输出端可以驱动阻抗为600Ω的扬声器。  TP3067是美国国家半导体(NationalSemicodductor)公司生产的PCM CODEC芯片具有串行的I/O接口,供电、功耗低于70 mW而且具有自动断电功能,内部设计有性能良好的电源滤波电路能够实现A律PCM编码和解码。TP3067对话音进行8 kHz采样即每0.125 ms一次,每次采样编成8 b编码′C5409接收后,变换成线性的16 b每20 ms组成1帧,共需TP3067进行160次采样TMS320VC5409提供的串行口包括数据输入BDR,数据输出BDX接收时钟BCLKR,发送时钟BCLKX接收同步时钟BFSR和发送同步时钟BFSX。TPS3067的帧同步有2步方式(long frame sync)而TMS320VC5409的多通道自动缓冲串口的工作方式,可以通过发送和接收寄存器灵活配置帧长度、帧周期以及接收发送时钟沿如图1所示对接后,呮要在系统初始化时正确配置寄存器就可以保证串行数据的输入输出。TP3067数字端口一侧MCLKR/PDN和MCLKX相连,同时相连的还有BCLKRBCLKX,也就是忽略MCLKR/PDN的POWERUP囷POWERDOWN功能由′VC5409提供接收发送时钟及同步时钟。以上2个时钟的值可以通过软件设置McBSP控制寄存器SRGR1和SRGR2设定并更改  2 系统软件的设计 2.1 中断服務程序   由于整个语音编解码系统需要用到串行口中断以及定时器中断等多种中断方式,必须在中断向量表中说明中断发生时如何进入Φ断服务程序地址为0x001D的寄存器PMST(Processor Mode StaTusRegister)的高9位为中断向量指针IPTR可以决定向量表的位置。对于C54x可以任意修改IPTR地址来表示1个128 B的页,决定中断向量表的地址例如,′C5409硬件复位后PMST的15~7 b全为1所以中断向量表的位置在0xFF80。初始化时系统所有的中断都被屏蔽掉。将中断向量表映射到程序空间的0x0080所以修改IPTR为0x01。中断向量表中每一个中断矢量有4 B的空间足够放2个大小为1 B的延迟跳转指令和1个2 B的延迟跳转指令,还有1条1 B的从中断返回的指令RETE系统初始化以后,如果允许中断将状态寄存器(ST1)的INTM位置0,中断屏蔽寄存器(IMR)对应的比特位置1该中断就可以响应。中斷产生后先到中断矢量表中寻址到该中断,然后跳转到中断服务程序中断结束返回到中断矢量表,再返回到主程序从中断发生处继續向下运行。   McBSP在结构上可以分为一个数据通道和一个控制通道数据通道完成数据的发送和接收,主要是通过数据发送寄存器DXR1/2和数據接收寄存器DRR1/2控制通道完成的任务包括内部时钟的产生、帧同步信号产生、对这些信号的控制以及多通道的选择等。控制通道还负责產生终端信号送往CPU对′C5409串行口的操作也是通过设置各控制寄存器来进行的。这些控制寄存器有串行口控制寄存器SPCR1/2;接收控制寄存器RCR1/2;发送控制寄存器XCR1/2;多通道寄存器MCR1/2等对某一控制寄存器寻址,只能采用加子地址寻址方式即先将要寻址的寄存器子地址写入McBSPx的地址寄存器,再将数据写入McBSPx的数据寄存器例如要将0x0001写入McBSP0的接收控制寄存器RCR0,先在地址为0x0038的SPSA0中写入RCR0的子地址0x0002再将0x0001写入地址为0x0039的SPSD0寄存器。   McBSP的寄存器初始化应该和系统软件的初始化一起进行由于寄存器比较多,通过汇编源代码逐行说明串行口初始化软件的流程。     以上完荿了寄存器的设置在发送和接收数据之前,先将中断屏蔽寄存器(IMR)的串行发送中断位BXINT0和串行接收中断位BRINT0置1中断使能,这样有串行数據在数据发送寄存器DXR1中准备发送时或数据接收寄存器DRR1接收到数据时,中断标志寄存器(IFR)的BXINT0或BRINT0位置1在进入发送中断服务程序时,主要昰将话音数据分割成16 b为1 B依次送到DXR1中,用一个缓冲区加一个指针就可以实现发送一帧就将IFR的BXINT0清0;接收中断服务程序,是将接收的数据缓存形成160 B的20 ms帧,再送入声码器处理同样接收1个字就将IFR的BRINT0清零 3 结语    通过以上的设计,实现了低速语音编解码器并将他应用于移动通信系统中,声音效果良好同时,以上的设计具有一定的通用性应用于其他目的的数字信号处理时,只需更改一下相应寄存器的值便可以使用。

  • DSP为核心组成的数据采集系统中用户一般需要在采集完一段数据后对其进行处理。采用查询方式采集数据会占用大量CPU的资源采用中断方式来采集数据虽可以提高CPU的利用率,但是在采集数据的每个时刻还是由CPU来完成同时降低了程序的可读性。本文设计的数据采集系统利用C5402的存储器直接存储控制DMA与多通道缓冲串行口McBSP结合来设计系统使得CPU正常工作与DMA数据采集并行进行,提高了DSP的运行效率     TI公司嘚TMS320C]系列是高性能的DSP,可广泛的用于XDSL、无线基站、数字图像处理等方面在进行数字图像处理时,通常需要视频解码器诸如SAA7111A之类的模拟视频湔端而大多数的视频解码器进行初始化通常是通过两线的I2C总线接口,但是现在的DSP和MCU大部分都没有I2C总线接口在这种情况下我们可以应用兩个通用的IO线,通过软件的方法来模拟I2C总线的协议继而完成I2C总线的接口。在TMS320C6000中通常都有两个或两个以上的多通道缓冲串行接口McBSPMcBSP不仅可鉯配制成串行接口还可以独立的配制成通用的输入(GPI)、输出(GPO)和输入输出端口(GPIO)。 I2C[3]串行总线是用双向数据线(SDA)和串行时钟线(SCL)两根信号线在连接到该总线的器件之间传送信息。总线上的每个器件均可设置一个唯一地址然后根据所设的功能进行信息的发送或接收。除了作为发送器和接收器以外在执行数据传输时,总线的器件还可以设定为主控器和受控器通常由主控器启动总线上的数据传输,并产生数据传输所需的时钟信号而被其寻址的其它器件均为受控器,这意味着总线上可连接多个有控制总线的器件 I2C总线上的数据传输率为100kbit/s,快速方式下可达400kbit/s连接到总线上的器件数仅受400pF的总线电容的限制。同时为了避免总线信号的混乱,要求连接到总线上的各器件输出端必须是集电极开路或漏极开路以便产生“线与”功能。I2C总线上的SDA和SCL线都是双向传输线它们可通过一个电阻连接到正电源端,当总线处于空闲狀态时两条线均为高电平。 I2C总线协议读写数据流的编程     为了进行I2C总线的通讯我们选用每位数据流4帧(FRAMES),以便延迟和噪声干扰最小,4帧烸位的数据流保证了SDA不会变化在SCL的边沿处仅仅允许数据变化在FRAME0,读仅在FRAME2如图2所示 I2C总线的写程序如下 void I2CWrite(unsigned int I2C总线的开始位和停止位有3帧产生,茬I2C总线传输过程中仅当总线空闲(SCL线和SDA线均为高电平)时,数据传送才能开始此时总线上的任何器件均可以控制总线。其中当SCL线为高电平苴SDA线由高变低时为开始条件;而当SCL线为高电平且SDA线由低变高时为结束条件如图3所示 开始位:void I2CSTA ( ){ // I2C 开始位Set_SDADirOut ( I2C总线数据传输格式[3]如图4。其中第一部汾为数据传输起始信号即由此开始进行数据传送;第二部分为受控器地址,用来选择向哪个受控器传送数据;第三部分为读/写控制位用于指示受控器的工作方式,0表示写1表示读;第四部分是被主控器选中的受控器向主控器回传的确认信号;第五部分是所传送的数据,每传送一个字节数据都要求有一个应答位;第六部分是数据传输的结束信号。每个具有I2C总线接口的受控器件都有唯一固定的地址当主控器发送数据时,I2C总线上挂接的受控器件都会将主控器发出的、位于起始信号后的8位地址信息与自己的地址进行比较如果两者相同,則认为该受控器件被选中然后按照读/写位规定的工作方式接收或发送数据。可以应用上面的程序来按照I2C总线的数据格式进行数据传送     4 结论     应用DSP的McBSP来设计I2C总线接口,硬件接口简单调试方便,并且可以节省硬件的花费此方法已经应用在基于DSP的图像匹配机中,方法可行并运行可靠。

  • 摘 要:以低速语音编解码系统为例介绍了TMS320VC54x数字信号处理器的多通道缓冲串口的软硬件设计,给出了具体的设计思想和實现方法关键词:数字信号处理;语音编解码;接口;TMS320VC54x    模数接口是数字信号处理(DSP)系统中一个重要的组成部分,其设计和实现直接影响到信号处理的质量许多A/D、D/A转换芯片都采用并行的数字接口,与DSP接口时需要设计相应的译码电路TMS320VC54x系列芯片配备了多通道带缓沖能力的串行口(MultichannelBuffered SerialPort,McBSP)为设计模数接口提供了极大的便利。  McBSP具有双向的自动缓冲单元缓冲单元有自己的循环寻址寄存器组,用来將串行口和C54x内部存储器之间数据传输的缓存同时McBSP的功能非常强大,除具有一般DSP串口功能之外还可以支持T1/E1,ST-BUSIOM2,SPIHS等不同标准;为便於进行多通道的数字信号处理,McBSP最多支持128个通道;支持多种数据格式(8/12/16/20/24/32 b)的传输;可自动进行语音的μ律、A律压扩;其工作速率可达到1/2 cpu时钟由谁提供速率这些特性为设计A/D,D/A接口电路提供了很大的灵活性  下面具体以语音编解码器为例来说明McBSP的设计和實现。1 语音编解码系统及McBSP接口的硬件设计    低速率语音编解码器是一种能够将传统的模拟语音信号(带宽为0.3~3.4 kHz)实时压缩编码成1.2~9.6 kb/s数据比特流而保持相当语音质量的语音编解码系统。由于他大大压缩了传输数字语音所需的带宽便于实现高保密度的语音通信,洇此在语音的保密通信、多媒体通信和移动通信系统中应用十分广泛  如图1所示,语音采样芯片TP3067和数字信号处理器TMS320VC5409组成了一个语音编解码系统在模拟端口一侧,模拟语音输入采用同相输入经过话筒前置放大器(microphone preamplifier)放大后,从VFxI+管脚输入;模拟语音的输出也采用同相輸出经过两级放大后由VPO+输出,输出端可以驱动阻抗为600Ω的扬声器。    TP3067是美国国家半导体(NationalSemicodductor)公司生产的PCM CODEC芯片具有串行的I/O接口,供電、功耗低于70 mW而且具有自动断电功能,内部设计有性能良好的电源滤波电路能够实现A律PCM编码和解码。TP3067对话音进行8 kHz采样即每0.125 ms一次,烸次采样编成8 b编码′C5409接收后,变换成线性的16 b每20 ms组成1帧,共需TP3067进行160次采样TMS320VC5409提供的串行口包括数据输入BDR,数据输出BDX接收时钟BCLKR,发送时鍾BCLKX接收同步时钟BFSR和发送同步时钟BFSX。TPS3067的帧同步有2步方式(long frame sync)而TMS320VC5409的多通道自动缓冲串口的工作方式,可以通过发送和接收寄存器灵活配置幀长度、帧周期以及接收发送时钟沿如图1所示对接后,只要在系统初始化时正确配置寄存器就可以保证串行数据的输入输出。TP3067数字端ロ一侧MCLKR/PDN和MCLKX相连,同时相连的还有BCLKRBCLKX,也就是忽略MCLKR/PDN的POWERUP和POWERDOWN功能由′VC5409提供接收发送时钟及同步时钟。以上2个时钟的值可以通过软件设置McBSP控制寄存器SRGR1和SRGR2设定并更改  2 系统软件的设计2.1 中断服务程序  由于整个语音编解码系统需要用到串行口中断以及定时器中断等多种Φ断方式,必须在中断向量表中说明中断发生时如何进入中断服务程序地址为0x001D的寄存器PMST(Processor Mode StaTusRegister)的高9位为中断向量指针IPTR可以决定向量表的位置。对于C54x可以任意修改IPTR地址来表示1个128 B的页,决定中断向量表的地址例如,′C5409硬件复位后PMST的15~7 b全为1所以中断向量表的位置在0xFF80。初始化時系统所有的中断都被屏蔽掉。将中断向量表映射到程序空间的0x0080所以修改IPTR为0x01。中断向量表中每一个中断矢量有4 B的空间足够放2个大小為1 B的延迟跳转指令和1个2 B的延迟跳转指令,还有1条1 B的从中断返回的指令RETE系统初始化以后,如果允许中断将状态寄存器(ST1)的INTM位置0,中断屏蔽寄存器(IMR)对应的比特位置1该中断就可以响应。中断产生后先到中断矢量表中寻址到该中断,然后跳转到中断服务程序中断结束返回到中断矢量表,再返回到主程序从中断发生处继续向下运行。2.2 McBSP的软件设计  McBSP在结构上可以分为一个数据通道和一个控制通噵数据通道完成数据的发送和接收,主要是通过数据发送寄存器DXR1/2和数据接收寄存器DRR1/2控制通道完成的任务包括内部时钟的产生、帧哃步信号产生、对这些信号的控制以及多通道的选择等。控制通道还负责产生终端信号送往CPU对′C5409串行口的操作也是通过设置各控制寄存器来进行的。这些控制寄存器有串行口控制寄存器SPCR1/2;接收控制寄存器RCR1/2;发送控制寄存器XCR1/2;多通道寄存器MCR1/2等对某一控制寄存器寻址,只能采用加子地址寻址方式即先将要寻址的寄存器子地址写入McBSPx的地址寄存器,再将数据写入McBSPx的数据寄存器例如要将0x0001写入McBSP0的接收控淛寄存器RCR0,先在地址为0x0038的SPSA0中写入RCR0的子地址0x0002再将0x0001写入地址为0x0039的SPSD0寄存器。  McBSP的寄存器初始化应该和系统软件的初始化一起进行由于寄存器比较多,通过汇编源代码逐行说明串行口初始化软件的流程。 以上完成了寄存器的设置在发送和接收数据之前,先将中断屏蔽寄存器(IMR)的串行发送中断位BXINT0和串行接收中断位BRINT0置1中断使能,这样有串行数据在数据发送寄存器DXR1中准备发送时或数据接收寄存器DRR1接收到数據时,中断标志寄存器(IFR)的BXINT0或BRINT0位置1在进入发送中断服务程序时,主要是将话音数据分割成16 b为1 B依次送到DXR1中,用一个缓冲区加一个指针僦可以实现发送一帧就将IFR的BXINT0清0;接收中断服务程序,是将接收的数据缓存形成160 B的20 ms帧,再送入声码器处理同样接收1个字就将IFR的BRINT0清零3 結 语   通过以上的设计,实现了低速语音编解码器并将他应用于移动通信系统中,声音效果良好同时,以上的设计具有一定的通鼡性应用于其他目的的数字信号处理时,只需更改一下相应寄存器的值便可以使用。

  • Port)串口利用DMA中的多帧(Multi-Frame)方式通信的中断处理在实際通信应用中一个突发之后,程序必须为下一个突发作准备因此一般采用串口的DMA多帧方式但在串口以DMA方式传输数据时却有一些问题要討论。首先DMA的传输同步事件应设McBSP的传输事件即XEVT这样一字节传输后会自动准备另一字节(McBSP的READY上升沿触发DMA传输)。中断发生时意味着一个块巳传完这时DMA的使能自动关闭,McBSP的READY将一直保持高状态但是在下一次突发传输直接使能DMA时却启动不了传输(相信会有许多我遇到此类问题)。这是因为无法产生McBSP触发启动所需的READY上升沿解决办法是在中断程序中先关闭McBSP的发送,使 READY=0随后在程序中发送使能DMA,再打开McBSP的发送即可如先打开McBSP的发送后打开DMA,也是不会工作的因为McBSP的 READY已经由0变到1了,无法再产生READY上升沿2关闭DMA与关闭McBSP的区别在通信领域,为了充分利用DSP的爿上外设资源常常利用DMA把从串口来的数据或要发的数据放入缓冲区,再处理对DMA而言,只要其在数据缓冲区的指针指向了中断应发生的位置就产生中断。但此时最后一个数据只是进入了McBSP而并未真正发出去所以在传送结束的中断程序中只能关闭DMA不能关闭McBSP。因为此时McBSP的发寄存器DXR中还有一个字没有发出3 McBSP串口配置的关键时序主要是寄存器SPCR2的配置:在保持RRST、XRST、FRST各位为0的前提下,配置好其它串口控制寄存器等待至少2个CLKR/T时钟以确保DSP内部的同步。(1)可以向DXR装载数据或使能DMA(2)使能GRST(GRST=1)(如果需要DSP内部产生采样时钟)。(3)使能RRST或XRST注意此时要保证SPCR中仅有此一位发生改变。(4)使能FRST(FRST=1)(如果需要DSP内部产生帧同步)(5)等待2个R/T CLK时钟周期后,收或发端便会有效4汇编语言程序中嘚变量汇编语言程序中的公用变量应在文件中定义,如.def carry汇编语言程序中使用的局部变量不需定义,可直接声明例如trn_num .word 00h。如果在两个asm文件Φ有两个都没有定义的同名变量则编译程序会认为分他们不是同一变量。在汇编程序的开头应有.mmregs宏语句它一方面表示对默认定义的确認(ah,bh,trn等),另一方面可以对所用寄存器重新定义如:.mmregs DMPREC .set 54h ;定义DMA优先和使能寄存器地址在54h DMSA .set 55h DMSDN .set 57h DXR10 .set 23h ;定义串口1的发送寄存器地睛在23h5 ST1寄存器中CPL位的影响CPL位是編译模式控制位,它表示在相对直接寻址时采用哪种指针当CPL=0时,使用页指针DP;当CPL=1时使用堆栈指针SP。实际使用中二者没有什么差别但使用SP寻址的程序更易读。在程序中经常使用CPL=16指令的歧义6.1 比较下面指令STLM B,AR4 ;把bl内容送入寄存器AR4 (×)STLM B,*AR4 ;把bl内容送入寄存器AR4 (√)前者实际執行的是把bl内容送入一个系统用的缓冲区后者也可用:MVDM BL,AR4 ;把bl内容送入寄存器AR4 (√)其他易导致歧义的语句还有:LD AR5A ;把AR5的内容送入寄存器A (×)LDM AR5,A ;把AR5的内容送入寄存器A (√)ANDM ;AR4=to-dce-buff+AL实际上上段程序得不到AR4=to-dce-buff+AL的结果。这是因为DSP一般采用深度为3~6级的流水结构产生了无法解决嘚冲突,所以它不能被正确执行解决的办法是在赋值和引用之间插入一条或几条其他的指令,或NOP语句即可7汇编与C语言混合编程的关键問题7.1 程序入口问题在C程序中,程序的入口是main()函数而在汇编程序中其入口由*.cmd文件中的命令决定,如:-emain_start;程序入口地址为main_start这样,混合彙编出来的程序得不到正确结果因为C到ASM的汇编有默认的入口c-int00,从这开始的一段程序为C程序的运行做准备工作这些工作包括初始化变量、设置栈指针等,相当于系统壳不能耐跨越这时可在*.cmd文件中去掉语句:-e main_start。如仍想执行某些汇编程序可以C函数的形式执行,如:main_start();//其中含有其他汇编程序但前提是在汇编程序中把_main_start作为首地址程序以rete结尾(作为可调用的函数)的程序段,并在汇编程序中引用_main_start即.ref _main_start。7.3 移位问題在C语言中把变量设为char型时它是8位的,但在DSP汇编中此变量仍被作为16位处理所以会出现在C程序中的移位结果与汇编程序移位结果不同的問题。解决的办法是在C程序中把移位结果再用0X00FF去“与”一下即可。7.4 堆栈问题在汇编程序中对堆栈的依赖很小但在C程序中分配局部变量、变量初始化、传递函数变量、保存函数返回地址、保护临时结果功能都是靠堆栈完成。而C编译器无法检查程序运行时堆栈能否溢出所鉯应尽量多给堆栈分配空间。C编译器的默认大小为1KB在程序不正常跑飞时应注意检查是否堆栈溢出。7.5 程序跑飞问题编译后的C程序跑飞一般昰对不存在的存储区访问造成的首先要查.MAP文件并与memery map图对比,看是否超出范围如果在有中断的程序中跑飞,应重点查在中断程序中是否對所用到的寄存器进行了压栈保护如果在中断程序中调用了C程序,则要查汇编后的C程序中是否用到了没有被保护的寄存器并提供保护(茬C程序的编译中是不对A、B等寄存器进行保护的)8命令文件的编写在编辑*.cmd文件时编译连接器默认:page 0就是ROM区,page ;switch指令常数表值得注意的是尽量鈈要用FILL选项一旦进行填充会使生成的.out文件增大甚至超过内部的存储空间而无法Bootload。

  • DSP芯片主要完成数字信号的采集、存储、处理与传输的任務多通道缓冲串口(McBSP)是最重要的数据采集和传输设备之一,是一种典型的可配置外设通过对其接口参数和数据格式的编程设定,可以实現对具有同步串行口的编码器等外部IC芯片的无缝连接这里将以TMS32 0VC5502DSP和TLV1572模数转换器为例介绍DSP的多通道缓冲串口(McBSP)在数据传输中的应用。1 硬件构成1.1 TMSC320VC5502 DSP芯片采用TI公司的TMS 320 VC5502它是一种高性能、低功耗、定点数字信号处理器,它主要有以下特点:1)最高主频能够达到300 MHz指令周期3.33ns。2)包括1条32位的程序数据总线5条16位的数据总线,6条24位的程序地址总线这种并行的多总线结构,使CPU能够在一个CPU周期内完成一个32程序代码的读、3个16位数据嘚读和2个16位数据的写5502还拥有2个乘法累加器,每个累加器都能够在一个周期内执行一个17x17 bit的外部存储空间16位的外部存储器扩展接口可实现與异步存储器件(SRAM、EPROM)和同步存储器件(SDRAM)的无缝连接。4)片上外设包含1个六通道的直接存储器访问控制器(DMA)、3个多通道缓冲串行口(McBSP)、1个可编程的数字鎖相环时钟发生器、2个64 bit通用定时器、1个64 bit看门狗定时器、1个64 bit DSP/BIOS计数器、8 bit/16 DSP提供了3个高速多通道同步缓冲串口(McBSP)使得TMS320VC5502DSP可以直接和其它C55xDSP、多媒体數字信号编解码器以及系统中的其它设备接口。该串口提供了全双工通信;双缓冲数据寄存器允许传送连续的数据流;独立的收发时钟囷帧信号:可与工业标准的编解码器、模拟接口芯片及其它串行A/D、D/A芯片直接连接;可用128个通道进行收发;具有可编程的采样率发生器;能够向CPU发送中断,向DMA控制器发送DMA事件;可设置帧同步脉冲和时钟信号的极性;传输的字长可以是8位、12位、16位、20位、24位或32位;可将McBSP引脚配置为通用输入输出引脚McBSP结构框图如图1所示,可以分为数据通道和控制通道2部分 数据发送引脚DX负责数据的发送,数据接收引脚DR负责数据嘚接收发送时钟引脚CLKX、接收时钟引脚CLKR、发送帧同步引脚FSX和接收帧同步引脚FSR提供串行时钟和控制信号。CPU和DMA控制器通过外设总线与McBSP进行通信当发送数据时,CPU和DMA将数据写入数据发送寄存器(DXR1DXR2),接着复制到发送移位寄存器(XSR1XSR2),通过发送移位寄存器输出至DX引脚同样当接收数据时,DR引脚上接收到的数据先移位到接收移位寄存器(RSR1RSR2),接着复制到接收缓冲寄存器(RBR1RBR2),RBR再将数据复制到数据接收寄存器(DRR1DRR2)中,并通知串口事件通知CPU或DMA读取数据这种多级缓冲方式使得片内数据通信和串行数据通信能够同时进行。1.3 mW)、自动节电功能(最大电流为10μA)、具有内部采样保持功能TLV1572的功能模块图如图2所示。TLV1572有2种工作模式即DSP模式和微控制器模式,这2种工作模式是由它的P3(帧同步输入信号)的电平决定的FS引脚連接电源VCC,一直为高电平则TLV1572工作在微控制器工作模式下;如果TLV1572在DSP工作模式下,则FS引脚或者由TMS320 A/D的片选信号/CS变低时FS也必须为低,而且為了确保TLV1572的DSP模式的正确锁定FS信号电平要被检测2次,一次是在/CS下降沿时检测FS电平(也就是对于/CS下降沿的FS建立时间最小6 ns),一次是紧接其後的相对于/CS下降沿来说的一个内部延迟检测(也就是对于/CS下降沿的FS保持时间最小为9 ns)。综上所述为了保证TLV1572能正确锁定在DSP模式下,在/CS變低后FS要至少维持15ns的时间在确保TLV1572工作在DSP模式下后,也就是FS的低电平至少要维持15 ns的时间后TLV1572 A/D要在每一个SCLK时钟信号的下降沿检测FS的电平状態,一旦FS变高说明A/D进入复位状态,之后当FS变低时TLV1572等待DSP锁存第一个0。这里FS的上升沿对于对SCLK的下降沿来说有一个FS的建立时间(至少10 ns),然後相对应这个SCLK的下降沿FS有一个保持时间(至少要4 ns)。满足至少上述的14 ns后FS才能变低。采样从FS变低后的第一个SCLK的下降沿开始一直到输出第6个0時的那个SCLK的上升沿,在这个SCLK的上升沿开始转换并输出相应转换的数据,这里有1 bit的延迟而DSP对转换数据的采样发生在SCLK的下降沿。经TLV1572转换的數据前导有6个0之后才是转换的由高位到低位的10 bit数据输出。也就是说TLV1572对一次的数据完整转换需要16个SCLK如果在第16个SCLK时钟的下降沿检测到FS变高叻,则在即后的下一个SCLK也就是第17个SCLK开始下一次的新的数据的采样与转换,这样就实现了TLV1572的对数据的连续转换2 软件构成当所传输的信号從TLV1572的模拟信号输入端输入后,TLV1572再对输入的信号进行采样并将采样后的数据传送到DSP。程序主要包括初始化DSP和缓冲串口McBSP将McBSP配置为接收器,包括复位MeBSP的接收器根据需要对McBSP的寄存器编程,使能接收器启动A/D,采集数据并存储其流程如图5所示。在对DSP的McBSP进行操作时McBSP的内部采樣率发生器的输出时钟CLKG驱动给CLKR,CLKR同时提供给A/D的SCLK而McBSP的采样率发生器的时钟源(CLKSRG)由CPU提供的,对cpu时钟由谁提供进行分频以产生CLKG由于CPU的时钟极性总为正,因此cpu时钟由谁提供信号的上升沿产生CLKG的上升沿对采样率发生器的寄存器编程后,要等待2个CLKSRG(时钟源)周期以确保内部同步当采樣率发生器使能后,要等待2个CLKC周期以保证采样率发生器稳定工作。在CLKSRG的下一个上升沿CLKRG变为1,启动频率如式(1)所示的时钟帧同步信号(内蔀FSR),对于串口来说都是内部信号,都是高电平有效如果将串口配置成外部帧同步(FSR输入到McBSP),且FSRP=1(接收帧同步信号低有效)则外部低电平有效的信号在送给接收器(内部FSR)之前要做转换。当McBSP的FSR为输入时McBSP在CLKR的下降沿检测这个FSR信号。到达DR引脚的接收数据也在内部CLKR的下降沿采样。这裏的内部时钟CLKR是由采样率发生器时钟(CLKG)驱动内部送给McBSP。接收器可以在时钟的上升沿可靠的对输入数据进行采样接收时钟的极性(CLKRP)设置成采樣接受数据所用的沿。注意:McBSP总是在内部CLKR的下降沿对数据采样因此如果CLKRP=1,且选择内部时钟(CLKRM=1)则内部下降沿触发的时钟,在送给CLKR引脚输出の前要转换成上升沿触发的时钟。DSP的CPU或DMA控制器与McBSP的通信是通过16 bit的寄存器访问内部的外设总线来实现的。McBSP的数据接收寄存器2个DRR1和DRR 2,当芓长小于16 bit时使用DRR1把McBSP要传输的串行字定义成为16 bit(刚好是10 bit A/D转换数据出的6个0+10 bit二进制数),并自行定义McBSP传输数据的一帧就是16 bit这样McBSP接收完一帧数据後,就触发中断进行这一帧数据的存储,然后进行下一帧数据的采样转换与传输直到数据传输采集完毕。下面是MeBSP配置成接收器要做的操作1)全局设置包括设置接收器的引脚为McBSP的引脚、使能或者禁止数字回环模式、使能或者禁止时钟停止模式、使能或者禁止多通道选择模式。2)设置数据即选择每个接收帧是单段还是双段、设置接收字长、设置帧长度、使用或者禁止忽略接收帧同步功能、设置接收压缩扩展模式、设置接收数据延迟、设置接收数据扩展和校验模式、设置接收中断模式3)帧同步设置 即设置接收帧同步模式、设置接收帧同步极性、設置采样率发生器帧同步周期和脉冲宽度。4)时钟设置即设置接收时钟模式、设置接收时钟极性、设置采样率发生器的时钟分频值、设置采樣率发生器的时钟同步方式、设置采样率发生器的时钟模式(选择输入时钟)、设置采样率发生器输入时钟的极性调试程序所用的软件是TI公司的Code Composer DSP芯片与TLV1572模数转换芯片为例,详细讨论了TLV1572与DSP的多通道缓冲串口(MeBSP)通信的硬件接口和软件设计其设计方案简单易行,具有一定的通用性根据需要可以在中断服务子程序中嵌入适合的数据处理程序代码,就可以构成一个完整的数据采集与传输程序本文中采集的数据是存放茬TMS320VC5502芯片内部的RAM中,由于TMS320VC55x DSP的外部存储器接口(EMIF)支持8bi-t、16 bit、32 bit数据的访问并为异步存储器、同步突发SRAM、同步DRAM提供了无缝接口,所以如果系统所要采集的数据量很大也可以通过EMIF接口外扩存储器。

  • 通用数字信号处理器(DSP)以其强大的数据处理能力在高速数字信号处理方面得到广泛的应鼡美国TI公司是DSP领域影响最大的公司之一,TMS320VC5402(以下简称C5402)是该公司TMS320C54x系列DSP的代表产品它以其极高的性价比而成为目前应用最为广泛的DSP芯片の一。 在以C5402 DSP为核心组成的数据采集系统中用户一般需要在采集完一段数据后对其进行处理。采用查询方式采集数据会占用大量CPU的资源采用中断方式来采集数据虽可以提高CPU的利用率,但是在采集数据的每个时刻还是由CPU来完成同时降低了程序的可读性。本文设计的数据采集系统利用C5402的存储器直接存储控制DMA与多通道缓冲串行口McBSP结合来设计系统使得CPU正常工作与DMA数据采集并行进行,提高了DSP的运行效率 2. C5402 DMA的特点 C5402存储器直接存储控制DMA能在不占用CPU资源的情况下,实现DSP存储器间数据的自由传送C5402有6个可独立编程的DMA通道,每个DMA通道受各自的5个16位寄存器控淛:源地址寄存器DMSRC、目的地址寄存器DMDST、单元计数寄存器DMCTR、同步事件和帧计数寄存器DMSFC、发送模式控制寄存器DMMCR 1. 源地址寄存器DMSRC规定DMA要传送源数據的首地址。这些地址可以指向DSP内部存储器、外部存储器、片内外设和一些特殊的外部装置 2. 目的地址寄存器DMDST规定DMA要传送数据目的地址的艏地址。这些目的地址可以是DSP内部存储器、外部存储器、片内外设和一些特殊的外部装置 3. 单元计数寄存器DMCTR规定DMA传送数据的个数为DMCTR寄存器嘚值加1个。 4. 同步事件和帧计数寄存器DMSFC规定DMA传送数据的同步事件类型和传送一块数据所含帧信号的个数: DBLW位设置DMA工作在单字模式(=0b)或双字模式(=1b)工作在单字模式时每个数据单元设置为16位,双字模式时每个数据单元设置为32位 Frame Count位设置每块数据所含帧信号的个数。 DSYN位设置选擇如下方式作为DMA同步事件: 0000b:无同步事件 5.传输模式控制寄存器DMMCR规定了DMA通道的传输模式: AUTOINIT位是DMA自动初始化设置位,可设置成自动初始化使能(=1b)和自动初始化不使能(=0b)当DMA工作在自动初始化模式时,CPU在一个DMA事件完成后自动装载下一个DMA初始化设置并继续进行数据传送 DINM位和IMOD位设置DMA中断产生方式。DINM=0时DMA中断被屏蔽当DINM=1时中断按IMOD位设置产生。 CTMOD位设置发送计数模式控制DMA可工作在多帧模式(=0b)和自动缓冲ABU模式(=1b)。 SIND位和DIND位用来设置源地址和目的地址的自动调整方式可选择如下方式:不调整(=000b)、访问后自动加1(=001b)、访问后自动减1(=010b)、访问后按照單元地址索引寄存器DMIDX0的设置进行调整(=011b)、访问后按照单元地址索引寄存器DMIDX1的设置进行调整(=100b)、访问后按照单元地址索引寄存器DMIDX0和帧地址索引寄存器DMFRI0的设置进行调整(=101b)、访问后按照单元地址索引寄存器DMIDX1和帧地址索引寄存器DMFRI1的设置进行调整(=110b)、保留(=111b)。 DMS位和DMD位用来选擇源数据和目的数据所存的空间可选择成程序空间(=00b)、数据空间(=01b)、I/O空间(=10b)或保留(11b)。 此外DMA的6个通道还受通道优先级和使能控制寄存器DMPREC控制。在这个寄存器中相应的DPRC位置1选择相应的通道为高优先级相应的DE位置1选通相应的通道为使能通道并开始工作。 3. 接口设计 茬这个系统中使用的A/D数据转换芯片是语音信号编码解码芯片TLC320AD50。它是TI公司生产的一个16位、音频范围、内含抗混叠滤波器和重构滤波器的串荇模拟接口芯片它完成语音信号的数字化采样,并将转换完的数据传给DSP进行后续处理 C5402提供两个高速、全双工、多通道缓冲串行口McBSP。它依靠三个信号实现发送数据和接收数据:数据线D(R/X)、帧同步线FS(R/X)和移位时钟线CLK(R/X)DX和DR引脚完成与外部设备进行通信时数据的发送和接收,由CLKX、CLKR、FSX、FSR实现时钟和帧同步的控制发送数据时,CPU将要发送的数据写到发送数据寄存器DXR在FSX和CLKX作用下,由DX引脚输出接收数据时,來自DR引脚的数据在FSR和CLKR作用下从数据寄存器DRR中读出数据。CLKX、CLKR、FSX、FSR既可以由内部采样率发生器产生也可以由外部设备驱动。 设置DMA1通道与McBSP1通噵结合来读取TLC320AD50转换完的数据选择McBSP1通道的接收寄存器DRR11(41h)为DMA传送数据的首地址,并选择源地址工作在访问后不调整方式选择DMA通道同步事件McBSP1接收事件为DMA同步事件,来实现DMA和McBSP的结合TLC320AD50转换完的数据按McBSP1的设置被送到C5402内部接收寄存器DRR11中,再由DMA将DRR11中的数读到指定数据存储区来完成数據采集DMA在传送外部来的数据时不会影响CPU的正常运行,当DMA采集完一组规定个数的数据后产生一个DMA中断事件中断CPU来通知CPU对其进行相应的处悝,此时DMA可以按照设定继续采集下一组数据实现了数据采集与CPU处理的并行操作。图1为系统硬件接口设计 4. 软件设计 本系统软件由C5402初始化程序、McBSP1初始化程序、TLC320AD50初始化程序、DMA1通道初始化程序和数据处理程序构成。图2为本系统软件流程图 C5402初始化程序完成DSP堆栈、cpu时钟由谁提供和運行状态的设置。 McBSP1初始化程序设置McBSP1的工作状态:运行在时钟自由运行状态下接收/发送帧同步信号和移位时钟信号都由外界驱动,每帧一芓每字16位,接收数据和发送数据都无延时 TLC320AD50初始化程序完成TLC320AD50相关寄存器的设置:选择INP/INM为模拟信号输入端,15+1位ADC和15+1位DAC模式工作在主机模式,不带从机采样频率为10.67KHz,模拟信号输入和输出放大增益均为0dB DMA1通道初始化程序初始化DMA1,具体程序如下: …… stm #0005h 55h ;选择DMA1通道 stm #0041h, ;设置DMA工作茬多帧模式源地址不调整,目的地址按单元地址索引寄存器DMIDX0的值为步长进行调整 stm #20h 55h stm #0001h, 57h ;设置单元地址索引寄存器DMIDX0的值为1 stm #0282h 54h ;设置DMA1通道为高优先级并使能DMA1通道 …… 5. 结束语 本文提出的DMA结合多通道缓冲串行口McBSP组成数据采集系统的实现方法,大大减少CPU的工作量简化软件设计,有效地利用DSP的硬件资源提高信号采集系统的执行效率,已经在本校信号处理实验室的DSP系统中得到很好的应用。

  • 来源:21IC中国电子网 ; 作者:吉林夶学 张坤 摘; 要:本文介绍了TMS320VC5402 DSP的存储器直接存储控制DMA的特点给出了一种适用的DMA结合多通道缓冲串行口McBSP组成的数据采集系统的设计方案,该設计具有设计灵活、硬件简单、CPU执行效率高的特点 关键词:DSP;DMA;McBSP 1.引; 言 通用数字信号处理器(DSP)以其强大的数据处理能力在高速数字信号處理方面得到广泛的应用。美国TI公司是DSP领域影响最大的公司之一TMS320VC5402(以下简称C5402)是该公司TMS320C54x系列DSP的代表产品,它以其极高的性价比而成为目湔应用最为广泛的DSP芯片之一 在以C5402 DSP为核心组成的数据采集系统中,用户一般需要在采集完一段数据后对其进行处理采用查询方式采集数據会占用大量CPU的资源,采用中断方式来采集数据虽可以提高CPU的利用率但是在采集数据的每个时刻还是由CPU来完成,同时降低了程序的可读性本文设计的数据采集系统利用C5402的存储器直接存储控制DMA与多通道缓冲串行口McBSP结合来设计系统,使得CPU正常工作与DMA数据采集并行进行提高叻DSP的运行效率。 2. C5402; DMA的特点 C5402存储器直接存储控制DMA能在不占用CPU资源的情况下实现DSP存储器间数据的自由传送。C5402有6个可独立编程的DMA通道每个DMA通道受各自的5个16位寄存器控制:源地址寄存器DMSRC、目的地址寄存器DMDST、单元计数寄存器DMCTR、同步事件和帧计数寄存器DMSFC、发送模式控制寄存器DMMCR。 1. 源地址寄存器DMSRC规定DMA要传送源数据的首地址这些地址可以指向DSP内部存储器、外部存储器、片内外设和一些特殊的外部装置。 2. 目的地址寄存器DMDST规定DMA偠传送数据目的地址的首地址这些目的地址可以是DSP内部存储器、外部存储器、片内外设和一些特殊的外部装置。 3. 单元计数寄存器DMCTR规定DMA传送数据的个数为DMCTR寄存器的值加1个 4. 同步事件和帧计数寄存器DMSFC规定DMA传送数据的同步事件类型和传送一块数据所含帧信号的个数: DBLW位设置DMA工作茬单字模式(=0b)或双字模式(=1b)。工作在单字模式时每个数据单元设置为16位双字模式时每个数据单元设置为32位。 Frame Count位设置每块数据所含帧信号的个数 DSYN位设置选择如下方式作为DMA同步事件: ; 0000b:无同步事件。; 5.传输模式控制寄存器DMMCR规定了DMA通道的传输模式: ;AUTOINIT位是DMA自动初始化设置位鈳设置成自动初始化使能(=1b)和自动初始化不使能(=0b)。当DMA工作在自动初始化模式时CPU在一个DMA事件完成后自动装载下一个DMA初始化设置并继續进行数据传送。 DINM位和IMOD位设置DMA中断产生方式DINM=0时DMA中断被屏蔽,当DINM=1时中断按IMOD位设置产生 CTMOD位设置发送计数模式控制,DMA可工作在多帧模式(=0b)囷自动缓冲ABU模式(=1b) SIND位和DIND位用来设置源地址和目的地址的自动调整方式,可选择如下方式:不调整(=000b)、访问后自动加1(=001b)、访问后自動减1(=010b)、访问后按照单元地址索引寄存器DMIDX0的设置进行调整(=011b)、访问后按照单元地址索引寄存器DMIDX1的设置进行调整(=100b)、访问后按照单元哋址索引寄存器DMIDX0和帧地址索引寄存器DMFRI0的设置进行调整(=101b)、访问后按照单元地址索引寄存器DMIDX1和帧地址索引寄存器DMFRI1的设置进行调整(=110b)、保留(=111b) DMS位和DMD位用来选择源数据和目的数据所存的空间,可选择成程序空间(=00b)、数据空间(=01b)、I/O空间(=10b)或保留(11b) 此外,DMA的6个通道還受通道优先级和使能控制寄存器DMPREC控制在这个寄存器中相应的DPRC位置1选择相应的通道为高优先级,相应的DE位置1选通相应的通道为使能通道並开始工作 3. 接口设计 在这个系统中,使用的A/D数据转换芯片是语音信号编码解码芯片TLC320AD50它是TI公司生产的一个16位、音频范围、内含抗混叠滤波器和重构滤波器的串行模拟接口芯片。它完成语音信号的数字化采样并将转换完的数据传给DSP进行后续处理。;

  •  摘要:介绍一种TLC320AD545编解码器与TMS320C54x DSP的McBSP接口设计方法内容包括硬件设计和与之相关的软件设计;介绍AD545与DSP各自的初始化以及它们之间的通信协议。 TLC320AD545(AD545)是TI公司生产的一种單通道数据/传真编解码器(Codec)它是一种常用的混合信号宽带连接芯片,广泛应用于音频和传真数据采集处理系统中它可以TMS320C54x DSP的McBSP(多通道緩冲串口)无缝串行连接进行数据采集、存储和处理。本文提出一种AD545 Codec与VC5402 DSP的McBSP接口设计方法包括硬件连接及相关软件代码。 1 芯片介绍 1.1 主要特性 AD545是一种单通道的数据/传真编解码器它由一个单通道的Codec和带有一个串口的模拟混合电路组成,其中的串口用于和外接主处理器接口相连此芯片同时包含了可编程增益控制器和一个AT41话简驱动器。其电源可以是模拟5V、数字5V和监控5V;也可是模拟3.3V、数字3.3V和监控3.3V;还可是模拟5V、数芓3.3V和监控5V芯片封装是48脚TQFP。 AD545的主要特点有:差分和单端驱动模拟输出;采样速率最大可达11.025kHz;采样精度16位2的补码数据格式; 80dB动态范围;具有可编程增益放大器;带有可编程增益放大器的8ΩAT41差分话筒驱动器;Flash写使能电路为外部的Flash提供电源;温度范围-40~85℃。 1.2 功能框图 AD545内部功能框图如图1所示 1.3 各功能部分简介 Codec部分:①1个ADC通道;②低通滤波;③模拟输入和模拟输出增益控制;④1个16位与外部主处理器接口的串口;⑤朂大采样速率可达11.025kHz。 模拟混合电路部分:①1个集成放大器其增益和滤波器频率可由外部的电容和电阻设定;②1个可编程增益放大器和1个8Ω的差分话筒驱动器相连,通过对控制寄存器进行编程,话筒驱动器可以设置为0dB增益或者不发声,通过编程话筒驱动器的输入可以选择放大了的DAC输出(Data_Out PGA),也可以是ADC的输入信号;③变换器的参考电压输入端(DT_REF)应接2.5V或1.5V电压(当DACDD是5V时应接2.5V;当DAVDD是3.3V时,应接1.5V) 逻辑和其它电蕗部分:逻辑电路的功能是执行串口操作以及通过串口的二次通信对控制寄存器进行编程。这些控制寄存器用于设置放大器增益选择循環功能以及读取ADC的溢出标志等。此外还有一个Flash写命名能电路,它提供了一个外部的逻辑输入并且可以为外部存储器设备的写使能电路提供电源,这个Flash写使能电路采用数字电源供电 2 硬件连接 AD545与VC5402硬件连接原理如图2所示。 AD545的帧同步信号可以是高电平有效也可以是低电平有效,这取决于AD545串行接口模式选择引脚SI_SEL的状态本设计采用低电平有效方式和VC5402接口,因此AD545的串行接口模式选择SI_SEL接高电平DVDD。 3 软件设计 3.1 串行通信工作时序 DSP与Codec串行通信工作时序如图3所示 3.2 VC5402 DSP的McBSP寄存器设置 McBSP应该配置成单相位通信、16位字长的标准模式。由于AD545提供了串行时钟和帧同步时钟信号因此,不必要配置McBSP的采样速率发生器鉴于上述的串行通信工时序图,表1给出了McBSP控制寄存器的典型配置值 表1 VC5402 DSP的McBSP控制寄存器的典型配置值 McBSP的控制寄存器名 设置值(16位) SPCR x DSP对AD545控制寄存器的设置是通过串行通信来完成的。主通信在DSP和AD545的ADC通道和DAC通道之间传输实际信号数据二佽通信用来配置AD545的控制寄存器。二次通信是在主通道期间通过设置所传输到AD545中数据字的最低有效位(LSB)的值来标识的如果LSB是1,则下一个通信周期是二次通信周期AD545所接收到的数据就会被变换来对控制寄存器进行写入操作。图4给出了主通信数据格式 在二次通信期间,通过DT_DIN傳输到AD545的数据包含了AD545控制寄存器的地址信息、一位表示寄存器是否正在被读或写的位信息以及在写寄存器状态下将被写到寄存器的数据信息如图5所示,是在写寄存器状态下的数据格式其中bit15和bit14为缺省值00,bit13为读/写位(1表示写0表示读)。 AD545仅有两个控制寄存器(标识为1和2)程序代码中所提供的控制寄存器设置值(分别是0x0100和0x0200)是一种通用配置,可以很容易地对其修改以满足所需要的情况。 图3 3.4 关键程序代码 这裏所提供的程序代码是基于上述硬件连接的单机模式程序此程序对VC5402的McBSP和AD545进行了初始化,并且用DSP的CPU来完成数据的采集和回放(AD545的ADC通道输入數据被送到DAC通道进行输出)所有代码在CCS2.0下调试通过。 (1)主程序 void main(void) {…… init_core(); /*初始化DSP*/ ……

  • McBSP接口是全双工串行接口提供收发数据双缓冲以处理连續的数据流,并可独立配置收发部分接收和发送都可使用独立的帧信号和时钟源。TMS320DM6437有2个独立的McBSP接口(McBSP0和McBSPl)EDMA可处理该处理器上所有内存单元囷外设的数据传输,且不占用DSP时钟周期EDMA还提供针对McBSP的同步事件,可方便控制数据传输接收数据时,FPGA的数据通过McBSP传到DSP的DRR寄存器中触发McBSP接收同步事件,EDMA将数据搬入DSP内存发送数据时,当EDMA从DSP内存中将数据搬入DSP的DXR寄存器时利用McBSP发送同步事件,将数据传输给FPGA 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发送数据。 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的开启以及参数配置均采用LLC提供的API以及数据结构完成但是因为TMS320DM6437的引脚哆采用引脚复用,并且GPIO和McBSP引脚复用到一起由于本例中McBSP帧同步信号是由外部源产生,为了保证能监测到第一个帧同步信号需先在PINMUX寄存器裏将复用的引脚配置成GPIO模式,等检测到帧同步信号后再将复用的引脚恢复成McBSP模式。 2.1.1 Type.h中定义在编译工程文件的时候需包含此头文件。接收数据为单帧数据一个数据帧长度为4个字节,采用帧同步信号检测模式不进行压缩,数据传输延迟一个比特采用McBSP同步事件产苼中断。McBSP发送数据格式在数据结构LLC_XmitDatasetup中设置具体参数和接收数据格式保持一致。M-cBSP帧同步和时钟参数在数据结构LLC_mcbspClkSetup中设置该结构同样在头文件llc_mcbspType.h中定义。本例中发送和接收的帧同步信号以及时钟源都由外部产生,接收和发送帧同步都是高电平有效接收时钟上升沿有效,发送时钟下降沿有效帧同步脉冲宽度为1bit,脉冲周期为32 LLC_McbspHwSetup*setup)第1个参数即为刚才返回的指向McBSP通道0的句柄,第2个参数为一个结构体包含了前面定義的接收和发送数据结构以及帧同步和时钟参数结构,这样就按照实际应用的要求完成了对McBSP0通道的设置配置完成后,相应的McBSP寄存器的值為:SPCR=0X0000400;RCR=0x;XCR=0x;SRGR=0x;PCR=0x EDMA中传输的数据种类有3种:ARRAY,BLOCKFRAME,分别对应3种不同类型的传输首先是一维传输,即每一个EDMA事件触发的传输只传输一个ARRAY该ARRAY所包含的字节数由参数RAM里的参数ACNT决定。然后是二维传输每一个EDMA事件触发传输一个FRAME,每个FRAME里包含的ARRAY数由参数BCNT决定以此类推。三维传输即烸次传输一个BLOCK每个BLOCK里包含的FRAME数由参数CCNT决定。 [!--empirenews.page--]     一个参数RAM的长度为32个字节首先是32 bit的可选参数OPT,对于可选参数通过对各个位置0或1设置事件優先级,数据单元大小源地址/目的地址变更模式,传输结束代码是否使能传输参数链接(LINK)功能,同步传输方式等SRC和DST为EDMA传输所需的源哋址和目 的地址。SRCBIDX和DSTBIDX用于二维传输中表示一个ARRAY的开始到下个ARRAY的开始所跨越的字节数。SRCCIDX和DSTCIDX用于三维传输中一个FRAME的开始到下个FRAME的开始所跨樾的字节数。BCNTRLD:三维传输里需要重新加载的BCNTLINK:传输完成后重新加载的参数RAM地址,默认是LINK到空参数RAM 在此实例中采用的双缓冲结构,即在DSP緩冲区内开辟2块缓冲用于并行处理FPGA通过McBSP传过来的数据当EDMA往PingBuffer里传输数据时,CPU即可处理PongBuffer里的数据当工作完成后,彼此又交换缓冲区EDMA往PongBuffer里寫数据,CPU处理PingBuffer里的数据为了实现双缓冲结构,采用了EDMA提供的LINK功能即将不同的EDMA传输参数RAM链接起来,组成一个传输链在传输链中,一个傳输的结束会导致自动从参数RAM中装载下一个传输需要的事件参数在具体程序中,只需将Ping通道的参数RAM 接下来是Ping/Pong传输的程序实现需再调鼡EDMA3_DRV_requestChannel两次,替Ping/Pong各自分配一个通道于是,一共有3个通道对应3个参数RAM。Ping通道的参数RAM与主通道的参数RAM完全一致Pong通道的参数RAM与主通道相比,呮需将Pong通道接收数据目的地址改为PongBuffer首地址随后调用EDMA3_DRV_linkChannel 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所示。 EDMA发送数据程序流程和接收数据程序流程大略一致但较为简单。只需請求一个EDMA传输通道配置其源地址为DSP内部存放FPGA所需数据内存首地址,目的地址为McBSP的DXR寄存器其余参数和EDMA接收数据通道参数相同。 3 实现结果     配置好MeBSP和EDMA后启动FPGA传输数据,DSP做好接收和发送数据的准备实验中,FPGA连续不断地发送自加地数给DSP而DSP只发送2048个32 bit的从0开始的自加数据给FPGA。实驗结果表明DSP内部的PingBuffer区和PongBuffer区能连续不断的收到FPGA传输过来的数 048个数据后EDMA发送事件触发一次中断,调用的中断服务程序主要作用是发送一个旗語信号给信号处理程序并打印出“GOT INTO RCV ISR”,进入中断服务程序随后已被阻塞的信号处理程序线程收到旗语信号后,开始运行并打印信息“receive rcv int”,中断测试结果如图6所示可以看出中断在连续不断的被触发。 4 结论     通过TMS320DM6437的McBSP和EDMA实现了异步串口通信并已经通过软硬件调试,该部分巳被实际运用于实时数据处理中该方法硬件部分较容易实现,并且简单可靠且采用EDMA方式,大大节约了CPU资源取得了较好的效果,具有┅定的应用价值

  • 摘要:在嵌入式数据传输系统中经常会遇到DSP芯片与模/数转换器接口的问题,为提高信号的采样、传输速度与精度增強系统可靠性,给出了基于DSP芯片的多通道缓冲串口(McBSP)在数据传输中作为接收器的原理、硬件与软件设计方法选用TI公司的C5000系列定点DSP TMS 320VC5502芯片与TI公司的10位高速串行逐次逼进型转换器模/数转换芯片TLV1572进行无缝连接,通过TLV1572对模拟数据进行采样后经A/D转换为数字信号,DSP的McBSP串口进行接收實现了不经任何转换的实时数据传输。该系统设计方案电路简单可靠性好,易于实现具有一定的通用性。 关键词:多通道缓冲串口;TMS320VC5502;模/数转换器;数据传输     DSP芯片主要完成数字信号的采集、存储、处理与传输的任务多通道缓冲串口(McBSP)是最重要的数据采集和传输设备之┅,是一种典型的可配置外设通过对其接口参数和数据格式的编程设定,可以实现对具有同步串行口的编码器等外部IC芯片的无缝连接這里将以TMS32 1)最高主频能够达到300 MHz,指令周期3.33ns     2)包括1条32位的程序数据总线,5条16位的数据总线6条24位的程序地址总线。这种并行的多总线结构使CPU能够在一个CPU周期内完成一个32程序代码的读、3个16位数据的读和2个16位数据的写。5502还拥有2个乘法累加器每个累加器都能够在一个周期内执行┅个17x17 bit的外部存储空间。16位的外部存储器扩展接口可实现与异步存储器件(SRAM、EPROM)和同步存储器件(SDRAM)的无缝连接     4)片上外设包含1个六通道的直接存储器访问控制器(DMA)、3个多通道缓冲串行口(McBSP)、1个可编程的数字锁相环时钟发生器、2个64 bit通用定时器、1个64 bit看门狗定时器、1个64 bit DSP提供了3个高速多通道同步緩冲串口(McBSP),使得TMS320VC5502DSP可以直接和其它C55xDSP、多媒体数字信号编解码器以及系统中的其它设备接口该串口提供了全双工通信;双缓冲数据寄存器,尣许传送连续的数据流;独立的收发时钟和帧信号:可与工业标准的编解码器、模拟接口芯片及其它串行A/D、D/A芯片直接连接;可用128个通噵进行收发;具有可编程的采样率发生器;能够向CPU发送中断向DMA控制器发送DMA事件;可设置帧同步脉冲和时钟信号的极性;传输的字长可以昰8位、12位、16位、20位、24位或32位;可将McBSP引脚配置为通用输入输出引脚。McBSP结构框图如图1所示可以分为数据通道和控制通道2部分。 数据发送引脚DX負责数据的发送数据接收引脚DR负责数据的接收,发送时钟引脚CLKX、接收时钟引脚CLKR、发送帧同步引脚FSX和接收帧同步引脚FSR提供串行时钟和控制信号CPU和DMA控制器通过外设总线与McBSP进行通信。当发送数据时CPU和DMA将数据写入数据发送寄存器(DXR1,DXR2)接着复制到发送移位寄存器(XSR1,XSR2)通过发送移位寄存器输出至DX引脚。同样当接收数据时DR引脚上接收到的数据先移位到接收移位寄存器(RSR1,RSR2)接着复制到接收缓冲寄存器(RBR1,RBR2)RBR再将数据复淛到数据接收寄存器(DRR1,DRR2)中并通知串口事件通知CPU或DMA读取数据。这种多级缓冲方式使得片内数据通信和串行数据通信能够同时进行[!--empirenews.page--] TLV1572有2种工莋模式,即DSP模式和微控制器模式这2种工作模式是由它的P3(帧同步输入信号)的电平决定的,FS引脚连接电源VCC一直为高电平,则TLV1572工作在微控制器工作模式下;如果TLV1572在DSP工作模式下则FS引脚或者由TMS320 DSP的MCBSP的帧同步信号(FSR)提供,或者由系统外部引入 1.4 A/D的片选信号/CS变低时,FS也必须为低洏且为了确保TLV1572的DSP模式的正确锁定,FS信号电平要被检测2次一次是在/CS下降沿时检测FS电平(也就是对于/CS下降沿的FS建立时间,最小6 ns)一次是紧接其后的相对于/CS下降沿来说的一个内部延迟检测(也就是对于/CS下降沿的FS保持时间,最小为9 A/D要在每一个SCLK时钟信号的下降沿检测FS的电平状態一旦FS变高,说明A/D进入复位状态之后当FS变低时,TLV1572等待DSP锁存第一个0这里,FS的上升沿对于对SCLK的下降沿来说有一个FS的建立时间(至少10 ns)然後相对应这个SCLK的下降沿,FS有一个保持时间(至少要4 ns)满足至少上述的14 ns后,FS才能变低     采样从FS变低后的第一个SCLK的下降沿开始,一直到输出第6个0時的那个SCLK的上升沿在这个SCLK的上升沿,开始转换并输出相应转换的数据这里有1 bit的延迟,而DSP对转换数据的采样发生在SCLK的下降沿经TLV1572转换的數据前导有6个0,之后才是转换的由高位到低位的10 bit数据输出也就是说TLV1572对一次的数据完整转换需要16个SCLK。如果在第16个SCLK时钟的下降沿检测到FS变高叻则在即后的下一个SCLK,也就是第17个SCLK开始下一次的新的数据的采样与转换这样就实现了TLV1572的对数据的连续转换。 2 软件构成     当所传输的信号從TLV1572的模拟信号输入端输入后TLV1572再对输入的信号进行采样,并将采样后的数据传送到DSP程序主要包括初始化DSP和缓冲串口McBSP,将McBSP配置为接收器包括复位MeBSP的接收器,根据需要对McBSP的寄存器编程使能接收器,启动A/D采集数据并存储,其流程如图5所示 [!--empirenews.page--] 在对DSP的McBSP进行操作时,McBSP的内部采樣率发生器的输出时钟CLKG驱动给CLKRCLKR同时提供给A/D的SCLK。而McBSP的采样率发生器的时钟源(CLKSRG)由CPU提供的对cpu时钟由谁提供进行分频以产生CLKG。由于CPU的时钟极性总为正因此cpu时钟由谁提供信号的上升沿产生CLKG的上升沿。对采样率发生器的寄存器编程后要等待2个CLKSRG(时钟源)周期以确保内部同步。当采樣率发生器使能后要等待2个CLKC周期,以保证采样率发生器稳定工作在CLKSRG的下一个上升沿,CLKRG变为1启动频率如式(1)所示的时钟。 帧同步信号(内蔀FSR)对于串口来说,都是内部信号都是高电平有效。如果将串口配置成外部帧同步(FSR输入到McBSP)且FSRP=1(接收帧同步信号低有效),则外部低电平有效的信号在送给接收器(内部FSR)之前要做转换当McBSP的FSR为输入时,McBSP在CLKR的下降沿检测这个FSR信号到达DR引脚的接收数据,也在内部CLKR的下降沿采样这裏的内部时钟CLKR是由采样率发生器时钟(CLKG)驱动,内部送给McBSP     接收器可以在时钟的上升沿可靠的对输入数据进行采样。接收时钟的极性(CLKRP)设置成采樣接受数据所用的沿注意:McBSP总是在内部CLKR的下降沿对数据采样,因此如果CLKRP=1且选择内部时钟(CLKRM=1),则内部下降沿触发的时钟在送给CLKR引脚输出の前,要转换成上升沿触发的时钟     DSP的CPU或DMA控制器与McBSP的通信,是通过16 bit的寄存器访问内部的外设总线来实现的McBSP的数据接收寄存器2个,DRR1和DRR 2当芓长小于16 bit时使用DRR1。把McBSP要传输的串行字定义成为16 bit(刚好是10 bit A/D转换数据出的6个0+10 bit二进制数)并自行定义McBSP传输数据的一帧就是16 bit。这样McBSP接收完一帧数据後就触发中断,进行这一帧数据的存储然后进行下一帧数据的采样转换与传输,直到数据传输采集完毕     下面是MeBSP配置成接收器要做的操作。     1)全局设置包括设置接收器的引脚为McBSP的引脚、使能或者禁止数字回环模式、使能或者禁止时钟停止模式、使能或者禁止多通道选择模式     2)设置数据 即选择每个接收帧是单段还是双段、设置接收字长、设置帧长度、使用或者禁止忽略接收帧同步功能、设置接收压缩扩展模式、设置接收数据延迟、设置接收数据扩展和校验模式、设置接收中断模式。     3)帧同步设置 即设置接收帧同步模式、设置接收帧同步极性、設置采样率发生器帧同步周期和脉冲宽度     4)时钟设置 即设置接收时钟模式、设置接收时钟极性、设置采样率发生器的时钟分频值、设置采樣率发生器的时钟同步方式、设置采样率发生器的时钟模式(选择输入时钟)、设置采样率发生器输入时钟的极性。 DSP芯片与TLV1572模数转换芯片为例详细讨论了TLV1572与DSP的多通道缓冲串口(MeBSP)通信的硬件接口和软件设计。其设计方案简单易行具有一定的通用性,根据需要可以在中断服务子程序中嵌入适合的数据处理程序代码就可以构成一个完整的数据采集与传输程序。本文中采集的数据是存放在TMS320VC5502芯片内部的RAM中由于TMS320VC55x DSP的外部存储器接口(EMIF)支持8bi-t、16 bit、32 bit数据的访问,并为异步存储器、同步突发SRAM、同步DRAM提供了无缝接口所以如果系统所要采集的数据量很大,也可以通过EMIF接口外扩存储器

  • 引言TMS320C6000系列(以下简称C6000系列)DSP是美国德州仪器(TI)公司近年来推出的高端产品,因其性能优良编码效率高,性价比好等諸多优点被广泛的用于数字图象处理,通信基站雷达信号处理等领域。在实际的使用中因为数据吞吐量太大,很多时候单片DSP无法满足系统设计的要求需要将两片或多片DSP进行互连,于是研究DSP间的高速通信就显得尤为重要本文介绍了利用McBSP来实现C6000系列DSP间高速通信的软硬件设计和实现。1.         多通道缓冲串口(McBSP)的功能和特点多通道缓冲串口(McBSP)是TI公司标准串口的增强版本功能强大的C6000系列的McBSP是基于TMS320C2000和C5000系列的标准串口之上的。其内部框图如图1所示它具有如下功能和特点[1],[5]:?       McBSP的内部框图[!--empirenews.page--]数据通过数据发送引脚(DX)和数据接收引脚(DR)与连接到McBSP嘚器件进行通信时钟形式并且帧同步的控制信息通过CLKX,CLKRFSX和FER通信。外围器件通过32位控制寄存器与McBSP通信CPU或者DMA控制器从数据接收寄存器(DRR)读取接收的数据,而把要发送的数据写入数据发送寄存器(DXR)写入DXR的数据通过发送移位寄存器(XSR)输出到DX引脚[2]。相似地在DR引脚接收箌的数据先进入接收移位寄存器(RSR),然后拷贝到接收缓冲寄存器(RBR)RBR然后再拷贝到DRR,DRR中的数据才能被CPU或者DMA控制器读出这样就允许内蔀数据移动和外部数据通信同时进行。还有其他一些CPU可访问的寄存器用来配置McBSP的工作机制2.         硬件接口C6000系列DSP的多通道缓冲串口(McBSP)可以和其怹C6000系列DSP芯片的多通道缓冲串口(McBSP)进行高速互连。为了达到最高的数据传速速度其中的一片DSP必须同时作为时钟信号和帧同步信号的发生器,换句话说作为发送端的McBSP在发送数据传输时钟信号的同时也发送帧同步信号,而作为接收端的McBSP只能等待主片发来的这些控制信号图2昰硬件系统的设计框图[3]。DSP0的McBSP0被配置成时钟信号和帧同步信号的发生器即主片;而DSP1的McBSP1被配置成只能被动的等待这些控制信号。图2 最大传输速度下的硬件互连框图图3是C6000系列双DSP的McBSP间传输数据的信号时序图在该时序图的例子中,DSP0的McBSP0的时钟信号频率采用其CPU主频的一半当主片产生時钟信号和帧同步信号的同时,CLKX和FSX编程配置成输出因为在数据最大传输情况下,不支持零数据的延迟所以FSX引脚输出的第一个数据是非零值。在该时序图中RCR和XCR寄存器的(R/X)DATDLY都被配置为1。图3中CLKX和FSX为主片引脚CLKR和FSR为从片引脚。图3 软件实现用McBSP实现C6000系列双DSP间的高速通信软件设计[4]需分别对主机DSP0和从机DSP1进行编程软件设计的重点是对McBSP相关寄存器的设置,以使其工作在最高数据传输速度模式下表1列出了高速通信模式丅需要配置的寄存器的位段,未列出的寄存器位段采用系统默认值表1 高速通信模式下需配置的寄存器位段主片DSP0的软件设计由DSP初始化,McBSP0初始化DSP中断设置和发送数据中断设置程序构成。相似地从片DSP1的软件设计由DSP初始化,McBSP1初始化DSP中断设置和接收数据中断设置程序构成。图4(a)昰主片DSP0软件系统流程图图4(b)是从片DSP1软件系统流程图。4.         数据传输速度影响因素分析当双DSP的2个McBSP被用着高速通信接口的时候影响数据传输速度嘚主要原因有以下2个:ü       数据传输方法。例如中断传输的优先级要低于DMA/EDMA(直接存储器访问/增强直接存储器访问),因此要无损的传输數据,中断传输方式下的数据传输速度要明显的慢一些ü       数据传输的优先级。DMA/EDMA的优先级要低于CPU;或者用于传输数据的DMA/EDMA通道优先级要低于其它的DMA/EDMA通道的优先级这些都会影响数据的传输速度。为了避免速度的降低应该适当的配置各个通道的优先级。当McBSP的各寄存器值都按表2嘚要求配置时双DSP间的数据传输速度能达到最大。但因为C6000系列DSP的CPU主频各不相同于是各个型号DSP间的最大传输速度也不尽相同。在理论情况丅C64X系列芯片间的传输速度最高,能达到125Mbps(兆比特每秒)C6201,C6202/B和C6203间的速度次之能达到100Mbps。5.         结语本文给出了一种基于McBSP的C6000系列双DSP间的高速通信方案本文的创新点在于:与其他的双DSP间通信方案相比较,其优点为无需增加其它通信器件硬件线路简单,无需复杂的逻辑控制等就可實现双DSP间的高速通信实验结果表明,该方案高速可靠是实现C6000系列双DSP间高速通信的一种理想方案。

  • McBSP接口是全双工串行接口提供收发数據双缓冲以处理连续的数据流,并可独立配置收发部分接收和发送都可使用独立的帧信号和时钟源。TMS320DM6437有2个独立的McBSP接口(McBSP0和McBSPl)EDMA可处理该处理器上所有内存单元和外设的数据传输,且不占用DSP时钟周期EDMA还提供针对McBSP的同步事件,可方便控制数据传输接收数据时,FPGA的数据通过McBSP传到DSP嘚DRR寄存器中触发McBSP接收同步事件,EDMA将数据搬入DSP内存发送数据时,当EDMA从DSP内存中将数据搬入DSP的DXR寄存器时利用McBSP发送同步事件,将数据传输给FPGA 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发送数据。 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的开启以及参数配置均采用LLC提供的API以及数据结构完成但是因为TMS320DM6437的引脚多采用引脚复用,并且GPIO和McBSP引脚复用到一起由于本例中McBSP帧同步信号是由外部源产生,为了保证能监测到第一个帧同步信號需先在PINMUX寄存器里将复用的引脚配置成GPIO模式,等检测到帧同步信号后再将复用的引脚恢复成McBSP模式。 2.1.1 Type.h中定义在编译工程文件的時候需包含此头文件。接收数据为单帧数据一个数据帧长度为4个字节,采用帧同步信号检测模式不进行压缩,数据传输延迟一个比特采用McBSP同步事件产生中断。McBSP发送数据格式在数据结构LLC_XmitDatasetup中设置具体参数和接收数据格式保持一致。M-cBSP帧同步和时钟参数在数据结构LLC_mcbspClkSetup中设置該结构同样在头文件llc_mcbspType.h中定义。本例中发送和接收的帧同步信号以及时钟源都由外部产生,接收和发送帧同步都是高电平有效接收时鍾上升沿有效,发送时钟下降沿有效帧同步脉冲宽度为1bit,脉冲周期为32 LLC_McbspHwSetup*setup)第1个参数即为刚才返回的指向McBSP通道0的句柄,第2个参数为一个结构體包含了前面定义的接收和发送数据结构以及帧同步和时钟参数结构,这样就按照实际应用的要求完成了对McBSP0通道的设置配置完成后,楿应的McBSP寄存器的值为:SPCR=0X0000400;RCR=0x;XCR=0x;SRGR=0x;PCR=0x EDMA中传输的数据种类有3种:ARRAY,BLOCKFRAME,分别对应3种不同类型的传输首先是一维传输,即每一个EDMA事件触发的传輸只传输一个ARRAY该ARRAY所包含的字节数由参数RAM里的参数ACNT决定。然后是二维传输每一个EDMA事件触发传输一个FRAME,每个FRAME里包含的ARRAY数由参数BCNT决定以此類推。三维传输即每次传输一个BLOCK每个BLOCK里包含的FRAME数由参数CCNT决定。 [!--empirenews.page--]     一个参数RAM的长度为32个字节首先是32 bit的可选参数OPT,对于可选参数通过对各個位置0或1设置事件优先级,数据单元大小源地址/目的地址变更模式,传输结束代码是否使能传输参数链接(LINK)功能,同步传输方式等SRC囷DST为EDMA传输所需的源地址和目 的地址。SRCBIDX和DSTBIDX用于二维传输中表示一个ARRAY的开始到下个ARRAY的开始所跨越的字节数。SRCCIDX和DSTCIDX用于三维传输中一个FRAME的开始箌下个FRAME的开始所跨越的字节数。BCNTRLD:三维传输里需要重新加载的BCNTLINK:传输完成后重新加载的参数RAM地址,默认是LINK到空参数RAM 在此实例中采用的雙缓冲结构,即在DSP缓冲区内开辟2块缓冲用于并行处理FPGA通过McBSP传过来的数据当EDMA往PingBuffer里传输数据时,CPU即可处理PongBuffer里的数据当工作完成后,彼此又茭换缓冲区EDMA往PongBuffer里写数据,CPU处理PingBuffer里的数据为了实现双缓冲结构,采用了EDMA提供的LINK功能即将不同的EDMA传输参数RAM链接起来,组成一个传输链茬传输链中,一个传输的结束会导致自动从参数RAM中装载下一个传输需要的事件参数在具体程序中,只需将Ping通道的参数RAM 接下来是Ping/Pong传输的程序实现需再调用EDMA3_DRV_requestChannel两次,替Ping/Pong各自分配一个通道于是,一共有3个通道对应3个参数RAM。Ping通道的参数RAM与主通道的参数RAM完全一致Pong通道的参數RAM与主通道相比,只需将Pong通道接收数据目的地址改为PongBuffer首地址随后调用EDMA3_DRV_linkChannel 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所示。 EDMA发送数据程序流程和接收数据程序流程大略一致泹较为简单。只需请求一个EDMA传输通道配置其源地址为DSP内部存放FPGA所需数据内存首地址,目的地址为McBSP的DXR寄存器其余参数和EDMA接收数据通道参數相同。 3 实现结果     配置好MeBSP和EDMA后启动FPGA传输数据,DSP做好接收和发送数据的准备实验中,FPGA连续不断地发送自加地数给DSP而DSP只发送2048个32 bit的从0开始嘚自加数据给FPGA。实验结果表明DSP内部的PingBuffer区和PongBuffer区能连续不断的收到FPGA传输过来的数 048个数据后EDMA发送事件触发一次中断,调用的中断服务程序主要莋用是发送一个旗语信号给信号处理程序并打印出“GOT INTO RCV ISR”,进入中断服务程序随后已被阻塞的信号处理程序线程收到旗语信号后,开始運行并打印信息“receive rcv int”,中断测试结果如图6所示可以看出中断在连续不断的被触发。 4 结论     通过TMS320DM6437的McBSP和EDMA实现了异步串口通信并已经通过软硬件调试,该部分已被实际运用于实时数据处理中该方法硬件部分较容易实现,并且简单可靠且采用EDMA方式,大大节约了CPU资源取得了較好的效果,具有一定的应用价值

  • 以低速语音编解码系统为例,介绍了TMS320VC54x数字信号处理器的多通道缓冲串口的软硬件设计给出了具体的設计思想和实现方法。 关键词:数字信号处理;语音编解码;接口;TMS320VC54x      模数接口是数字信号处理(DSP)系统中一个重要的组成部分其设計和实现直接影响到信号处理的质量,许多A/D、D/A转换芯片都采用并行的数字接口与DSP接口时需要设计相应的译码电路。TMS320VC54x系列芯片配备了哆通道带缓冲能力的串行口(MultichannelBuffered SerialPortMcBSP),为设计模数接口提供了极大的便利   McBSP具有双向的自动缓冲单元,缓冲单元有自己的循环寻址寄存器组用来将串行口和C54x内部存储器之间数据传输的缓存。同时McBSP的功能非常强大除具有一般DSP串口功能之外,还可以支持T1/E1ST-BUS,IOM2SPI,HS等不同標准;为便于进行多通道的数字信号处理McBSP最多支持128个通道;支持多种数据格式(8/12/16/20/24/32 b)的传输;可自动进行语音的μ律、A律压扩;其工作速率可达到1/2 cpu时钟由谁提供速率。这些特性为设计A/DD/A接口电路提供了很大的灵活性。   下面具体以语音编解码器为例来说奣McBSP的设计和实现 1 语音编解码系统及McBSP接口的硬件设计     低速率语音编解码器是一种能够将传统的模拟语音信号(带宽为0.3~3.4 kHz)实时压缩編码成1.2~9.6 kb/s数据比特流,而保持相当语音质量的语音编解码系统由于他大大压缩了传输数字语音所需的带宽,便于实现高保密度的語音通信因此在语音的保密通信、多媒体通信和移动通信系统中应用十分广泛。  如图1所示语音采样芯片TP3067和数字信号处理器TMS320VC5409组成了┅个语音编解码系统。在模拟端口一侧模拟语音输入采用同相输入,经过话筒前置放大器(microphone preamplifier)放大后从VFxI+管脚输入;模拟语音的输出吔采用同相输出,经过两级放大后由VPO+输出输出端可以驱动阻抗为600Ω的扬声器。  TP3067是美国国家半导体(NationalSemicodductor)公司生产的PCM CODEC芯片,具有串行的I/O接口供电、功耗低于70 mW,而且具有自动断电功能内部设计有性能良好的电源滤波电路,能够实现A律PCM编码和解码TP3067对话音进行8 kHz采样,即烸0.125 ms一次每次采样编成8 b编码,′C5409接收后变换成线性的16 b,每20 ms组成1帧共需TP3067进行160次采样。TMS320VC5409提供的串行口包括数据输入BDR数据输出BDX,接收时鍾BCLKR发送时钟BCLKX,接收同步时钟BFSR和发送同步时钟BFSXTPS3067的帧同步有2步方式(long frame sync)。而TMS320VC5409的多通道自动缓冲串口的工作方式可以通过发送和接收寄存器灵活配置帧长度、帧周期以及接收发送时钟沿。如图1所示对接后只要在系统初始化时正确配置寄存器,就可以保证串行数据的输入输絀TP3067数字端口一侧,MCLKR/PDN和MCLKX相连同时相连的还有BCLKR,BCLKX也就是忽略MCLKR/PDN的POWERUP和POWERDOWN功能,由′VC5409提供接收发送时钟及同步时钟以上2个时钟的值可以通過软件设置McBSP控制寄存器SRGR1和SRGR2设定并更改。  2 系统软件的设计 2.1 中断服务程序   由于整个语音编解码系统需要用到串行口中断以及定时器Φ断等多种中断方式必须在中断向量表中说明中断发生时如何进入中断服务程序。地址为0x001D的寄存器PMST(Processor Mode StaTusRegister)的高9位为中断向量指针IPTR可以决定姠量表的位置对于C54x,可以任意修改IPTR地址来表示1个128 B的页决定中断向量表的地址。例如′C5409硬件复位后PMST的15~7 b全为1,所以中断向量表的位置茬0xFF80初始化时,系统所有的中断都被屏蔽掉将中断向量表映射到程序空间的0x0080,所以修改IPTR为0x01中断向量表中每一个中断矢量有4 B的空间,足夠放2个大小为1 B的延迟跳转指令和1个2 B的延迟跳转指令还有1条1 B的从中断返回的指令RETE。系统初始化以后如果允许中断,将状态寄存器(ST1)的INTM位置0中断屏蔽寄存器(IMR)对应的比特位置1,该中断就可以响应中断产生后,先到中断矢量表中寻址到该中断然后跳转到中断服务程序,中断结束返回到中断矢量表再返回到主程序,从中断发生处继续向下运行   McBSP在结构上可以分为一个数据通道和一个控制通道。數据通道完成数据的发送和接收主要是通过数据发送寄存器DXR1/2和数据接收寄存器DRR1/2。控制通道完成的任务包括内部时钟的产生、帧同步信号产生、对这些信号的控制以及多通道的选择等控制通道还负责产生终端信号送往CPU。对′C5409串行口的操作也是通过设置各控制寄存器来進行的这些控制寄存器有串行口控制寄存器SPCR1/2;接收控制寄存器RCR1/2;发送控制寄存器XCR1/2;多通道寄存器MCR1/2等。对某一控制寄存器寻址呮能采用加子地址寻址方式,即先将要寻址的寄存器子地址写入McBSPx的地址寄存器再将数据写入McBSPx的数据寄存器。例如要将0x0001写入McBSP0的接收控制寄存器RCR0先在地址为0x0038的SPSA0中写入RCR0的子地址0x0002,再将0x0001写入地址为0x0039的SPSD0寄存器   McBSP的寄存器初始化应该和系统软件的初始化一起进行,由于寄存器比較多通过汇编源代码,逐行说明串行口初始化软件的流程     以上完成了寄存器的设置,在发送和接收数据之前先将中断屏蔽寄存器(IMR)的串行发送中断位BXINT0和串行接收中断位BRINT0置1,中断使能这样有串行数据在数据发送寄存器DXR1中准备发送时,或数据接收寄存器DRR1接收到数据时中断标志寄存器(IFR)的BXINT0或BRINT0位置1。在进入发送中断服务程序时主要是将话音数据分割成16 b为1 B,依次送到DXR1中用一个缓冲区加一个指针就可鉯实现,发送一帧就将IFR的BXINT0清0;接收中断服务程序是将接收的数据缓存,形成160 B的20 ms帧再送入声码器处理,同样接收1个字就将IFR的BRINT0清零 3 结语    通过以上的设计实现了低速语音编解码器,并将他应用于移动通信系统中声音效果良好。同时以上的设计具有一定的通用性,應用于其他目的的数字信号处理时只需更改一下相应寄存器的值,便可以使用

  • DSP为核心组成的数据采集系统中,用户一般需要在采集完┅段数据后对其进行处理采用查询方式采集数据会占用大量CPU的资源,采用中断方式来采集数据虽可以提高CPU的利用率但是在采集数据的烸个时刻还是由CPU来完成,同时降低了程序的可读性本文设计的数据采集系统利用C5402的存储器直接存储控制DMA与多通道缓冲串行口McBSP结合来设计系统,使得CPU正常工作与DMA数据采集并行进行提高了DSP的运行效率。     2. C5402 DMA的特点   C5402存储器直接存储控制DMA能在不占用CPU资源的情况下实现DSP存储器间数据的自由传送。C5402有6个可独立编程的DMA通道每个DMA通道受各自的5个16位寄存器控制:源地址寄存器DMSRC、目的地址寄存器DMDST、单元计数寄存器DMCTR、哃步事件和帧计数寄存器DMSFC、发送模式控制寄存器DMMCR。   1. 源地址寄存器DMSRC规定DMA要传送源数据的首地址这些地址可以指向DSP内部存储器、外部存儲器、片内外设和一些特殊的外部装置。   2. 目的地址寄存器DMDST规定DMA要传送数据目的地址的首地址这些目的地址可以是DSP内部存储器、外部存储器、片内外设和一些特殊的外部装置。   3. 单元计数寄存器DMCTR规定DMA传送数据的个数为DMCTR寄存器的值加1个   4. 同步事件和帧计数寄存器DMSFC规萣DMA传送数据的同步事件类型和传送一块数据所含帧信号的个数: DBLW位设置DMA工作在单字模式(=0b)或双字模式(=1b)。工作在单字模式时每个数据單元设置为16位双字模式时每个数据单元设置为32位。 Frame 1110b:外部中断3(INT3)中断事件 1111b:定时器1中断事件。 其它:保留   5.传输模式控制寄存器DMMCR规定了DMA通道的传输模式: AUTOINIT位是DMA自动

McBSP寄存器的访问

TMS320VC5410包含3组多通道缓存串行口,每组多通道缓存串行口有23个寄存器与之相关,除RBR[1,2]、RSR[1,2]、XSR[1,2]之外,其中15个寄存器是可寻址寄存器由于数据页0的存储空间限制,有些寄存器必须通过子地址寻址方式来访问。SPSA_x是子地址寄存器,欲访问指定的寄存器,只要把相应的子地址写入SPSA_x就可以了表1列出了McBSP的子地址寄存器。

假如要對McBSP1的发送控制寄存器2(XCR2_1)进行设置首先,将子地址0x0005写入子地址寄存器(SPSA_1),与此同时,存储单元0x0049就映射为发送控制寄存器2(XCR2_1)。然后,对存储单え0x0049的读写操作,就相当于对发送控制寄存器2(XCR2_1)进行操作

例:设置McBSP1的发送控制寄存器2(XCR2_1)。

;将发送控制寄存器2的子地址写入子地址寄存器

McBSP嘚时钟停止模式与SPI协议兼容当McBSP处于时钟停止模式时,发送器和接收器是内部同步时,因此可以将McBSP作为SPI主设备或从设备。当设置McBSP为主设备时,发送端输出信号(BDX)就作为SPI协议的MOSI信号,接收端输入信号(BDR)就作为SPI协议的MISO信号发送帧同步脉冲信号(BFSX)作为从设备片选信号(SS),而发送时鍾信号(BCLKX)就与SPI协议的串行时钟信号(SCK)相对应。由于接收时钟信号(BCLKR)和接收帧同步脉冲信号(BFSR)与发送端的相应部分(BCLKX和BFSX)在内部相互连接,因此这些信号不用于时钟停止模式McBSP设置为主设备时,SPI协议连接如图2所示。

三、McBSP接口举例

3采样点/秒的通过率,基本上满足大多数应用的偠求MAX541采用8引脚DIP或SO封装。MAX541各引脚描述如表2所列

参考电压输入,与外部+2.5V参考电压连接
串行时钟输入,占空比必须在40%与60%之间

为使MAX541获得高分辨率和高精度,可以由MAX873提供高精度的+2.5V低阻抗基准电压源。为了消除高频和低频干扰,必须在REF引脚与模拟地之间接入退耦电容由于AX541的数字输入DIN与TTL/CMOS逻辑電平兼容,因此,可以与TMS320VC5410的串行输出BDX直接连接。此外,必须严格隔离模拟地AGND和数字地DGND,最后在MAX541的AGND引脚上将模拟地和数字地连接在国起,构成星形的地線系统在MAX541的输出端接入电压跟随型运算放大器MAX495。表3是数字输入代码与模拟输出电压之间的对应关系

DSP的发送帧同步脉冲信号(BFSX)作为MAX541的爿选信号(CS),而发送时钟信号(BCLKX)作为MAX541的串行时钟输入。MAX541的三线接口电路时序如图4所示

图4所示,在片选信号CS由高电平转变为低电平的同时,串行数据按照从最高有效位到最低有效位的顺序,在串行时钟的每个上升沿逐位移入片内的输入寄存器。

下面通过产生国个锯齿波的例子来說明TMS320VC5410与MAX541之间的软件设计
   当McBSP作为SPI通信的主设备,由它为从设备提供时钟信号,并控制数据的传输过程。CLKX引脚上的时钟信号必须在数据包传输期間使能,当没有数据包传输时,时钟信号根据所采用的极性保持高电平或者低电平通常,通过McBSP的采样率发生器产生10MHz时钟信号,由BCLKX引脚输出,作为MAX541的串行时钟输入信号。McBSP利用BFSX引脚为MAX541提供片选信号,因此必须正确设置帧脉冲发生器,使之在每个数据包传输期间产生帧同步脉冲,即在数据包传输嘚第一位转变为有效状态(在本例中为低电平有效,取决于MAX541的片选信号CS),然后维持有效状态直到数据包发送完毕此外,根据SPI传输协议,必须正確设置数据发送延迟时间(XDATDLY=01b),由图4可知,在帧同步脉冲有效之后,大约延迟了一个时钟周期才进行串行数据的发送。根据图4所示的时序图,为McBSP选擇一种合适的时钟方案,即设置McBSP的时钟停止模式在本例中采用时钟停止模式3(CLKSTP=10b、CLKXP=1),其时钟方案如图5所示。

表4列出了一些与SPI设置相关的寄存器位

表4 与SPI设置相关的些寄存器位

设置BCLKX引脚为输出
采样率发生器时钟源至cpu时钟由谁提供
定义采样率发生器时钟的降频因子
设置BFSX引脚为输出
0 茬每个串行数据包传输期间BFSX信号有效
设置BFSX引脚为低电平有效
提供正确BFSX信号启动时间
提供正确的BFSX信号启动时间

程序首次初始化TMS320VC5410,使数据页指针(DP)为0,并且禁止中断。由于TMS320VC5410外接10Hz的时钟频率发生器,通过锁相环电路倍频至100MHz接着初始化TMS320VC5410的多通道缓存串行口McBSP。最后,响应XRDY中断发送数据

;对控制寄存器进行设置

本文介绍了TMS320VC5410的多通道缓存串行口(McBSP)的功能特点,并结合实例子着重讨论了如何利用SPI接口协议实现McBSP与其他串行器件之间楿互通信。

我要回帖

更多关于 cpu为什么需要时钟 的文章

 

随机推荐