摘 要: 根據(jù)title="MAXIM">MAXIM公司的12位串行模數(shù)轉(zhuǎn)換芯片MAX1270及TI公司TMS320C5402 DSP的多通道緩沖串口(McBSP)的工作原理,,設(shè)計了高速傳輸通道,,采用McBSP的SPI(Series Protocol Interface)工作模式,將McBSP與MAX1270直接相連,,不需要占用并行數(shù)據(jù)總線,,避免了總線沖突。給出了MAX1270與TMS320C5402的McBSP的接口電路及軟件編程實現(xiàn),。
關(guān)鍵詞: TMS320C5402;MAX1270,;多通道緩沖串口,;SPI
TMS320C5402是一種具有高處理能力和低功耗特性的16位定點DSP芯片,處理能力高達100MIPS,,其多功能串口McBSP(Multi-channel Buffered Serial Port)不僅可以完成標準串口的全雙工串行通信,,還具有支持SPI設(shè)備、多達128個通道的數(shù)據(jù)收發(fā)能力等特性,。核心電壓為1.8V,,I/O電壓為3.3V,尤其適合于便攜式設(shè)備,。MAX1270是8通道,、多量程雙極性輸入、串行輸出,、逐次逼近型12位AD轉(zhuǎn)換器,。支持SPI/QSPI和MICROWIRE等多種接口方式,,可方便地與各種微控制器直接級聯(lián)。
1 MAX1270原理
1.1 MAX1270引腳功能
MAX1270引腳分布如圖1所示,。
各引腳功能如下:1-VDD:+5V電源輸入,;2,4-DGND:數(shù)字地,;5-SCLK:串行時鐘輸入,,為串口數(shù)據(jù)的輸入輸出提供移位時鐘;6-:片選輸入端,,低電平有效,,當
為高時,DOUT呈高阻狀態(tài),;7-DIN:串行數(shù)據(jù)輸入引腳,,從該引腳寫入控制字;8-SSTRB:轉(zhuǎn)換完成指示引腳,,在不同的時鐘模式下,,該引腳的高低電平變化反映轉(zhuǎn)換是否完成;10-DOUT:串行數(shù)據(jù)輸出引腳,,用來輸出轉(zhuǎn)換結(jié)果,;
方法:掉電模式控制輸入端,低電平有效,,正常工作模式下置高,;12-AGND:模擬地;13~20-CH0~CH7:模擬信號輸入端,;21-REFADJ,,參考電壓輸出/外部調(diào)節(jié)輸入;23-REF,,參考電壓緩沖輸出/ADC的參考輸入,。
1.2 MAX1270的控制字
MAX1270的控制字如表1所示。
其中PD0,、PD1為時鐘模式選擇位,,其取值與相對應(yīng)的功能如表2所示。
在外部時鐘模式下,,串行數(shù)據(jù)的輸入,、輸出和數(shù)據(jù)的采樣保持、轉(zhuǎn)換全部由SCLK輸入的外部時鐘所控制,。在內(nèi)部時鐘模式下,,數(shù)據(jù)的轉(zhuǎn)換時鐘由芯片內(nèi)部產(chǎn)生,從而減輕了外部微控制器的負荷,提高了工作效率,。本文所設(shè)計的系統(tǒng)就是工作在內(nèi)部時鐘模式下,,由DSP提供2MHz的時鐘。由于DSP的收發(fā)寄存器為16位,,故采用16個時鐘周期轉(zhuǎn)換一個數(shù)據(jù)的工作時序,,使得每次轉(zhuǎn)換只需分別讀寫一次寄存器,大大簡化了軟件的設(shè)計,。在此模式下,,轉(zhuǎn)換速率可達到43ks/s。
RNG,、BIP兩位決定了模擬電壓的輸入極性和范圍,,其取值與相對應(yīng)的功能如表3所示。
MAX1270具有軟件可編程極性選擇功能,,只需要寫相應(yīng)控制字就可輕松實現(xiàn),,這一特點降低了輸入電路設(shè)計的復(fù)雜性。對于單極性輸入,,轉(zhuǎn)換結(jié)果為12位二進制碼,;對于雙極性輸入,轉(zhuǎn)換結(jié)果為12位二進制補碼,。只要把存儲轉(zhuǎn)換結(jié)果的變量定義為有符號整數(shù)類型(signed int)就可正確讀取結(jié)果,。
SEL2、SEL1,、SEL0為模擬通道選擇位,,其取值與相對應(yīng)功能如表4所示。
START位為控制字的開始位,,在CS低電平期間標志著8位控制字的開始,,其后的控制字在SCLK作用下先高位后低位的順序由DIN輸入[2]。
2 McBSP原理
McBSP內(nèi)部結(jié)構(gòu)如圖2所示,,包括數(shù)據(jù)通路和控制通路兩部分,,并通過7個引腳與外部器件相連。
各引腳功能:DX為發(fā)送引腳,,與McBSP相連接;DR為接收引腳,,與接收數(shù)據(jù)總線相連接,;CLKX為發(fā)送時鐘引腳;CLKR為接收時鐘引腳,;FSX為發(fā)送幀同步引腳,;FSR為接收幀同步引腳。
在時鐘信號和幀同步信號的控制下,接收和發(fā)送過程通過DR和DX引腳與外部器件直接通信,;DSP內(nèi)部對McBSP的操作是利用16位控制寄存器,,通過片內(nèi)外設(shè)總線進行存取控制。數(shù)據(jù)發(fā)送過程:將數(shù)據(jù)寫入數(shù)據(jù)發(fā)送寄存器DXR,;然后,,發(fā)送移位寄存器XSR將數(shù)據(jù)經(jīng)DX引腳移出發(fā)送。數(shù)據(jù)接收過程:通過DR引腳將接收的數(shù)據(jù)移入接收移位數(shù)據(jù)寄存器RSR中,;然后,,將這些數(shù)據(jù)分別復(fù)制到接收緩沖寄存器RBR和DRR中;最后,,由CPU或DMA控制器讀出,。這個過程允許內(nèi)部和外部數(shù)據(jù)通信同時進行[3]。
3 TMS320C5402與MAX1270的接口設(shè)計
3.1 接口時序
TMS320C5402的McBSp與MAX1270都支持SPI(Series Protocol Interface)總線協(xié)議,。SPI總線是Motorola公司推出的三線同步接口,,同步串行三線方式進行通信:一條時鐘線SCK,一條數(shù)據(jù)輸入線MOSI,,一條數(shù)據(jù)輸出線MISO,;用于CPU與各種外圍器件進行全雙工、同步串行通信,。SPI主要特點有:可以同時發(fā)送和接收串行數(shù)據(jù),;可以當作主機或從機工作;提供頻率可編程時鐘;發(fā)送結(jié)束中斷標志,。傳輸?shù)钠鹗加芍鳈C的時鐘信號控制,,一旦檢測到主機有時鐘信號發(fā)出,主機和從機的通信就開始,,分別在時鐘的不同跳變沿發(fā)送和接收數(shù)據(jù),,當主機時鐘信號結(jié)束時,通信就停止,,在通信過程中從機的片選信號要保持有效,。
本文采用MAX1270內(nèi)部時鐘模式下16時鐘周期的工作時序,由5402作為主機提供串行時鐘,,MAX1270作為從機輸出轉(zhuǎn)換結(jié)果,,其時序如圖3。
當片選信號CS置低時,,主機的串行時鐘開始發(fā)出時鐘信號,,在時鐘的每個下降沿主機向DIN上寫數(shù)據(jù),在時鐘的每個上升沿數(shù)據(jù)打入從機,。在DIN上第7位控制字建立的上升沿開始采樣模擬電壓信號,,并保持2個外部時鐘周期和4個內(nèi)部時鐘周期,隨后在第8個控制字之后的下降沿轉(zhuǎn)換開始。轉(zhuǎn)換的過程中,,SSTRB置低直到轉(zhuǎn)換完成,,查詢此引腳的狀態(tài)可判斷轉(zhuǎn)換是否完成,同時為了去除噪聲干擾,,在轉(zhuǎn)換過程中應(yīng)保持高電平直到轉(zhuǎn)換完成,。轉(zhuǎn)換完成后,12位轉(zhuǎn)換結(jié)果由高到低由從機輸出到DOUT上,,并在每個時鐘的上升沿打入主機,,從而得到轉(zhuǎn)換結(jié)果。
由圖3的時序圖可以看出,,每次轉(zhuǎn)換都必須寫入控制字,,相鄰兩次轉(zhuǎn)換的控制字之間間隔16個時鐘周期,兩次轉(zhuǎn)換結(jié)果同樣間隔16個時鐘周期,,而且如果在第一次讀取結(jié)果的D3位同時在DIN上寫入下一次的控制字,,在下個周期到來時就可以直接讀取結(jié)果而不用在等待一個空周期。這樣可以充分利用SPI總線的特點,,在一個周期內(nèi)主機寫DIN讀DOUT,,而從機寫DOUT讀DIN。由于McBSP的DXR(發(fā)送寄存器)和DDR(接收寄存器)都是16位的,,故選擇了16個時鐘周期的工作時序與之相匹配,。
3.2 接口電路
根據(jù)McBSP的引腳特性和上述時序分析,設(shè)計了如圖4的接口電路,。
5402作為主機通過Mcbsp0的時鐘輸出引腳BCLKX0給MAX1270提供串行時鐘,,通過幀輸出引腳BFSX0選通MAX1270,通過BDX0引腳寫入控制字,。同時,,通過BDR0引腳接收轉(zhuǎn)換結(jié)果,并把BCLKR1設(shè)置成通用I/O與MAX1270的SSTRB引腳相連,,通過查詢此引腳的狀態(tài)來判斷轉(zhuǎn)換是否完成,。
由于5402的I/O管腳電壓為3.3V,而MAX1270的I/O管腳電壓則為5V,,因此在MAX1270向5402傳輸?shù)姆较蛏霞恿艘黄娖睫D(zhuǎn)換芯片74LVC4245A,,把5V的TTL電平轉(zhuǎn)換成3.3V的TTL電平,以避免5402無法承受高于3.3V的電壓而燒毀芯片,。
3.3 軟件設(shè)計
軟件設(shè)計分為初始化和數(shù)據(jù)傳輸兩大部分,。
初始化部分包括5402的初始化和McBSP的初始化,其中5402的初始化是對系統(tǒng)上電復(fù)位后對DSP的整個工作壞境的基本設(shè)置,,包括對系統(tǒng)時鐘、處理器工作方式、存儲器分配,、中斷,、外設(shè)等待狀態(tài)等的設(shè)置。而對McBSP的初始化則是軟件設(shè)計的核心,,其步驟如下:
(1)禁止McBSP0發(fā)送器發(fā)送,,接收器接收。
(2)設(shè)置5402為SPI主機模式,,串行時鐘采用5402主時鐘的50分頻,,在時鐘的上升沿接收數(shù)據(jù),在時鐘的下降沿發(fā)送數(shù)據(jù),,接收數(shù)據(jù)為右對齊高位補零格式,。
(3)設(shè)置每個幀信號由DXR(數(shù)據(jù)發(fā)送寄存器)向XSR(發(fā)送移位寄存器)復(fù)制數(shù)據(jù)時產(chǎn)生,接收和發(fā)送都為單項幀,,每幀一個數(shù),,每個數(shù)16位。
(4)使能McBSP0接收器,,發(fā)送器,。
(5)等待兩個時鐘周期,保證內(nèi)部信號同步,,接收器和發(fā)送器激活[1],。
數(shù)據(jù)傳輸部分完成控制字的寫入和轉(zhuǎn)換結(jié)果的保存,其步驟如下:
(1)向DXR中寫入控制字,,查詢發(fā)送控制字狀態(tài),,確認發(fā)送完成。
(2)查詢SSTRB狀態(tài),,確認轉(zhuǎn)換完成,。
(3)查詢接收控制字狀態(tài),確認接收完成,,從DRR中讀出轉(zhuǎn)換結(jié)果,。
(4)循環(huán)執(zhí)行上述步驟。
軟件基本流程如圖5所示,。
3.4 實驗結(jié)果
圖6為采集由信號發(fā)生器產(chǎn)生的1kHz的正弦波的結(jié)果,。其中橫坐標為連續(xù)時間段內(nèi)采集數(shù)據(jù)的序號,縱坐標為轉(zhuǎn)換后的數(shù)字量結(jié)果,。由圖可以看出,,采集的數(shù)字量很好地復(fù)現(xiàn)了模擬電壓波形。而實際上,,圖中一個周期的正弦波之間是43個點,,說明了對于1kHZ的正弦波,,每周期采樣43次,由此可知采樣率達到了43kHz,。這與MAX1270內(nèi)部時鐘工作模式的最大采樣率完全一致,,而且可以實現(xiàn)雙極性采樣,證明了本設(shè)計在實踐中是可行的,。
本文詳細介紹了MAX1270與TI公司的16位高性能定點DSP TMS320C5402之間的SPI接口設(shè)計和編程實現(xiàn),。實現(xiàn)了MAX1270真正的SPI接口,并達到了最大內(nèi)部轉(zhuǎn)換速率43kHz,?;赟PI接口的特點使得電路設(shè)計十分簡潔,軟件編程采用C語言完成,,通俗易懂且可移植性強,,已經(jīng)應(yīng)用在光柵信號的采集、細分與辯向系統(tǒng)中,,有一定的實用性,。
參考文獻
[1] 張勇.C/C++語言硬件程序設(shè)計[M].西安:西安電子科技大學出版社,2003.
[2] MAXIM Corp,,MAX1270/MAX1271 Data Sheet[Z],,2004.
[3] 汪安民,陳明欣,,朱明.TMS320C54xx實用技術(shù)[M].北京:清華大學出版社,,2007.