1.McBSP复位
McBSP的复位方式包括器件复位和串行模块复位。无论是通过器件复位还是串行模块复位来复位McBSP模块,都可以将器件的状态恢复到初始化状态,复位所有的计数器和状态位,包括接收状态位(RFULL、RRDY、RSYNCERR)和发送状态位(XEMPTY、XRDY、XSYNCERR)。
所谓的器件复位,就是通常意义上的整个芯片的复位,即引脚接收到低电平,此时发送部分、接收部分、采样率生成部分会进入复位状态。而当引脚上的电平恢复到高电平时,FRST、GRST、RRST、XRST标志位都为0,片内的串行接口会保持复位状态。
当McBSP模块因器件复位而复位时,内部串行接口(包括发送部分、接收部分、采样率发生部分)都被复位,所有输入引脚和三态引脚都应该处于一个可预知的状态。而输出引脚DX,则是高阻态。当器件退出复位状态时,串行接口保持复位状态(即RRST、XRST、FRST、CRST都是0)。在这个复位状态,串行接口可以当成GPIO(通用输入/输出接口)使用。
而串行模块复位,简而言之,就是McBSP模块自身的复位,而芯片内部的其他模块并不会因此而复位。串行模块复位时,串行接口发送部分、接收部分能独立地用两个字位来复位:XRST、RRST(串口控制寄存器SPCR);而采样率生成部分则用SPCR中的GRST字位来复位。当接收部分、发送部分复位字位(RRST、XRST)被清为0时,则McBSP模块中对应的部分就会被复位。所有的输入引脚(如DR、CLKS)和其他被配置为输入的引脚将会保持一个可预知的状态,FS(R/X)将会保持在一个停止状态(如果设置为输出)。
表4-32列举了McBSP器件复位和串行模块复位时各个引脚的状态。
表4-32 McBSP复位时各个引脚的状态
2.McBSP的初始化
McBSP的初始化实际上就是设置McBSP的寄存器,寄存器的设置和McBSP连接的外设相关。根据不同的外设,McBSP的初始化有所不同,其不同也仅仅体现在寄存器的设置上。
McBSP初始化有以下主要工作。
1)设置数据读/写的位同步时钟和帧同步时钟,如果设置正确,则从两个时钟引脚可以看到正确的时钟信号。
2)发送和接收中断的设置。如果程序可以接收到数据发送或者接收的中断,则表明McBSP的可以正确地接收和发送数据。
3)同步事件的设置。如果设置正确的同步事件,DSP将会收到正确的DMA中断,如果不使用DMA控制器传输数据,则不需要设置同步事件。
下面以采用DSP传输McBSP的数据为例,说明它的初始化过程,其步骤如下。
1)设置SPCR的XRST、RRST、GRST及FRST位为0,禁止缓冲的读/写以及位和帧同步信号,否则,可能在设置其他寄存器时,McBSP在读/写状态,从而出现异常错误。
2)设置各种寄存器,包括设置SPCR的其他位,但设置SPCR时,一定得保证1)中设置的4个位的状态不变。
3)等待一段时间,一般3个时钟周期,在设置后的程序中加入NOP3指令。这是为了保证刚刚设置的寄存器可以正确的运行,尤其是采样时钟发生器,从设置到正确产生时钟需要一定的启动时间。
4)设置中断使能寄存器,一定需要使能NML中断,此外还需要设置缓冲串口的中断,一般只需要设置接收中断,可以忽略发送中断。注意,此时不要打开缓冲串口中断。
5)清除所有可能已经被挂起的和缓冲串口有关的中断标志。
6)使能和缓冲串口相关的中断,一般为接受中断。
7)使能缓冲串口数据收发位,即设置SPCR的XRST、RRST、GRST及FRST位为1。
8)初始化完成,等待McBSP数据到来,或者从McBSP发送数据。
一个简单的McBSP初始化的代码如下。(www.xing528.com)
3.McBSP的中断
接收中断(RINT)和发送中断(XINT)信号向CPU提供串口状态的变化。可以使用4种方式配置这些中断,也可以通过SPCR的接收/发送中断模式位(RINTM和XINTM)设置这些方式。
1)(R/X)INTM=00b。通过跟踪SPCR中的(R/X)RDY对每个串行单元产生中断。
2)(R/X)INTM=01b。在一个帧内部的子帧(16个单元或更少)结束处中断。
3)(R/X)INTM=10b。当探测到帧同步脉冲时产生中断。仅当发送/接收器处于复位时,也可以产生一个中断。这是通过同步输入帧同步脉冲并通过(R/X)INT将同步脉冲送到CPU来实现的。
4)(R/X)INTM=11b。帧同步错误时产生中断。注意,如果任意一个其他中断模式被选择,则当响应探测这个条件的中断时,可以读取(R/X)SYNCERR。
4.标准模式下McBSP的操作
设置好McBSP的各个寄存器,就可以进行数据的收发。假设McBSP的设置如下。
·RPHASE=XPHASE=0,单相帧。
·RFRLEN1=XPRLEN1=0b,每帧一个数据。
·RWDLEN1=XWDLEN1=000b,每个数据为8位。
·CLKRP=CLKXP=0,时钟下降沿接收数据,上升沿发送数据。
·FSRP=FSXP=0,帧同步时钟高有效。
·RDATDLY=XDATDLY=01b,1位的数据延迟。
(1)数据接收时序
按照以上的设置,McBSP数据接收时序如图4-23所示。一旦接收帧同步时钟(FSR)有效,则有效状态会在一个接收位同步时钟(CLKR)的下降沿被DSP检测到,然后DR引脚上的数据会在经过一定时间的数据延迟后(DRC RDATDLY中的设置值),依次移动进入数据接收移位寄存器(RSR)。假如RBR为不满,则在每个数据接收的结束处,也就是CLKR时钟的上升沿处,RSR中的数据被复制到RBR中。复制操作将会在下一个时钟的下降沿将RRDY位置1,表明接收数据寄存器已经准备好,DSP可以读取数据。一旦数据被DSP读走,RRDY将自动变成无效状态,表明接收数据寄存器没有准备好,DSP不能读取数据。
图4-23 McBSP数据接收时序
(2)数据发送时序
McBSP数据发送时序如图4-24所示。一旦检测到发送帧同步时钟(FSX)有效,数据发送移位寄存器(XSR)的值经过一定的数据延迟后(XDATDLY中的设置值),依次移动到DX引脚上。假如DXR有已经准备好的发送数据,DXR中的数据将自动复制到XSR中。从DXR到XSR的复制操作将会在下一个时钟的下降沿将XRDY位置1,表明发送数据寄存器已经准备好,DSP可以再次发送数据。一旦DSP写入数据DXR,XRDY将自动变成无效状态,表明发送数据寄存器没有准备好,DSP不能写入数据。
图4-24 McBSP数据发送时序
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。