- 相關推薦
DSP與單片機通信的多種方案設計
摘 要:基于嵌入式系統發展的需要,提出TMS320VC5402 DSP與AT89C51單片機通信的三種設計方案。利用TMS320VC5402的多通道緩沖串口MCBSP分別實現TMS320VC5402與AT89C51的SCI和SPI串行通信,以及通過TMS320VC5402的8位增強主機接口HPI一8實現TMS320VC5402與AT89C5l并行通信。就硬件接口電路和軟件編程進行詳細的闡述。
關鍵詞:單片機 DSP MCBSP HPI
將DSP和單片機構成雙CPU處理器平臺,可以充分利用DSP對大容量數據和復雜算法的處理能力,以及單片機接口的控制能力。而DSP與單片機之間快速正確的通信是構建雙CPU處理器的關鍵問題。下面就此問題分別設計串行SCI、SPI和并行HPI三種連接方式。
1 串行通信設計與實現
1 1 SCI串行通信設計
1.1.1 多通道緩沖串行口McBSP原理
TMS320VC5402(簡稱VC5402)提供了2個支持高速、全雙工、帶緩沖、多種數據格式等優點的多通道緩沖串行口McBSP。MCESP分為數據通路和控制通路。①數據通路負責完成數據的收發。CPU或DMAC能夠向數據發送寄存器DXR寫入數據,DXR中的數據通過發送移位寄存器XSR輸出到DX引腳。DR引腳接收數據到接收移位寄存器RSR,再復制到接收緩沖寄存器RBR,最后復制到數據接收寄存器DRR。這兩種數據多級緩沖方式使得數據搬移和片外數據通信能夠同時進行。②控制通路負責內部時鐘產生,幀同步信號產生,信號控制和多通道選擇。另外.還具有向CPU發送中斷信號和向DMAC發送同步事件的功能。MCBSP時鐘和幀同步信號通過CLKR、CLKX、FXR、FSX引腳進行控制,接收器和發送器可以相互獨立地選擇外部時鐘和幀同步信號,也可以選擇由內部采樣率發生器產生時鐘和幀同步信號。幀同步脈沖有效表示傳輸的開始。
1.1.2 SCI串行接口設計
設置VC5402的McRSP輸出時鐘和幀同步信號由內部采樣率發生器產生,內部數據時鐘CLKG和幀同步信號FSG驅動發送時鐘CLKX和幀同步FSX(CLKXM=l,FSXM=l,FSGM=1),輸入時鐘也由內部采樣率發生器產生,內部數據時鐘CLKG驅動接收時鐘CLKR(CLKRM=1),同時由CPU時鐘驅動采樣率發生器(CLKSM=1)。考慮到AT89C51(簡稱C51)串口發送數據幀中第l位為起始位,因此可以利用該位驅動輸入幀同步信號FSR,同時要置忽略幀同步信號標志為1。其中FSG幀同步脈沖寬度=(FWID 1)·CLKG;FSG幀同步脈沖周期=(FPER 1)·CLKG;采樣率發生器分頻系數(采樣率=波特率)=FIN/(CLKGDV 1)。
SCI串口連接如圖l所示。
1.1.3 波特率不一致的處理
VC5402初始化(以圖1為例):
STM#SRGRl,SPSAl
STM#ooFEH,SPSDl;FSG幀同步脈沖寬度位為1個CLKG
;波特率為100 MHz/(0X(OFF)=392 156 b/s
STM#SRGR2,SPSAl
STM#3D00H,SPSDl;內部采樣率發生器時鐘由CPU驅動
C51初始化:
MOV TMOD,#20H
MOVTLl,#FFH
MOVTHl,#FFH ;C51波特率=(2SMOD/32)*(fosc/12)一24 509 b/s
MOV SCON,#50H ;置串口方式l,每一幀10位數據.允許接收
MOV PCON,#80H ;設置SMOD=1
VC5402波特率/C51波特率=(392 156/24 509)=16.000 49
VC5402每發送16位數據,C51只采樣1位數據。在VC5402存儲器中開辟一個空間對每次發送的8位數據進行擴展,1位擴為16位,0為0000H,l為FFFFH,共擴為128位。在數據頭部填加16位起始位0000H,數據尾部填加停止位FFFFH。在VC5402發送控制寄存器XCR中設置XWDLEN=000(1字含8位),即可將要發送的8位數據封裝成1幀10字的數據。這也符合C51串口1方式下1幀10位的數據格式。C51以1/16的VC5402采樣速率接收數據,0000H采樣為0,FFFFH采樣為1,由此可以將接收到的200位恢復為8位數據,停止位進入RB8。
C51每發送1位數據,VC5402要采樣為16位數據。C51一次發送的10位數據的起始位觸發VC5402的接收幀同步。由于VC5402以16倍C51的采樣速率接收數據,1位采樣為16位,0采樣為0000H,1采樣為FFFFH.只采樣發送來的10位中的前9位,9位封裝成144位,即接收的1幀數據完成。VC5402將收到的144位數據在開辟的存儲器空間存放,拋棄前16位,在剩下的128位里分成8組,每組16位。比較其中間的8位,若有4位以上為1,則該16位為1,反之則為0。由此將接收到的144位恢復為8位數據。
為了不讓CPU頻繁地被數據接收和發送打斷,將DMA和MCBSP聯合使用來控制數據的接收和發送。RRDY直接驅動MCBSP向DMAC接收數據事件(REVENT事件),XRDY直接驅動MCBSP向DMAC發送數據事件(XEVENT事件)。
SCI通信協議如圖2所示
1. 2 SPI串行通信設計
將C51置為主機,VC5402為從機。McBSP的時鐘停止模式(CLKSTP=1X)兼容SPI模式,接收部分和發送部分內部同步。McBSP可以作為SPI的從機或主機。發送時鐘BCLKX作為SPI協議的移位時鐘SCK使用,發送幀同步信號BFSX作為從機使能信號nSS使用,接收時鐘BCLKR和接收幀同步信號BFSR不使用。它們在內部分別與BCLKX和BFSX直接連接。BDX作為MISO,而BDR作為MOSI,發送和接收具有相同字長。
C51中的并口P1.1和P1.2作為擴展串行SPI輸人輸出口與VC5402連接,P1.0作為串行時鐘輸出口,P1.3作為幀同步信號輸出口_。
SPI串口連接如圖3所示。
VC5402初始化程序(以圖3為例):
STM#SPCRll,SPSAl;設置時鐘停止位進入MCBSP的SPI模式
STM#0X1000,SPSDl;時鐘開始于上升沿(無延遲)
STM#SPCRl2,SPSAl
STM#0X0040,SPSDl;XINT由XRDY(即字尾)驅動
STM#PCRl,SPSAl
STM#0X000C,SPSDl;對發送和接收時鐘,同步幀進行設置
STM#RCRll.SPSAl
STM#0X0000,SPSDl;接收數據l幀1字.1字8位
STM#XCRll,SPSAl
STM#0X0000,SPSDl;;發送數據1幀1字.1字8位;
P1.0發送到VC5402的移位時鐘是保證DSP正確采樣接收和發送數據的時鐘。它要保證和C51的采樣接收和發送數據的時鐘一致.才能使主從機同步。
下一頁
【DSP與單片機通信的多種方案設計】相關文章:
DSP與單片機的一種高速通信實現方案03-18
基于 DSP 的網絡通信程序設計03-20
單片機通信性能分析和評價方法03-18
用PComm開發PC機與單片機的通信程序03-19
在VC 中用ActiveX控件實現與單片機的串行通信03-19
一種用于單片機的紅外串行通信接口03-18
TMS320C54XX系列DSP與PC機間串行通信的實現03-18
定點DSP的準確計時03-18
MAX517與單片機的I2C總線數據通信03-18