通過SPI接口協(xié)議實現(xiàn)DSP與其它設(shè)備的通信
關(guān)鍵詞:多通道緩沖串行口 McBSP TMS320C5402 μPD780308 SPI DSP
1 引言
隨著信息技術(shù)革命的深入和計算機(jī)技術(shù)的飛速發(fā)展,DSP技術(shù)也正以極快的速度被應(yīng)用到科技和國民經(jīng)濟(jì)的各信領(lǐng)域。在很多工程開發(fā)設(shè)計中,由于要求實現(xiàn)單片DSP與單片DSP、多片DSP芯片以及及其它處理芯片之間的通信,因此,怎樣更高效、更便捷的實現(xiàn)這些通信,已成為廣大DSP應(yīng)用者首先要解決的一個問題。
本文根據(jù)筆者在工程應(yīng)用和調(diào)試方面用TI的DSP TMS320C5402與NEC的μPD780308單片機(jī)進(jìn)行通信的經(jīng)驗,介紹并討論了將TMS320C5402 DSP的多通道緩沖串行口McBSP(Multi-channel Buffered Serial Port)配置為SPI模式(即時鐘停止模式),從而實現(xiàn)DSP與其它單片處理器之間的通信設(shè)計方法同時給出了實現(xiàn)方法的部分程序代碼。
2 多通道緩沖串行口McBSP
多通道緩沖串行口McBSP的功能是提供器件內(nèi)外數(shù)據(jù)的串行交換。同以前的串口相比,McBSP串口具有相當(dāng)大的靈活性。表1給出了有關(guān)TMS320C5402的McBSP管腳說明。其中串口接收、發(fā)送時鐘和同步幀信號既可由外部設(shè)備提供,又可由內(nèi)部時鐘發(fā)生器提供,從而大大的提高了通信的靈活性。
表1 TMS320C5402的有關(guān)McBSP管腳說明
管腳說明 | 說 明 |
DR | 數(shù)據(jù)輸入端 |
DX | 數(shù)據(jù)輸出端 |
CLKR | 接收數(shù)據(jù)位時鐘 |
CLKX | 發(fā)送數(shù)據(jù)位時鐘 |
FSR | 接收數(shù)據(jù)幀時鐘 |
FSX | 發(fā)送數(shù)據(jù)幀時鐘 |
CLKS | 外部提供的采樣率發(fā)生器時鐘源 |
3 SPI協(xié)議中的McBSP時鐘停止模式
SPI協(xié)議是以主從方式工作的,這種模式通常有一個主設(shè)備和一個或多個從設(shè)備,其接口包括以下四種信號:
(1)串行數(shù)據(jù)輸入(也稱為主進(jìn)從出,或MISO);
(2)串行數(shù)據(jù)輸出(也稱為主出從進(jìn),或MOSI);
(3)串行移位時鐘(也稱為SCK);
(4)從使能信號(也稱為SS)。
圖1為設(shè)備的SPI接口示意圖。該接口在工作時,主設(shè)備通過提供移位時鐘和從使能信號來控制信息的流動。從使能信號是一個可選的高低電平,它可以激活從設(shè)備(在沒有時鐘提供的情況下)的串行輸入和輸出。在沒有專門的從使能信號的情況下,主從設(shè)備之間的通信則由移位時鐘的有無來決定,在這種連接方式下,從設(shè)備必須自始至終保持激活狀態(tài),而且從設(shè)備只能是一個,不能為多個。
TMS320C5402提供的時鐘停止模式可用于SPI協(xié)議通信,當(dāng)McBSP被配置為時鐘停止模式時,發(fā)送器和接收器在內(nèi)部是同步的,即可將發(fā)送數(shù)據(jù)幀時鐘(FSX)用作從使能(即SS),而將發(fā)送數(shù)據(jù)位時鐘(CLKX)用作SPI協(xié)議中SCK。由于收數(shù)據(jù)位時鐘(CLKR)和接收數(shù)據(jù)幀時鐘(FSR)在內(nèi)部與FSX和CLKX是相連的,因此,該管腳不能用于SPI模式。
當(dāng)McBSP被配置為一個主設(shè)備時,傳送輸出信號(BDX)被用作SPI協(xié)議的MOSI信號,而接收輸入信號(BDR)則被用作MISO信號。圖2所示為McBSP用作主設(shè)備時的SPI接口示意圖。
同樣地,當(dāng)McBSP被配置為一個從設(shè)備時,BDX被用作MISO信號,BDR則被用作MOSI信號。圖3為McBSP用作從設(shè)備的SPI接口示意圖。
當(dāng)TMS320C5402的McBSP被用于時鐘停止模式時,寄存器SPCR1的CLKSTP位域和引腳配置寄存器的CLKXP位的配置如表2所列。
表2 時鐘停止模式配置
CLKSTP | CLKXP |
說 明 |
0X | X | 不可用時鐘停止模式。時鐘被激活用于非SPI模式 |
10 | 0 | 時鐘開始于上升沿(無延遲) |
11 | 0 | 時鐘開始于上升沿(有延遲) |
10 | 1 | 時鐘開始于下降沿(無延遲) |
11 | 1 | 時鐘開始于下降沿(有延遲) |
4 其它有關(guān)寄存器的配置
為了更好地掌握和了解McBSP作為SPI設(shè)備時的有關(guān)寄存器配置,現(xiàn)以McBSP作為SPI從設(shè)備來介紹有關(guān)McBSP的其它有關(guān)寄存器的配置,若McBSP做為SPI主設(shè)備,則相關(guān)配置正好相反。當(dāng)McBSP作為SPI從設(shè)備時,主設(shè)備外部產(chǎn)生主時鐘。CLKX引腳和FSX引腳必須被設(shè)置為輸入。由于CLKX引腳和CLKR信號在內(nèi)部相連接,因而傳送和接收回路均由外部主時鐘計時(CLKX)。同時,由于FSX引腳和FSR信號也已在內(nèi)部連接,因此,CLKR引腳和FSR引腳不再需要外部信號的連接。
盡管CLKX信號由主設(shè)備外部產(chǎn)生且與McBSP同步,但是,McBSP的采樣率發(fā)生器仍然必須正確啟動SPI從設(shè)備,同時,采樣率發(fā)生器還應(yīng)被設(shè)置為最大速率(CPU時鐘速率的一半)。另外,內(nèi)部采樣率時鐘常被用來同步McBSP邏輯和外部主時鐘以及從使能信號。每次傳送時,McBSP一般在從使能信號的上升沿進(jìn)行FSX輸入。也就是說,在每次傳送的開始,主設(shè)備必須維護(hù)使能信號,而在每次傳送完成后,則必須消除從使能信號。在兩次傳送之間,從使能信號不能一直保持為高電平。對正確的SPI從設(shè)備而言,McBSP的數(shù)據(jù)延遲參數(shù)必須設(shè)置為0,在這種運行模式中,設(shè)置值為1或2沒有定義。配置McBSP為從設(shè)備所需的寄存器位值如表3所列。
表3 SPI操作模式下的寄存器位值表
位 域 | 值 | 功能描述 | 寄存器 |
CLKXM | 0 | 配置BCLKX引腳為輸入 | PCR |
CLKSM | 1 | 由CPU時鐘產(chǎn)生的采樣率時鐘 | SRGR2 |
CLKGDV | 1 | 為采樣率時鐘選擇2的劃分因素 | SRGR1 |
FSXM | 0 | 配置BFSX引腳為輸入 | PCR |
FSGM | 0 | 對每個包傳送,BFSX信號被激活 | SRGR2 |
FSXP | 1 | 配置BFSX引腳為活動低電平 | PCR |
XDATDLY | 0 | 為SPI從設(shè)備運行,必須為0 | XCR2 |
RDATDLY | 0 | 為SPI從設(shè)備運行,必須為0 | RCR2 |
5 程序設(shè)計
下面是有關(guān)TMS320C5402器件的McBSP各個控制寄存器的配置,該配置程序筆者在實踐中已經(jīng)過測試,并已成功運用在了某工程設(shè)計中。
Void McBSP1_Config(void)
{
offlset=0x0000;
SPCR11=0x1800; ;配置串口時鐘停止模式CLKSTP=10
offlset=0x0001;
SPCR21=0x0222;
offlset=0x0005;
SRGR11=0x00FA;
offlset=0x0007;
SRGR21=0xa00F;
offlset=0x0002;
RCR11=0x0040; ;接收一幀含一字,一字含16位
offlset=0x0003;
RCR21=0x0044; 接收數(shù)據(jù)無延遲RDATDLY=00
offlset=0x0004;
XCR11=0x0040; ;發(fā)送一幀含一字,一字含16位
offlset=0x0005;
XCR21=0x0044; ;發(fā)送數(shù)據(jù)無延遲XDATDLY=00
offlset=0x000E;
PCR1=0x000; ;發(fā)送時鐘由外部時鐘驅(qū)動,CLKX為輸入腳CLKX=0,發(fā)送時鐘極性CLKXP=0,發(fā)送幀同步極性FSXP=1
offlset=0x0008;
MCR11=0x0001;
offlset=0x0009;
MCR21=0x0001;
offlset=0x000C;
XCERA1=0x0003;
offlset=0x0001;
SPCR21=0x0262;
offlset=0x0001;
SPCR21=0x0263;
offlset=0x0000;
SPCR11=0x1801; ;接收器有效
offlset=0x0001;
SPCR21=0x02e3; ;發(fā)送器有效
Return;
}
6 結(jié)束語
串行SPI通信協(xié)議是一種標(biāo)準(zhǔn)的通信協(xié)議,很多場合下都采用這種機(jī)制,文中將DSP作為從設(shè)備的目的是時鐘可由主設(shè)備來提供,因此不用再專門去調(diào)試時鐘,這種方式在開發(fā)中比較方便。