TMS320VC5410的McBSP串行接口技術(shù)與程序設計
摘要:介紹TMS320VC5410的多功能串行接口(McBSP),并結合McBSP與高精度,高速率串行數據轉換器MAX5410之間的串行通信,從硬件和軟件兩個(gè)方面具體討論McBSP的設計方法。
本文引用地址:http://dyxdggzs.com/article/242261.htm關(guān)鍵詞:DSP McBSP SPI 模數轉換器
一、DSP的串行接口技術(shù)
當今,嵌入式系統正迅速向低功耗、低成本、小體積、高性能、高速率方向發(fā)展。隨著(zhù)串行接口技術(shù)的不斷成熟,逐步達到了以上設計要求,成為重要的接口方案。尤其在數字信號處理器方面,串行口的重要性體現得更加突出,幾乎所有的數字信號處理器都提供了一個(gè)或多個(gè)串行接口,并且隨著(zhù)數字信號處理器的更新?lián)Q代,其相應的串行接口,在功能上不斷強化,性能上不斷提升。
與并行接口相比,串行接口的最大優(yōu)點(diǎn)就是減少了DSP的引腳數目,降低了接口設計的復雜性。通常,串行接口提供全雙工同步操作,輸入和輸出數據以位為單位的串行方式進(jìn)行處理。目前,世界各主要半導體制造商提交了許多不同的串行協(xié)議,其中一些已經(jīng)成為工業(yè)標準。典型的串行協(xié)議包括:MOTOROLA(Austin,TX)的串行外圍設備接口SPI和隊列SPI(QSPI)、PHILIPS(Sunnyvale,CA)、National Semiconductor的微總線(xiàn)(microwire)。
圖1是典型的SPI協(xié)議。SPI協(xié)議采用主從設置,相互連接的設備中一個(gè)作為主設備,其他的設備作為從設備。接口連線(xiàn)主要包括以下4條信號線(xiàn):
(1)串行數據輸入信號線(xiàn),即MISO(Master InSlave Out);
(2)串行數據輸出信號線(xiàn),即MOSI(Master Out-Slave In);
(3)移位時(shí)鐘信號線(xiàn),即SCK;
(4)從設備片選信號線(xiàn),即SS。
二、TMS320VC5410的多通道緩存串行口——McBSP
1.McBSP的功能特點(diǎn)
TMS320V5410是TI生產(chǎn)的第二代低功耗TMS320C5000系列定點(diǎn)數字信號處理器,提供了3個(gè)高速、全雙工、多通道緩存串行口McBSP,每個(gè)串行口可以支持128通道,速度達100Mbit/s。McBSP是在標準串行接口的基礎之上對功能進(jìn)行擴展,因此,具有與標準串行接口相同的基本功能:
(1)全雙工通信;
(2)擁有兩級緩沖發(fā)送和三級緩沖接收數據寄存器,允許連續數據流傳輸;
(3)為數據發(fā)送和接收提供獨立的幀同步脈沖和時(shí)鐘信號;
(4)能夠與工業(yè)標準的解碼器、模擬接口芯片(AICs)和其他串行A/D和D/A設備直接連接;
(5)支持外部移位時(shí)鐘或內部頻率可編程移位時(shí)鐘。
此外,McBSP還具有以下特殊功能:
(1)可以與IOM-2、SPI、AC97等兼容設備直接連接;
(2)支持多通道發(fā)送和接收,每個(gè)串行口最多支持128通道;
(3)串行字長(cháng)度可選,包括8、12、16、20、24和32位;
(4)支持μ-Law和A-Law數據壓縮擴展;
(5)進(jìn)行8位數據傳輸時(shí),可以選擇LSB或MSB為起始位;
(6)幀同步脈沖和時(shí)鐘信號的極性可編程;
(7)內部時(shí)鐘和幀同步脈沖的產(chǎn)生可編程,具有相當大的靈活性。
2.McBSP寄存器的訪(fǎng)問(wèn)
TMS320VC5410包含3組多通道緩存串行口,每組多通道緩存串行口有23個(gè)寄存器與之相關(guān),除RBR[1,2]、RSR[1,2]、XSR[1,2]之外,其中15個(gè)寄存器是可尋址寄存器。由于數據頁(yè)0的存儲空間限制,有些寄存器必須通過(guò)子地址尋址方式來(lái)訪(fǎng)問(wèn)。SPSA_x是子地址寄存器,欲訪(fǎng)問(wèn)指定的寄存器,只要把相應的子地址寫(xiě)入SPSA_x就可以了。表1列出了McBSP的子地址寄存器。
表1 McBSP子地址寄存器
16進(jìn)制地址 | 子地址 | 簡(jiǎn) 稱(chēng) | 寄存器名稱(chēng) | ||
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 | 發(fā)送控制寄存器1 |
0039 | 0049 | 0035 | 0x0005 | XCR2_x | 發(fā)送控制寄存器2 |
0039 | 0049 | 0035 | 0x0006 | SRGR1_x | 采樣率發(fā)生寄存器1 |
0039 | 0049 | 0035 | 0x0007 | SRGR2_x | 采樣率發(fā)生寄存器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 | 發(fā)送通道使能寄存器A |
0039 | 0049 | 0035 | 0x000D | XCERB_x | 發(fā)送通道使能寄存器B |
0039 | 0049 | 0035 | 0x000E | PCR_x | 引腳控制寄存器 |
假如要對McBSP1的發(fā)送控制寄存器2(XCR2_1)進(jìn)行設置。首先,將子地址0x0005寫(xiě)入子地址寄存器(SPSA_1),與此同時(shí),存儲單元0x0049就映射為發(fā)送控制寄存器2(XCR2_1)。然后,對存儲單元0x0049的讀寫(xiě)操作,就相當于對發(fā)送控制寄存器2(XCR2_1)進(jìn)行操作。
例:設置McBSP1的發(fā)送控制寄存器2(XCR2_1)。
XCR2_1.set 05h;發(fā)送控制寄存器2的子地址
SPSA_1.set 48h; 串行口1的子地址寄存器地址
REG_1 .set 49h; 存儲單元0x0049,在此被映射為發(fā)送控;制寄存器2
;將發(fā)送控制寄存器2的子地址寫(xiě)入子地址寄存器
(SPSA_1)
STM #XCR2_1,SPSA_1
;將控制字0041h寫(xiě)入存儲單元0x0049
STM #0041h,REG_1
3.McBST的SPI接口設計
McBSP的時(shí)鐘停止模式與SPI協(xié)議兼容。當McBSP處于時(shí)鐘停止模式時(shí),發(fā)送器和接收器是內部同步時(shí),因此可以將McBSP作為SPI主設備或從設備。當設置McBSP為主設備時(shí),發(fā)送端輸出信號(BDX)就作為SPI協(xié)議的MOSI信號,接收端輸入信號(BDR)就作為SPI協(xié)議的MISO信號。發(fā)送幀同步脈沖信號(BFSX)作為從設備片選信號(SS),而發(fā)送時(shí)鐘信號(BCLKX)就與SPI協(xié)議的串行時(shí)鐘信號(SCK)相對應。由于接收時(shí)鐘信號(BCLKR)和接收幀同步脈沖信號(BFSR)與發(fā)送端的相應部分(BCLKX和BFSX)在內部相互連接,因此這些信號不用于時(shí)鐘停止模式。McBSP設置為主設備時(shí),SPI協(xié)議連接如圖2所示。
三、McBSP接口舉例
1.高精度數模轉換器MAX541
MAX541是16位串行輸入、電壓輸出數模轉換器,+5V單電源供電。DAC輸出非緩沖,因此只有0.3mA的低供電電流和1LSB的低漂移誤差。DAC輸出范圍為0V至VREF。MAX541采用3線(xiàn)串行接口,兼容于SPITM/QSPITM/MICROWIRETM等串行通信協(xié)議。MAX541最高可以獲得500×10 3采樣點(diǎn)/秒的通過(guò)率,基本上滿(mǎn)足大多數應用的要求。MAX541采用8引腳DIP或SO封裝。MAX541各引腳描述如表2所列。
表2 MAX541引腳說(shuō)明
引 腳 | 名 稱(chēng) | 功 能 |
1 | OUT | DAC輸出電壓 |
2 | AGND | 模擬地 |
3 | REF | 參考電壓輸入,與外部+2.5V參考電壓連接 |
4 | CS | 片選輸入 |
5 | SCLK | 串行時(shí)鐘輸入,占空比必須在40%與60%之間 |
6 | DIN | 串行數據輸出 |
7 | DGND | 數字地 |
8 | VDD | +5V供電電壓 |
2.McBSP與MAX541的接口電路
TMS320VC5410與MAX541的接口電路如圖3所示。
為使MAX541獲得高分辨率和高精度,可以由MAX873提供高精度的+2.5V低阻抗基準電壓源。為了消除高頻和低頻干擾,必須在REF引腳與模擬地之間接入退耦電容。由于A(yíng)X541的數字輸入DIN與TTL/CMOS邏輯電平兼容,因此,可以與TMS320VC5410的串行輸出BDX直接連接。此外,必須嚴格隔離模擬地AGND和數字地DGND,最后在MAX541的AGND引腳上將模擬地和數字地連接在國起,構成星形的地線(xiàn)系統。在MAX541的輸出端接入電壓跟隨型運算放大器MAX495。表3是數字輸入代碼與模擬輸出電壓之間的對應關(guān)系。
表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的發(fā)送幀同步脈沖信號(BFSX)作為MAX541的片選信號(CS),而發(fā)送時(shí)鐘信號(BCLKX)作為MAX541的串行時(shí)鐘輸入。MAX541的三線(xiàn)接口電路時(shí)序如圖4所示。
圖4所示,在片選信號CS由高電平轉變?yōu)榈碗娖降耐瑫r(shí),串行數據按照從最高有效位到最低有效位的順序,在串行時(shí)鐘的每個(gè)上升沿逐位移入片內的輸入寄存器。
3.軟件設計
下面通過(guò)產(chǎn)生國個(gè)鋸齒波的例子來(lái)說(shuō)明TMS320VC5410與MAX541之間的軟件設計。
表4列出了一些與SPI設置相關(guān)的寄存器位。
表4 與SPI設置相關(guān)的些寄存器位
寄存器位 | 允許值 | 描 述 | 寄存器 |
CLKXM | 1 | 設置BCLKX引腳為輸出 | PCR |
CLKSM | 1 | 采樣率發(fā)生器時(shí)鐘源至CPU時(shí)鐘 | SRGR2 |
CLKGDV | 1255 | 定義采樣率發(fā)生器時(shí)鐘的降頻因子 | SRGR1 |
FSCM | 1 | 設置BFSX引腳為輸出 | PCR |
FSGM | 0 | 在每個(gè)串行數據包傳輸期間BFSX信號有效 | SRGR2 |
FSXP | 1 | 設置BFSX引腳為低電平有效 | PCR |
XDATDLY | 01b | 提供正確BFSX信號啟動(dòng)時(shí)間 | XCR2 |
RDATDLY | 01b | 提供正確的BFSX信號啟動(dòng)時(shí)間 | RCR2 |
4.程序清單
程序首次初始化TMS320VC5410,使數據頁(yè)指針(DP)為0,并且禁止中斷。由于TMS320VC5410外接10Hz的時(shí)鐘頻率發(fā)生器,通過(guò)鎖相環(huán)電路倍頻至100MHz。接著(zhù)初始化TMS320VC5410的多通道緩存串行口McBSP。最后,響應XRDY中斷發(fā)送數據。
.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 ;關(guān)閉DSP計時(shí)器,以便降低
;功耗鎖相環(huán)(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時(shí)鐘停
;止模式3)
STM SPCR2_1,SPSA_1
STM #0000h,REG_1 ;置McBSP于復位態(tài)時(shí),以便
;對控制寄存器進(jìn)行設置
STM PCR_1,SPSA_1
STM #0A0Fh,REG_1 ;CLKX->CLKR,FSX->FSR,
;DX->DR,FSXM=1(輸出),
;CLKXM=1(輸出),FSXP=1(低
;電平有效),CLKXP=1(在CLKX
;的下降沿發(fā)送數據)
STM RCR1_1,SPSA_1
STM #0040h,REG_1 ;每幀1個(gè)字,每個(gè)字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個(gè)字,每個(gè)字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個(gè)CLKSRG周期(CLKSRG=100MHz)
NOP
STM SPCR2_1,SPSA_1
STM #0040h,REG_1 ;啟動(dòng)McBSP0采樣率發(fā)生
;器,/GRST=1
RPT #20 ;等待2個(gè)CLKG周期(CLKG)=10MHz)
NOP
STM SPCR2_1,SPSA_1
STM #0041h,REG_1 ;啟動(dòng)McBSP0發(fā)送端,/XRST=1
STM SPCR2_1,SPSA_1
STM #00C1h,REG_1 ;啟動(dòng)幀同步脈沖,/FRST=1
RPT #80
NOP
STM #08000h,AR1
RSBX INTM ;打開(kāi)可屏蔽中斷
MVMD AR1,DXR1_1 ;向DXR送數
WAIT:IDLE1
BSPX0:
STM #0h,IFR
AMR AR1
MVDM AR1,DXR1_1
RETE
.end
結束語(yǔ)
本文介紹了TMS320VC5410的多通道緩存串行口(McBSP)的功能特點(diǎn),并結合實(shí)例子著(zhù)重討論了如何利用SPI接口協(xié)議實(shí)現McBSP與其他串行器件之間相互通信。
評論