摘要:介绍TMS320VC5410的多功能串行接口(McBSP),并结合McBSP与高精度,高速率串行数据转换器MAX5410之间的串行通信,从硬件和软件两个方面具体讨论McBSP的设计方法。
关键词:DSP McBSP SPI 模数转换器
一、DSP的串行接口技术
当今,嵌入式系统正迅速向低功耗、低成本、小体积、高性能、高速率方向发展。随着串行接口技术的不断成熟,逐步达到了以上设计要求,成为重要的接口方案。尤其在数字信号处理器方面,串行口的重要性体现得更加突出,几乎所有的数字信号处理器都提供了一个或多个串行接口,并且随着数字信号处理器的更新换代,其相应的串行接口,在功能上不断强化,性能上不断提升。
与并行接口相比,串行接口的最大优点就是减少了DSP的引脚数目,降低了接口设计的复杂性。通常,串行接口提供全双工同步操作,输入和输出数据以位为单位的串行方式进行处理。目前,世界各主要半导体制造商提交了许多不同的串行协议,其中一些已经成为工业标准。典型的串行协议包括:MOTOROLA(Austin,TX)的串行外围设备接口SPI和队列SPI(QSPI)、PHILIPS(Sunnyvale,CA)、National Semiconductor的微总线(microwire)。
图1是典型的SPI协议。SPI协议采用主从设置,相互连接的设备中一个作为主设备,其他的设备作为从设备。接口连线主要包括以下4条信号线:
(1)串行数据输入信号线,即MISO(Master InSlave Out);
(2)串行数据输出信号线,即MOSI(Master Out-Slave In);
(3)移位时钟信号线,即SCK;
(4)从设备片选信号线,即SS。
二、TMS320VC5410的多通道缓存串行口——McBSP
1.McBSP的功能特点
TMS320V5410是TI生产的第二代低功耗TMS320C5000系列定点数字信号处理器,提供了3个高速、全双工、多通道缓存串行口McBSP,每个串行口可以支持128通道,速度达100Mbit/s。McBSP是在标准串行接口的基础之上对功能进行扩展,因此,具有与标准串行接口相同的基本功能:
(1)全双工通信;
(2)拥有两级缓冲发送和三级缓冲接收数据寄存器,允许连续数据流传输;
(3)为数据发送和接收提供独立的帧同步脉冲和时钟信号;
(4)能够与工业标准的解码器、模拟接口芯片(AICs)和其他串行A/D和D/A设备直接连接;
(5)支持外部移位时钟或内部频率可编程移位时钟。
此外,McBSP还具有以下特殊功能:
(1)可以与IOM-2、SPI、AC97等兼容设备直接连接;
(2)支持多通道发送和接收,每个串行口最多支持128通道;
(3)串行字长度可选,包括8、12、16、20、24和32位;
(4)支持μ-Law和A-Law数据压缩扩展;
(5)进行8位数据传输时,可以选择LSB或MSB为起始位;
(6)帧同步脉冲和时钟信号的极性可编程;
(7)内部时钟和帧同步脉冲的产生可编程,具有相当大的灵活性。
2.McBSP寄存器的访问
TMS320VC5410包含3组多通道缓存串行口,每组多通道缓存串行口有23个寄存器与之相关,除RBR[1,2]、RSR[1,2]、XSR[1,2]之外,其中15个寄存器是可寻址寄存器。由于数据页0的存储空间限制,有些寄存器必须通过子地址寻址方式来访问。SPSA_x是子地址寄存器,欲访问指定的寄存器,只要把相应的子地址写入SPSA_x就可以了。表1列出了McBSP的子地址寄存器。
表1 McBSP子地址寄存器
16进制地址 | 子地址 | 简 称 | 寄存器名称 | ||
McBSP 0 | McBSP 1 | McBSP 2 | |||
0038 | 0048 | 0034 | - | SPSA_x | 子地址寄存器 |
0039 | 0049 | 0035 | 0x0000 | SPCR1_x | 串行端口控制寄存器1 |
0039 | 0049 | 0035 | 0x0001 | SPCR2_x | 串行端口控制寄存器2 |
0039 | 0049 | 0035 | 0x0002 | RCR1_x | 接收控制寄存器1 |
0039 | 0049 | 0035 | 0x0003 | RCR2_x | 接收控制寄存器2 |
0039 | 0049 | 0035 | 0x0004 | XCR1_1 | 发送控制寄存器1 |
0039 | 0049 | 0035 | 0x0005 | XCR2_x | 发送控制寄存器2 |
0039 | 0049 | 0035 | 0x0006 | SRGR1_x | 采样率发生寄存器1 |
0039 | 0049 | 0035 | 0x0007 | SRGR2_x | 采样率发生寄存器2 |
0039 | 0049 | 0035 | 0x0008 | MCR_x | 多通道寄存器1 |
0039 | 0049 | 0035 | 0x0009 | MCR2_x | 多通道寄存器2 |
0039 | 0049 | 0035 | 0x000A | RCERA_x | 接收通道使能寄存器A |
0039 | 0049 | 0035 | 0x000B | RCERB_x | 接收通道使能寄存器B |
0039 | 0049 | 0035 | 0x000C | XCERA_x | 发送通道使能寄存器A |
0039 | 0049 | 0035 | 0x000D | XCERB_x | 发送通道使能寄存器B |
0039 | 0049 | 0035 | 0x000E | PCR_x | 引脚控制寄存器 |
假如要对McBSP1的发送控制寄存器2(XCR2_1)进行设置。首先,将子地址0x0005写入子地址寄存器(SPSA_1),与此同时,存储单元0x0049就映射为发送控制寄存器2(XCR2_1)。然后,对存储单元0x0049的读写操作,就相当于对发送控制寄存器2(XCR2_1)进行操作。
例:设置McBSP1的发送控制寄存器2(XCR2_1)。
XCR2_1.set 05h;发送控制寄存器2的子地址
SPSA_1.set 48h; 串行口1的子地址寄存器地址
REG_1 .set 49h; 存储单元0x0049,在此被映射为发送控;制寄存器2
;将发送控制寄存器2的子地址写入子地址寄存器
(SPSA_1)
STM #XCR2_1,SPSA_1
;将控制字0041h写入存储单元0x0049
STM #0041h,REG_1
3.McBST的SPI接口设计
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接口举例
1.高精度数模转换器MAX541
MAX541是16位串行输入、电压输出数模转换器,+5V单电源供电。DAC输出非缓冲,因此只有0.3mA的低供电电流和1LSB的低漂移误差。DAC输出范围为0V至VREF。MAX541采用3线串行接口,兼容于SPITM/QSPITM/MICROWIRETM等串行通信协议。MAX541最高可以获得500×10
3采样点/秒的通过率,基本上满足大多数应用的要求。MAX541采用8引脚DIP或SO封装。MAX541各引脚描述如表2所列。
表2 MAX541引脚说明
引 脚 | 名 称 | 功 能 |
1 | OUT | DAC输出电压 |
2 | AGND | 模拟地 |
3 | REF | 参考电压输入,与外部+2.5V参考电压连接 |
4 | CS | 片选输入 |
5 | SCLK | 串行时钟输入,占空比必须在40%与60%之间 |
6 | DIN | 串行数据输出 |
7 | DGND | 数字地 |
8 | VDD | +5V供电电压 |
2.McBSP与MAX541的接口电路
TMS320VC5410与MAX541的接口电路如图3所示。
为使MAX541获得高分辨率和高精度,可以由MAX873提供高精度的+2.5V低阻抗基准电压源。为了消除高频和低频干扰,必须在REF引脚与模拟地之间接入退耦电容。由于AX541的数字输入DIN与TTL/CMOS逻辑电平兼容,因此,可以与TMS320VC5410的串行输出BDX直接连接。此外,必须严格隔离模拟地AGND和数字地DGND,最后在MAX541的AGND引脚上将模拟地和数字地连接在国起,构成星形的地线系统。在MAX541的输出端接入电压跟随型运算放大器MAX495。表3是数字输入代码与模拟输出电压之间的对应关系。
表3 MAX541单极性接口
DAC数字输入 |
模拟输出VOUT |
MSB LSB | |
1111 1111 1111 1111 | VREF·(65 635/65 536) |
1000 0000 0000 0000 | VREF·(32 768/65 536)=(1/2)VREF |
0000 0000 0000 0000 | VREF·(1/65 536) |
0000 0000 0000 0000 | 0V |
DSP的发送帧同步脉冲信号(BFSX)作为MAX541的片选信号(CS),而发送时钟信号(BCLKX)作为MAX541的串行时钟输入。MAX541的三线接口电路时序如图4所示。
图4所示,在片选信号CS由高电平转变为低电平的同时,串行数据按照从最高有效位到最低有效位的顺序,在串行时钟的每个上升沿逐位移入片内的输入寄存器。
3.软件设计
下面通过产生国个锯齿波的例子来说明TMS320VC5410与MAX541之间的软件设计。
表4列出了一些与SPI设置相关的寄存器位。
表4 与SPI设置相关的些寄存器位
寄存器位 | 允许值 | 描 述 | 寄存器 |
CLKXM | 1 | 设置BCLKX引脚为输出 | PCR |
CLKSM | 1 | 采样率发生器时钟源至CPU时钟 | SRGR2 |
CLKGDV | 1255 | 定义采样率发生器时钟的降频因子 | SRGR1 |
FSCM | 1 | 设置BFSX引脚为输出 | PCR |
FSGM | 0 | 在每个串行数据包传输期间BFSX信号有效 | SRGR2 |
FSXP | 1 | 设置BFSX引脚为低电平有效 | PCR |
XDATDLY | 01b | 提供正确BFSX信号启动时间 | XCR2 |
RDATDLY | 01b | 提供正确的BFSX信号启动时间 | RCR2 |
4.程序清单
程序首次初始化TMS320VC5410,使数据页指针(DP)为0,并且禁止中断。由于TMS320VC5410外接10Hz的时钟频率发生器,通过锁相环电路倍频至100MHz。接着初始化TMS320VC5410的多通道缓存串行口McBSP。最后,响应XRDY中断发送数据。
.width 80
.length 100
.title "transmit.asm"
.mmregs
.defSTART
.def BSPR0
.def BSPX0
.include "periphral.asm"
.text
START:
;初始化DSP
STM#00E0h,PMST ;IPTR=000000001b,MP/MC=1,
;OVLY=1,DROM=0
LD #0,DP
LD #0,ARP
STM #0FFFFh,IFR ;清除所有中断标志
STM #0020h,IMR ;允许BSPX0中断
STM #0010h,TCR ;关闭DSP计时器,以便降低
;功耗锁相环(PLL)倍频*10->CLKOUT:100MHz
STM#1001000110000111b,CLKMD
Tststatus:
LDM CLKMD,A
AND #01h,A
BC Tststatus,AEQ
STM #1001000110000111b,CLKMD
;初始化McBSP
STM SPCR1_1,SPSA_1
STM #1000h,REG_1 ;CLKSTP=10(选择SPI时钟停
;止模式3)
STM SPCR2_1,SPSA_1
STM #0000h,REG_1 ;置McBSP于复位态时,以便
;对控制寄存器进行设置
STM PCR_1,SPSA_1
STM #0A0Fh,REG_1 ;CLKX->CLKR,FSX->FSR,
;DX->DR,FSXM=1(输出),
;CLKXM=1(输出),FSXP=1(低
;电平有效),CLKXP=1(在CLKX
;的下降沿发送数据)
STM RCR1_1,SPSA_1
STM #0040h,REG_1 ;每帧1个字,每个字16位
STM RCR2_1,SPSA_1
STM #0041h,REG_1 ;单帧,RFIG=0,RDATDLY=01
;(1位数据延迟)
STM XCR1_1,SPSA_1
STM #0040h,REG_1 ;每帧1个字,每个字16位
STM XCR2)1,SPSA_1
STM #0041h,REG_1 ;单帧XFIG=0,XDATDLY=01
;(1位数据延迟)
STM SRGR1_1,SPSA_1
STM #0009h,REG_1 ;CLKGDV=9,CLKG=(CLKOUT)/
;(1+CLKGDV)=10MHz
STM SRGR2_1,SPSA_1
STM #2313h,REG_1;GSYNC=0,CLKSP=0,
;CLKSM=1,FSGM=0
RPT #2 ;等待2个CLKSRG周期(CLKSRG=100MHz)
NOP
STM SPCR2_1,SPSA_1
STM #0040h,REG_1 ;启动McBSP0采样率发生
;器,/GRST=1
RPT #20 ;等待2个CLKG周期(CLKG)=10MHz)
NOP
STM SPCR2_1,SPSA_1
STM #0041h,REG_1 ;启动McBSP0发送端,/XRST=1
STM SPCR2_1,SPSA_1
STM #00C1h,REG_1 ;启动帧同步脉冲,/FRST=1
RPT #80
NOP
STM #08000h,AR1
RSBX INTM ;打开可屏蔽中断
MVMD AR1,DXR1_1 ;向DXR送数
WAIT:IDLE1
BSPX0:
STM #0h,IFR
AMR AR1
MVDM AR1,DXR1_1
RETE
.end
结束语
本文介绍了TMS320VC5410的多通道缓存串行口(McBSP)的功能特点,并结合实例子着重讨论了如何利用SPI接口协议实现McBSP与其他串行器件之间相互通信。
上一篇:SSCP300PL网络接口控制器及应用
下一篇:USB系统结构与应用设计