首页 理论教育 如何实现缓冲同步串行口?

如何实现缓冲同步串行口?

时间:2023-06-20 理论教育 版权反馈
【摘要】:缓冲同步串行口可设定工作于非缓冲模式、自动缓冲模式两种工作模式之一。BSP中的串口是TMS320C54x标准同步串口的增强版本。缓冲同步串行口共有6个寄存器:数据接收寄存器、数据发送寄存器、控制寄存器、控制扩展寄存器、接收移位寄存器、发送移位寄存器。图8-14 缓冲同步串行口结构框图BSPCE寄存器包含控制位和状态位,用于控制BSP和ABU的增强功能。

如何实现缓冲同步串行口?

缓冲同步串行口(BSP)是一种增强型同步串行口,它是在同步串行口的基础上增加了一个自动缓冲单元(ABU)。ABU是一个附加的逻辑功能,它利用专用总线,控制串行口直接与TMS320C54x的内部存储器进行数据交换,这就使得串口传送的开销最小,且具有更快的数据传输速率。它提供与其他串口工作器件的接口,如编码器、串行A/D转换器等;允许以8、10、12、16位的数据包进行连续的数据传输。

缓冲同步串行口(BSP)可设定工作于非缓冲模式、自动缓冲模式两种工作模式之一。非缓冲模式,即标准模式,与SP模式相同;自动缓冲模式,则是在ABU的控制下,串行口直接与TMS320C54x的内部存储器进行数据块传输。

1.缓冲同步串行口(BSP)结构

缓冲同步串行口(BSP)由一个复用的双缓冲串行接口组成,它类似于标准串口,只是多了一个自动缓冲单元(ABU)。BSP中的串口是TMS320C54x标准同步串口的增强版本。BSP的结构框图如图8-14所示。ABU是一个附加逻辑电路,允许串口直接对内存读写,不需要CPU参与,可以节省时间,实现串口与CPU的并行操作。当工作在自动缓冲模式下时,BSPC和BSPCE的串口控制和状态控制位与标准串口是一致的。

缓冲同步串行口共有6个寄存器:数据接收寄存器(BDRR)、数据发送寄存器(BDXR)、控制寄存器(BSPC)、控制扩展寄存器(BSPCE)、接收移位寄存器(BRSR)、发送移位寄存器(BXSR)。

2.缓冲同步串行口的控制扩展寄存器

缓冲同步串行口在标志串行后的基础上新增了许多功能,如可编程串行口时钟、选择时钟和帧同步信号的正负极性,除了执行8位或16位串行数据通信外,还可以传送10位或12位字,允许设置忽略或不忽略帧同步信号,并且可以使用PMC接口提供一个专用的操作模式。这些特殊功能受控制扩展寄存器(BSPCE)控制。

978-7-111-35536-6-Chapter08-37.jpg

图8-14 缓冲同步串行口(BSP)结构框图

BSPCE寄存器包含控制位和状态位,用于控制BSP和ABU的增强功能。寄存器的低10位用于增强特性控制,高6位用于ABU控制。BSPCE寄存器各位定义如图8-15所示。

978-7-111-35536-6-Chapter08-38.jpg

图8-15 控制扩展寄存器(BSPCE)的位结构定义

BSPCE寄存器各位功能说明如下。

1)ABUC(第15~10位):ABU控制寄存器,用于自动缓冲单元的控制。

2)PCM(第9位):PCM脉冲编码模式位,用于设置串口工作于编码模式。这种PCM模式只影响发送器。BDXR到BXSR转换不受PCM编码位的影响。当PCM=0时,清除脉冲编码模式。当PCM=1时,设置脉冲编码模式。

3)FIG(第8位):帧同步信号忽略,该位仅在连续发送模式下且具有外部帧同步信号以及连续接收模式下工作。当FIG=0时,第一个帧脉冲之后的帧同步脉冲重新启动发送。当FIG=1时,忽略帧同步信号。

4)FE(第7位):格式扩展位,用于和SPC中的FO位一起指定字长。当FO=0,FE=0时,传输的数据格式为16位字长。当FO=0,FE=1时,传输的数据格式为10位字长。当FO=1,FE=0时,传输的数据格式为8位字长。当FO=1,FE=1时,传输的数据格式为12字长。

注意,对于8、10和12位字长,接收字是右对齐的,并且由符号扩展组成16位字长。发送的字必须是右对齐的。

5)CLKP(第6位):时钟极性设置位,用于设定接收和发送时,何时采样数据。当CLKP=0时,接收器在BCLKR的下降沿采样数据,发送器在BCLKX的上升沿发送数据。当CLKP=1时,接收器在BCLKR的上升沿采样数据,发送器在BCLKX的下降沿发送数据。

6)FSP(第5位):帧同步极性设置位,用于设定帧同步脉冲触发电平高低。当FSP=0时,帧同步脉冲(BFSX和BFSR)高电平激活。当FSP=1时,帧同步脉冲(BFSX和BFSR)低电平激活。

7)CLKDV(第4~0位):CLKDV内部发送时钟分频因数。当BSPC的MCM=1时,CLKX由片上的时钟源驱动,其频率为CLKOUT/(CLKDV+1),CLKDV的取值范围是0~31。当CLKDV为奇数或0时,CLKX的占空比为50%。当CLKDV为偶数时,其占空比依赖于CLKP:CLKP=0,占空比为(P+1)/P;CLKP=1,占空比为P/(P+1)。

3.ABU自动缓冲单元

ABU的功能是自动控制串口与内部TMS320C54x存储器之间的数据传输,且不需要CPU干预,它实际是利用专用总线,控制串行口直接与TMS320C54x的内部存储器进行数据交换。ABU在功能上可以对发送和接收部分分别使能,并且当传输的数据长度是数据块长度的一半或整个长度时,ABU也可以编程设置产生中断。ABU单元含有5个寄存器,分别是11位的地址发送寄存器(AXR);11位的块长度发送寄存器(BKX);11位的地址接收寄存器(ARR);11位的块长度接收寄存器(BKR);16位的串口控制寄存器(BSPCE)。本小节则主要讨论BSPCE中包含的ABU操作的位。

BSPCE的最高6位组成了ABU的控制寄存器(ABUC),用于自动缓冲单元的控制。ABUC配置的位结构定义如图8-16所示。

978-7-111-35536-6-Chapter08-39.jpg

图8-16 ABUC配置的位结构定义

1)HALTR(第15位):自动缓冲接收停止位,用于决定当缓冲区已接收到一半时,自动缓冲是否暂停。HALTR=0,当缓冲区接收到一半时,继续操作。HALTR=1,当缓冲区接收到一半时,自动缓冲停止。此时,BRE清0,串行口继续按标准模式工作。

2)RH(第14位):接收缓冲区半满,用来指明接收缓冲区哪一半已经填满。RH=0,表示缓冲区的前半部分被填满,当前接收的数据正存入后半部分缓冲区。RH=1,表示后半部分缓冲区被填满,当前接收的数据正存入前半部分缓冲区。

3)BRE(第13位):自动接收使能控制位,用于控制自动缓冲接收。BRE=0,自动接收禁止,串口工作于标准模式。BRE=1。接收器自动接收允许。

4)HALTX(第12位):自动缓冲发送禁止,用于控制自动缓冲发送是否暂停。HALTX=0,当一半缓冲区发送完成后,自动缓冲继续工作。HALTX=1,当一半缓冲区发送完成后,自动缓冲停止。此时,BRE清0,串行口继续工作于标准模式。

5)XH(第11位):发送缓冲区半满。用来表示发送缓冲区哪一半已经发送。XH=0,缓冲区前半部分发送完成,当前发送数据取自缓冲区的后半部分。XH=1,缓冲区后半部分发送完成,当前发送数据取自缓冲区的前半部分。

6)BXE(第10位):自动缓冲发送使能位,用来控制自动缓冲发送。BXE=0,禁止自动缓冲发送,串行接口工作于标准模式。BXE=1,允许自动缓冲发送功能。

自动缓冲过程归纳如下:(www.xing528.com)

1)ABU完成对缓冲存储器的存取。

2)工作过程中地址寄存器自动增加,直到缓冲区的底部(到底部后,地址寄存器内容恢复到缓冲存储区顶部)。

3)如果数据到了缓冲区的一半或底部,就会产生中断,并且刷新XH/XL。

4)如果选择禁止自动缓冲功能,当数据过半或到达缓冲区底部时,ABU自动停止自动缓冲功能。

4.BSP的使用初始化操作

BSP在使用前必须进行初始化操作,才能正常工作,系统需要考虑初始化的时序操作。

(1)BSP发送初始化步骤

1)把0008h写到BSPCE寄存器,复位和初始化串口。

2)把0020h写到IFR,清除挂起的串口中断。

3)把0020h与IMR进行或操作,使能串口中断。

4)清除ST1的INTM位,使能全局中断。

5)把1400h写到BSPCE寄存器,初始化ABU的发送器。

6)把缓冲区开始地址写到AXR。

7)把缓冲长度写到BKX。

8)把0048h写到BSPCE,开始串口操作。

(2)BSP接收初始化步骤

1)把0000h写到BSPCE寄存器,复位和初始化串口。

2)把0010h写到IFR,清除挂起的串口中断。

3)把0010h与IMR进行或操作,使能串口中断。

4)清除ST1的INTM位,使能全局中断。

5)把2160h写到BSPCE寄存器,初始化ABU的发送器。

6)把缓冲开始地址写到ARR。

7)把缓冲长度写到BKR。

8)把0080h写到BSPCE寄存器,开始串口操作。

5.BSP省电工作模式

TMS320C54x提供几种省电工作模式,允许部分或整个器件进入休眠或低功耗状态。省电状态可在如下几种方式下调用:执行IDEL指令,或将HM状态位设置为低,令HOLD引脚为低电平。BSP可以像其他片上外设一样(定时器、标准串口),利用发送或接收中断唤醒处于睡眠状态的CPU。

当处于IDEL或HOLD模式时,BSP继续工作。当工作于IDEL2/3时,不同于串口和片上其他外设被停止的情形,BSP仍然可以工作。标准模式下,当器件工作于IDEL2/3模式时,若BSP利用外部时钟及外部帧同步信号,则这个端口将继续工作。若在执行IDEL2/3指令之前,INTM=0,发送或接收中断将唤醒省电模式工作的CPU。如果使用内部时钟和帧同步信号,BSP会保持IDEL2/3状态直到CPU重新工作。

自动缓冲模式下,当器件工作于IDEL2/3模式时,如果BSP利用外部时钟和帧同步信号,一个发送和接收事件将接通内部时钟信号以便完成DXR(DRR)内存转换。一旦转换完成,BSP内部时钟自动关断,芯片保持IDEL2/3工作状态。当器件执行IDEL2/3之前,如果INTM=0,且发送或接收缓冲区半空、全空或全满时,ABU的发送或接收中断可以唤醒器件的CPU。

6.SP与BSP的差别

标准同步串行口(SP)与缓冲同步串行口(BSP)的差别见表8-7。

表8-7 标准同步串行口(SP)与缓冲同步串行口(BSP)的差别

978-7-111-35536-6-Chapter08-40.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈