李勝勇(廈門蒙發利科技(集團)股份有限公司,福建廈門 361008)
?
TMS320VC5416與單片機AT89C51通信設計
李勝勇
(廈門蒙發利科技(集團)股份有限公司,福建廈門361008)
摘要:給出了一種實現DSP TMS320VC5416與單片機AT89C51通信設計的方法,在分析TMS320VC5416串行口特點和AT89C51串行通訊的基礎上,進行TMS320VC5416與AT89C51串行通信設計,提出了電平匹配,通信協議匹配和波特率匹配的方法,該方法對實現DSP與AT89C51的通訊具有指導意義。最后給出了部分程序流程和實現方法。
關鍵詞:單片機;DSP;串行通訊;程序設計
隨著家電性能的不斷提高,數據處理的也越來越多,對處理速度的要求也越來越高,原有以MCU為核心的系統,逐漸不能滿足要求,因此,具有高速處理數據的DSP芯片,逐漸開始應用。而通過DSP處理的數據往往需要傳輸給MCU進行運動控制,所以,DSP與MCU的通信設計就成為各種家電產品必須的技術要求。
TMS320VC5416 DSP是TI公司的一款高性能16位定點DSP,具有的McBSP,即多通道緩沖串口能夠與同步通信串口外部設備進行通信。但對于AT89C51單片機來說,并無同步通信接口,所以當320VC5416使用McBSP串口與AT89C51通信時,將McBSP串口進行一定擴展硬件的情況下,將同步變為異步進行通信,充分利用DSP片上資源,硬件系統簡化可行。
TMS320VC5416具有3個全雙工、多通道、高速緩存串行口,每個串行口最大可以支持128通道。McBSP支持SPI協議,它的主要特點是:(1)可全雙工串行通訊;(2)最大可選擇32位數據寬度,允許傳輸連續數據流;(3)幀同步信號可以為數據發送和接收提供獨立支持。圖1所示為McBSP的內部結構[1]。
其結構由控制通路和數據通路兩部分組成,并有7個引腳可以連接外部器件。接收引腳DR,通過數據總線以接收數據;發送引腳DX,與McBSP相連接發送數據;接收幀的同步引腳為FSR,發送幀的同步引腳為FSX;接收時鐘引腳為CLKX;在時鐘信號和幀同步信號的控制下,外部器件與發送DX引腳和接收DR引腳直接通信。對McBSP的操作,內部CPU通過16位控制寄存器,以片內外設總線訪問控制,McBSP接口信號如表1所示[2]。

圖1 McBSP內部結構

表1 McBSP接口信號
產生幀同步信號和產生內部時鐘,控制此類信號和選擇多通道等構成了控制通道任務。由控制通道產生的中斷信號發送給CPU,DMA控制器接收同步事件通知,如表2所示[3]。
McBSP有兩種工作模式:第一種工作模式中,當(R/X)MC?ME=0時,類似于在5410,MCB?SP正常32位通道默認選擇。第二種工作模式中,當(R/X) MCME=1時,它擁有128通道選擇能力。多通道控制寄存器的位9,即(R/X)MCME,被用作128通道選擇是能位。一旦(R/X)MCME=1,12個新的寄存器被用作控制128通道。MCBSP中的時鐘停止模式提供了串行口兼容協議。時鐘停止模式工作時,每幀只有單一圖像或字節。MCBSP提供的字節可編程位8,12,16,20,24或32位。當MCBSP設置工作在SPI模式時傳送器和接收器一起工作在主或從存儲器。雖然BCLKS管腳在PGE和GGU沒有封裝,但是芯片仍能夠同步到外部時鐘源。BCLKX或者BCLKR可以當作外部同步的頻率采集器。為了適應這種選擇頻率采樣時鐘模式擴展出來的位于PCR上。

表2 McBSP CPU中斷和DMA同步事件
AT89C51具有的數據通信方式為串行和并行。并行通信方式是多位數據同時傳送的通信。其特點是速度快,但傳輸距離短,占用單片機I/O口過多的缺點。串行通信是指數據一位一位順序傳送的通信方式,它只需要一對數據線,具有傳輸距離遠,存在數據傳送速度低的缺點。這兩種通信方式示意如圖2所示[4-5]。
串行通信有兩種基本通信方式,即異步通信和同步通信,其傳輸方式又分為單工、半雙工和全雙工方式。

圖2 兩種通信方式
AT89C51單片機具有可編程的全雙工通用異步接收/發送器(UART),可用于串行通信,由TxD(P3.1)腳發送數據,由RxD(P3.0)腳接收數據。串行口的數據發送和接收操作都是通過特殊功能寄存器中的數據緩沖寄存器SBUF進行的,兩個數據緩沖器SBUF是獨立的,一個用于接收,一個用于發送,它們的地址都是99H,對發送緩沖器寫以實現發送,對接收緩沖器讀以實現接收。接收緩沖器是雙緩沖的,以避免接收的前后兩幀數據重疊問題,AT89C51的串行通信口有4種工作方式,分別是0~4方式,0方式用于I/O擴展或同步傳輸,由串行口控制寄存器SCON中的選擇位來確定選用的工作方式。1方式主要進行定義串行通信的為8位異步通信串口。一幀信號的長度為10位:包括低電平的起始位1位,數據位8位,低位在先,高電平停止位1位。波特率可變。
(1)TMS320VC5416與AT89C51電平問題
TMS320VC5416的I/O引腳的邏輯電平是3.3 V,而AT89C51采用5 V邏輯電平。320VC5416最小輸出高電平為2.4 V,而89C51最小輸入高電平為2.0 V。因此AT89C51的輸入能夠直接連接到320VC5416的輸出。但是320VC5416輸入最大高電平是3.6 V,而89C51的高電平輸出一般都超過4.6 V。所以AT89C51的輸出和320VC5416的輸入在電平轉換后,才能連接。對于引腳多的芯片,采用專用電平轉換芯片,如TI 74LVC16245A是較好的選擇。采用分壓電阻進行轉換,可以簡化設計。連接如圖3所示。

圖3 TMS320VC5416與AT89C51串口連接
(2)串口協議
如圖3所示,時鐘信號并沒有在通路中顯示,由AT89C51的低速串行口與TMS320VC5416的高速McBSP端口不匹配,將McBSP傳輸多個位合并成AT89C51的一個位,這樣輸出/輸入速度一致。
在異步方式下AT89C51串行口的工作方式有4種。這里采用方式1,設置為8位異步通信口,每幀數據有10位:1位低電平起始位,數據位是8位,1位高電平停止位。在工作方式1下,串行口的89C51與C5416通信。發送數據時,C5416的McBSP端口首先對數據進行編碼如下:將數據的每位擴展成完全相同的16位,組成一個字,即“0”擴展成為“0000”,“1”擴展成為“FFFF”,這樣一個字的8位就被擴展成為8個具有相同16位的字。同樣,起始標志為16位0的數據“0000H”放在每幀的前面,結束標志的16位1的數據“FFFFH”放在每幀的后面。DSP的McBSP高速端口接收到數據之時,將接收的1個幀作為AT89C51數據的1個字節,設置接收數據格式是每幀為10個16位字。共計160個位。在接收到一幀的完整數據之后,C5416再根據前面設置的編碼規則解碼后,就可以得到正確的數據。
發送數據時,AT89C51執行指令寫入數據到SBUF,就啟動了發送串行數據,由TXD發送數據,發送一幀結束后,發送中斷標志TI被置位;接收數據過程中,AT89C51在RI中斷標志位為0的情況下,REN置位就啟動一幀接收數據的過程,并使數據進入移位寄存器,并加載到SBUF,同時置位RI。
AT89C51的數據傳輸是以低電平時鐘為起始位,在輸入時320VC5416的McBSP端口可用此低電平為320VC5416同步信號的輸入幀;在輸出時,由McBSP的采樣率發生器發生和輸出。
(3)波特率
上述論述中將320VC5416端口McBSP信號的一個16位字當作AT89C51的一個位,即AT89C51的一個位發送數據被320VC5416的McBSP讀16次,而320VC5416的McBSP的16位發送數據只被89C51讀1次,因此AT89C51波特率需等于320VC5416的McBSP的串行時鐘移位速率的十六分之一。
計算McBSP端口移位時鐘的速率可以采用以下公式:
頻率CLKG=時鐘頻率(發生器輸入)/(CLKDV+1)
(1)
CLKDV為寄存器SRGR1的D0到D7位。一般來說,AT89C51采用9 600 b/s波特率時,由式(1)得到:
CLKDV=時鐘頻率(發生器輸入)/頻率CLKG-1=時鐘頻率(發生器輸入)/(16×9600)-1
(2)
采樣率發生器可選兩種時鐘之一,一種為DSP輸入的外部時鐘CLKS,另外一種為CPU的時鐘。任何情況下,AT89C51工作的頻率比320VC5416的工作頻率低很多。后者的工作頻率以PLL鎖相環對CLKS進行倍頻獲得,通常在160 MHz以上。通常外部時鐘CLKS頻率比較低,以20 MHz為例,這個頻率依然比AT89C51工作的頻率高。若以CPU時鐘作為采樣率發生器的輸入,設定為160 MHz,代入式(2),結果是0x410,可以看出CLKDV是8位,由于結果12位而無法容納;而如果以CLKS作為其輸入,以20 MHz為例,代入式(2),得出結果是0x81,可以被CLKDV容納。這樣一來,在320VC5416與AT89C51高通信速率的情況下,采用CPU時鐘作為輸入采樣率發生器的時鐘比較合適。一般說來,通信速率沒有很高的要求,為了取得雙方的匹配的通信速率,輸入采樣率發生器的時鐘以采用頻率低的CLKS比較合適。
初始化TMS320VC5416:
STM #SRGR1,SPSA1
STM #00FEH,SPSD1;FSG幀同步脈沖寬度為1個CLKG,
;波特率為160MHz/(0x00FF)=627450 b/s
STM #SRGR2,SPSA1
STM #3000H,SPSD1;內部采樣率發生器時鐘由CPU驅動
AT89C51初始化:
MOV TMOD,#20H
MOV TL1,#FFH
MOV TH1,#FFH;C51波特率= (2SMOD/32)* (fosc/12)*(1/(256-initialization))=24509 b/s
MOV SCON,#50H;設置串口方式1,每幀10位數據,允許接收
MOV PCON< #80H;設置SMOD=1
為了避免發送和接收數據頻繁地打斷CPU的運行,以DMA和McBSP聯合使用的方式來操作數據的接收和發送。由RRDY信號驅動McBSP直接向DMAC REVENT事件、接收數據事件;由XRDY信號驅動McBSP直接向DMAC XEVENT事件、發送數據事件。
如圖4所示為SCI通信協議。

圖4 串口SCI通信協議流程
本文提出了TMS320VC5416與單片機AT89C51通信設計方法,對320VC5416多通道緩沖串行口McBSP特點進行闡述,在介紹AT89C51的串行通信特點的基礎上進行TMS320VC5416與AT89C51串行通信設計,充分考慮了電平匹配問題,通信協議和波特率匹配等方面的問題,最后給出了部分程序實現方法。
參考文獻:
[1]TMS320VC5416 Fixed-Point Digital Signal Processor Da?ta Manual[Z]. Texas Instruments,2008.
[2]Tai Nguyen. TMS320VC5402A / VC5409A / VC5410A / VC5416 Bootloader. Application Report SPRA602F [Z]. TEXAS INSTRUMENTS,2006.
[3]TMS320C54x DSP Reference Set Volume 5:Enhanced Peripherals[Z]. Texas Instruments,1999.
[4]Atmel 8051 Microcontrollers Hardware Manual[Z]. 2007.
[5]何立民.單片機應用系統設計[M].北京:北京航空航天大學出版社,1990.
[6]胡劍凌,徐盛.數字信號處理系統的應用和設計[M].上海:上海交通大學出版社,2003.
[7]TMS320C54x DSP Reference Set Volume 4:Applica?tions Guide[Z]. Texas Instruments,1996.
[8]羅大暉. TMS320VC5416與89C51的串行通信設計[J].常州信息職業技術學院院報,2007,6(3):28-30.
(編輯:向飛)
Communication Design for TMS320VC5416 and MCU AT89C51
LI Sheng-yong
(Xiamen Comfort Science & Technology Group Co.,Ltd,Xiamen361009,China)
Abstract:It is presented in this paper the realization of communication design method for DSP TMS320VC5416 and MCU AT89C51,on the basis of the analysis of characteristics of TMS320VC5416 serial port and 89C51 serial communication design,the communication design is proposed in this paper as well as the level match,communication protocol and baud rate match method,which has guiding significance to realize the communication of DSP and 89c51. The part procedure realization method is presented in the last.
Key words:MCU;DSP;serial communication;program design
作者簡介:李勝勇,男,1971年生,山東海陽人,博士,高級工程師。研究領域:數控技術、電子控制系統分析與設計及移動互聯網、云服務、智能家電控制技術等。已發表論文50篇。
收稿日期:2015-05-06
DOI:10. 3969 / j. issn. 1009-9492. 2015. 11. 022
中圖分類號:TP311.1
文獻標識碼:A
文章編號:1009-9492 ( 2015 ) 11-0081-04