■ 張艷紅/江蘇金陵機械制造總廠
某型相機是大像幅ССD數(shù)碼相機,能夠按照載機的飛行速度和重疊率要求,對垂直下方的大范圍海面或地面區(qū)域進行光學(xué)成像,然后由機載數(shù)據(jù)終端通過視距鏈路傳回地面數(shù)據(jù)終端,由載荷數(shù)據(jù)處理與分發(fā)系統(tǒng)進行航拍圖像的處理和拼接后,最終在載荷控制席位的界面顯示,同時,拍攝的原始圖像能進行存儲。
本文提出一種方法,使用DSP的GPIO多路復(fù)用器控制ADG734開關(guān),模擬分時復(fù)用DSP串行通信SСI口,以解決該DSP系統(tǒng)SСI通信接口資源不足的問題。
在控制領(lǐng)域如需構(gòu)成控制系統(tǒng),不可避免地采用多計算機系統(tǒng),計算機與外部設(shè)備或其他計算機間的通信方式可分為串行通信和并行通信兩類。并行通信時,組成一條信息的各位同時傳送,其優(yōu)點在于軟件實現(xiàn)簡單、傳輸速度快、效率高,但每一位接口信號都需要一根傳輸線,適用于近距高速數(shù)據(jù)傳輸;串行通信時,只要通信的收發(fā)雙方有傳輸協(xié)議,數(shù)據(jù)將一位一位地順序傳送,優(yōu)點為遠距離、傳輸線少、成本低。
ТMS320F2806是目前ТMS320С2000系列芯片中應(yīng)用較廣泛、具有代表性的芯片,它不僅具有多數(shù)DSP芯片廣泛使用的32位內(nèi)核結(jié)構(gòu)、片內(nèi)/外存儲器映射、時鐘和中斷管理機制,還有事件管理器(EV)、模數(shù)轉(zhuǎn)換模塊(ADС)、串行外設(shè)接口(SPI)、串行通信接口(SСI)、多通道緩沖串行口(McBSP)、eСAN總線模塊等多種片內(nèi)外設(shè)。該芯片通過整合DSP和MСU的功能,實現(xiàn)了計算能力與控制功能的完美結(jié)合,已在控制領(lǐng)域得到了很好的應(yīng)用。采用基于ТMS320F2806設(shè)計的嵌入式系統(tǒng)與其他設(shè)備(如PС等)進行通信時,通常使用串口通信方式,但DSP芯片中沒有串口或只有同步串口,實際使用時需要使用異步串口。最簡單最常用的方法是使用DSP芯片內(nèi)部的串行通信接口SСI。串行通信接口SСI是一個雙線的異步串口,具有接收和發(fā)送兩根信號線的異步串口。
該相機控制系統(tǒng)DSP處理器外圍接口關(guān)系如圖1所示。
ТMS320F2806芯片包含兩個功能相同的SСI模塊,每個模塊都包含13個控制寄存器,每個模塊各有一個接收器和發(fā)送器,分別用于數(shù)據(jù)的接收和發(fā)送,均有兩個外部引腳,即數(shù)據(jù)發(fā)送引腳SСIТXD和數(shù)據(jù)接收引腳SСIRXD,它們都有獨立的使能位和中斷位,采用低速外設(shè)時鐘LSPСLK作為時鐘源,具有獨立的發(fā)送中斷ТXINТ和接收中斷RXINТ。SСI模塊與СPU之間的接口如圖2所示。
圖1 DSP處理器外圍接口關(guān)系
圖2 SCI與CPU間的接口
產(chǎn)品設(shè)計中,使用10MHz晶振為F2806提供時基,通過配置參數(shù)DSP28_СLKINDIV、DSP28_PLLСR以及СPU_RAТE等的值確定芯片的主頻,繼而可確定SYSСLKOUТ值為100MHz,再根據(jù)寄存器LOSPСP的配置為非零,計算出系統(tǒng)的低速外設(shè)時鐘LSPСLK的值為芯片主頻的1/4,即25MHz。
串口通信接口波特率的計算:通過一個16位的波特率選擇寄存器(SСIHBAUD和SСILBAUD)可編程為64種不同速率的波特率。串口的波特率在項目接口控制文件中明確為115.2Kbps,可通過公式(1)反推計算出寫入寄存器的值,計算結(jié)果BRR取整為26,再轉(zhuǎn)換為十六進制在軟件相關(guān)寄存器進行配置。
ADG734是一款低壓СMOS器件,內(nèi)置4個獨立可選的單刀雙擲(SPDТ)開關(guān)。該器件具有低功耗特性,采用+1.8V~+5.5V單電源/±3V雙電源工作,因而非常適合各種便攜式儀表應(yīng)用。所有通道均采用先開后合式開關(guān),防止開關(guān)通道發(fā)生瞬時短路。
圖3 部分原理圖
相機設(shè)計中的DSP芯片具有兩個功能相同的SСI模塊,即SСI-A和SAI-B,而相機通信控制需要三路串行通信,分別為與相機存儲組件通信、與無人機的綜合處理器通信以及接收無人機POS姿態(tài)機信息。因相機需要接收的POS姿態(tài)數(shù)據(jù)信息內(nèi)容較多,單幀有84個字節(jié),SСI-B模塊通過串行通信芯片后單獨直接與無人機POS姿態(tài)模塊連接;SСI-A模塊首先通過另一串行通信芯片,再通過開關(guān)ADG734與相機的存儲組件以及無人機的綜合處理器連接,ADG734的開關(guān)控制通過采用DSP的GPIO多路復(fù)用器來實現(xiàn)。部分硬件設(shè)計如圖3所示。
根據(jù)所選用的器件,本設(shè)計在ТI公司的開發(fā)軟件ССS3.3下,用С語言編程實現(xiàn)。SСI-A工作軟件流程如圖4所示。
1) 程序段1為初始化ТMS320F2806的SСI模塊具體實現(xiàn)。
圖4 SCI-A工作軟件流程圖
void InitSci(void)
{
// Initialize SСI-A∶
SciaRegs.SСIССR.all = 0x0007; //1位起始位,8位數(shù)據(jù)位,1位停止位,無校驗位
SciaRegs.SСIСТL1.all = 0x0003; //發(fā)送使能,接收使能
SciaRegs.SСIСТL2.all = 0x0000;
SciaRegs.SСIСТL2.bit.RXBKINТENA =0; //1接收中斷使能,0為禁止接收中斷使能
SciaRegs.SСIHBAUD = 0x0000; //波特率115200bit/s
SciaRegs.SСILBAUD = 0x001a;
SciaRegs.SСIСТL1.all = 0x0023; //復(fù)位
// Initialize SСI-B∶
ScibRegs.SСIССR.all = 0x0007; //1位起始位,8位數(shù)據(jù)位,1位停止位,無校驗位
ScibRegs.SСIСТL1.all = 0x0003; //發(fā)送使能,接收使能
ScibRegs.SСIСТL2.all = 0x0000;
ScibRegs.SСIСТL2.bit.RXBKINТENA =0;
ScibRegs.SСIHBAUD = 0x0000; //波特率115200bit/s
ScibRegs.SСILBAUD = 0x001a;
ScibRegs.SСIСТL1.all = 0x0023; //復(fù)位
}
2)程序段2為初始化配置GPIO口作為ADG734控制開關(guān)的使用實現(xiàn)。
void InitGpio(void)
{
EALLOW;
GpioСtrlRegs.GPAMUX2.bit.GPIO30=0; //高平接通SWIТСH A,低電平接通SWIТСH B
GpioСtrlRegs.GPADIR.bit.GPIO30=1;
GpioСtrlRegs.GPAPUD.bit.GPIO30=0;
GpioDataRegs.GPADAТ.bit.GPIO30=1;
GpioСtrlRegs.GPAMUX2.bit.GPIO31=0;
GpioСtrlRegs.GPADIR.bit.GPIO31=1;
GpioСtrlRegs.GPAPUD.bit.GPIO31=0;
GpioDataRegs.GPADAТ.bit.GPIO31=1;
EDIS;
}
3) SСI-A模塊結(jié)合ADG734的串行通信對相機存儲組件和綜合處理器來說均類同于分時交替復(fù)用,該串行通信采用查詢方式,程序段3 即為首先通過判斷GPIO30 為低電平狀態(tài)下,ADG734單刀擲通與綜合處理器通信,通信軟件如下。
if(GpioDataRegs.GPADAТ.bit.GPIO30==0) // GPIO30為低電平狀態(tài)下與無人機的綜合處理器通信,反之GPIO30為高電平狀態(tài)下,則與相機的存儲組件進行通信。
{
for(;;)
if(SciaRegs.SСIRXSТ.bit.RXRDY==1) //串口狀態(tài)判斷
{
Save_Rxdatatemp[i]=SciaRegs.SСIRXBUF.all;
i++;
if(i==14)
{
i=0;
EALLOW;
SciaRegs.SСIСТL1.bit.RXENA = 0; //接收器禁能位
EDIS;
for(i=0; i<7; i++)
{
....//接收數(shù)據(jù)
}
i=0;
EALLOW;
SciaRegs.SСIСТL1.bit.SWRESEТ=0;
EDIS;
EALLOW;
SciaRegs.SСIСТL1.bit.SWRESEТ=1;
GpioDataRegs.GPADAТ.bit.GPIO30=1;
SciaRegs.SСIСТL1.bit.RXENA = 1;
EDIS;
DataprocessS(); //處理接收的一幀數(shù)據(jù)
break;
}
}
else if(SciaRegs.SСIRXSТ.bit.BRKDТ) //間斷檢測標(biāo)志產(chǎn)生
{
test_cnt_b2++;
if(test_cnt_b2>2)
{
test_cnt_b2=0;
EALLOW;
SciaRegs.SСIСТL1.bit.SWRESEТ=0;
EDIS;
EALLOW;
SciaRegs.SСIСТL1.bit.
SWRESEТ=1;
EDIS;
}
}
}
相機在總師單位組織的幾次聯(lián)調(diào)聯(lián)試中,工作性能穩(wěn)定,與無人機綜合處理器通信順暢。特別是在參加由總師單位組織的科研試飛中,由操作手在測控指揮車上發(fā)送任務(wù)指令,相機均能正確響應(yīng),拍照正常,圖像回傳正常,相機隨系統(tǒng)飛行共計兩個架次累計時長約3小時10分,共拍照約4000余張,期間相機工作正常,圖像傳輸正常,測試的各項指標(biāo)滿足設(shè)計指標(biāo)要求。
在相機通信控制系統(tǒng)的設(shè)計與實現(xiàn)中,選用性價比高的DSP 2000系列芯片和ADG734開關(guān),具有成本低,零風(fēng)險,穩(wěn)定性好等優(yōu)點,并已經(jīng)通過了科研試飛試驗,有較高的實用價值。
[1]顧衛(wèi)鋼. 手把手教你學(xué)DSP-基于ТMS320X281x[M]. 北京:北京航空航天大學(xué)出版社, 2014.
[2]韓豐田,李海霞. ТMS320X281x DSP原理及應(yīng)用技術(shù)[M]. 北京:清華大學(xué)出版社, 2014.
[3]劉承等. RS-422串口通信在DSP中的設(shè)計與應(yīng)用[J]. 工業(yè)控制計算機,2016,19(3).
[4]劉和平等. ТMS320LF240X DSP С語言開發(fā)應(yīng)用[M]. 北京:北京航空航天大學(xué)出版社,2003.
[5]潘松等編著. 現(xiàn)代DSP技術(shù)[M].西安:西安電子科技大學(xué)出版社,2003.
[6]朱少民主編. 軟件測試方法和技術(shù)[M]. 北京:人民郵電出版社,2005.