DSP芯片已成为大多数电子工程师的常用数字芯片之一,今天我们来了解下DSP芯片的多通道缓冲串口McBSP,探索其异常错误和发生原因。
一般来说,每个多通道缓冲串口McBSP有以下五个事件会导致错误发生:
①接受过速,由标志RFULL=1表示;
②接收帧同步错误,由标志RSYNCERR=1表示;
③发错数据重写;
④发送寄存器空,由标志/XEMPTY=0表示;
⑤发送帧同步错误,由标志XSYNCERR=1表示。
1、接收过速
接收过速错误是指在接收通道上的3个寄存器已满时而造成的数据丢失,通过标志RFULL=1来表示。因为RSR、RBR和DRR中都有数据,所以当下一个数据到来时就会覆盖RSR使RSR中的数据丟失。有两种方法可以避免数据丢失:
①至少在第三个数据移入RSR前2.5个周期读走DRR中的数据;
②利用DRR接收标志RRDY触发接收中断RINT,使CPU或DMA能及时来取数。
2、接收帧同步错误
接收帧同步错误是指在当前数据帧的所有数据比特还未收完时出现了帧同步信号。由于畅网步表示帧的开始。所以出现帧同步时,接收器就会停由当前帧的接收片重新开始下帧的接收,从而造成当前帧数据的丢失。因此,接收帧同步错误义叫作不期望的帧同步。
在发生接收帧同步错误时.M:BSP将设置标志RSYNERR=1来表示、为了避免接收帧同步错误造成的数据丢失,可以将接收挖制寄存器2(RCR2)中的RFIG置为1,让MeBSP接收器忽略这些不期望出现的接收帧同步信号。
3、发送数据重写
发送数据重写是指CPL或DMA在DXR中的数据拷贝到XSR之前义对DXR写入了新的数据,使DXR中的数据被覆益而丢失。
为了避免CPU写入太快造成数据覆盖,可以让CPU在写DXR之前先查询发送标志XRDY,检查发送器是否就绪,或者只在由XRDY触发的发送中断XINT里写DXR。为了避免DMA写入太快,可以让DMA与发送事件XEVT同步,即DMA只在由XRDY触发的发送同步事件XEVT有效时才写DXR。
4、发送寄存器空
与发送数据重写相对应,发送寄存器空则是由于CPU或DMA写入太慢,使得发送帧同步出现时,DXR还未写入新值,这样XSR中的值就会不断重发,直到DXR写入新值为止。
为了避免发送寄存器空而造成的敷据重发,可以利用由XRDY触发的对CPU的发送申断XINT或对DMA的发送同步事件XEVT及时将新值写入DXR。
5、发送帧同步错误
与接收帧同步错误相对应,发送帧同步错误是指在当前帧的所有数据比特未发送完之前出现了发送帧同步信号。此时,发送器将终止当前帧的传送,并从新开始新一帧的传送。
当检测到这种不期望出现的发送帧同步信号时,发送器会设置标志XSYNERR=1。为了避免发送帧同步错误,可以将发送控制寄存器2(XCR2)中的XFIC置为1,让发送器忽略这些不期望的发送帧同步信号。