圖1 通過(guò)HPI 可以訪問(wèn)的DSP 存儲(chǔ)區(qū)圖
CS89712 與C5510 DSP 的接口設(shè)計(jì)
硬件連線
TMS320VC5510 與CS89712 連接的接口電路如圖3 所示。由圖2 可見(jiàn),C5510 通過(guò)EHPI 與主機(jī)設(shè)備相連時(shí),除了EHPI 數(shù)據(jù)總線及控制信號(hào)線外,不需要附加其它的邏輯電路,非常方便。
圖2 EHPI接口非復(fù)用模式下的連接圖
從EHPI 寄存器的編址方式可以看出,將HPI16接口安排在CS89712 的BANK3(即地址范圍0X03000000~0X03FFFFFF),而且CS89712 具有內(nèi)部譯碼器,直接產(chǎn)生片選信號(hào)CS3。
由于C55X HPI16 是一個(gè)16 位的并行端口,而C5510 的內(nèi)部結(jié)構(gòu)為16 位,所以在非復(fù)用模式下,只需將數(shù)據(jù)和地址總線分別連接即可。
另外,還有幾個(gè)關(guān)鍵的控制信號(hào)需要連接。一個(gè)就是HR/W信號(hào),由于CS89712 沒(méi)有此信號(hào),使用端口A 的PA3 來(lái)代替。當(dāng)PA3=1 時(shí),代表讀操作,反之為寫(xiě)操作。
由于CS89712 和C5510 EHPI 接口的控制邏輯不盡相同,需要使用其它的一些信號(hào)線來(lái)進(jìn)行模擬,此時(shí)要嚴(yán)格遵循EHPI 的讀寫(xiě)時(shí)序。
軟件設(shè)計(jì)
在硬件連接設(shè)計(jì)好的基礎(chǔ)上,我們還需要通過(guò)正確的編程才能實(shí)現(xiàn)我們預(yù)想的時(shí)序。因?yàn)槲覀冊(cè)贏RM CS89712 上運(yùn)行嵌入式操作系統(tǒng)uCOS-II ,所以在寫(xiě)程序?qū)PI 接口進(jìn)行讀/寫(xiě)操作時(shí)將HPI 接口看作一個(gè)外部設(shè)備,將完成讀/寫(xiě)操作的程序看成在uCOS-II 下面的一個(gè)字符型驅(qū)動(dòng)。這樣軟件的設(shè)計(jì)就變成了在uCOS-II 下面驅(qū)動(dòng)程序的開(kāi)發(fā)??紤]到CS89712 不光要將DSP 的數(shù)據(jù)取過(guò)來(lái),而且還要將這些數(shù)據(jù)處理后再發(fā)送出去,這就需要這兩者之間有很好的配合。
CS89712 與DSP5510 之間的EHPI 接口讀/寫(xiě)程序主要由兩個(gè)部分組成: 11ARM 自身的初始化;21HPI 接口讀寫(xiě)程序。
ARM 處理器自身的初始化
ARM處理器首先要完成自身工作模式等一系列的初始化,才能正常進(jìn)行EHPI 接口的讀/寫(xiě),源代碼如下所示。
//為了配合EHPI 口的時(shí)序,關(guān)掉MMU 頁(yè)表中
bank3 的Cache
Xcount SETA 0x30000c1e
WHILE Xcount < 0x31000000
DCD Xcount
Xcount SETA Xcount + 0x00100000
WEND
rMEMCFG1&=0x00ffffff;//設(shè)置與DSP 連接的nCS3 :16 位總線寬度、8 個(gè)隨機(jī)狀態(tài)
rMEMCFG1|=0x01000000;//3 個(gè)順序等待狀態(tài)、禁止順序訪問(wèn)、禁止擴(kuò)展時(shí)鐘上面這段代碼主要是對(duì)幾個(gè)寄存器進(jìn)行配置。
在配置好ARM 處理器的工作模式后,對(duì)外部I/O 接口BANK3 的對(duì)應(yīng)地址進(jìn)行讀/寫(xiě)操作,就可以完成對(duì)HPI 接口的相應(yīng)操作了。
HPI 接口讀寫(xiě)程序
以下的第一句代碼是宏定義,定義了C5510 的EHPI 接口寄存器的地址。在本設(shè)計(jì)中,已經(jīng)將HPI口與外部I/O 接口的BANK3 相接,這樣HPI 口將占用外部I/O 接口BANK3 的地址。由于是使用PA3來(lái)模擬HPI16 接口的HR/W,所以對(duì)DSP 進(jìn)行讀/寫(xiě)操作時(shí), 應(yīng)先將該信號(hào)置為相應(yīng)的讀/寫(xiě)有效狀態(tài)。
//ARM向DSP 寫(xiě)數(shù)據(jù)時(shí)
# define EHPI-BASE 0x3208000
int t ;
rPADDR=0x08 ; //PA3 方向定義為輸出
rPADR=0x00 ; //PA3 為低電平
t=*(volatile U16* )( EHPI-BASE + Add-offset);//ARM從DSP 讀取數(shù)據(jù)時(shí)
rPADDR=0x08 ; //PA3 方向定義為輸出
rPADR=0x08 ; //PA3 為高電平
(volatile U16*)( EHPI-BASE+Add-offset)=t
結(jié)束語(yǔ)
以ARM芯片作為主控制器,用DSP 芯片進(jìn)行運(yùn)算,然后通過(guò)HPI 接口進(jìn)行通信和交換數(shù)據(jù)的嵌入式系統(tǒng)設(shè)計(jì)應(yīng)用模式的得到越來(lái)越廣泛的應(yīng)用,而這兩者之間能夠高效、快速并且穩(wěn)定的進(jìn)行數(shù)據(jù)交換將是影響系統(tǒng)性能的關(guān)鍵部分之一。文中給出的CS89712 和C5510 之間的硬件連接方法和軟件設(shè)計(jì)經(jīng)過(guò)實(shí)踐的驗(yàn)證,是可行的和滿(mǎn)足要求的。
物聯(lián)網(wǎng)正在擴(kuò)大規(guī)模并加速發(fā)展,進(jìn)而驅(qū)動(dòng)著全新的經(jīng)濟(jì)。而Arm生態(tài)系統(tǒng)正是這一巨大機(jī)遇背后的推動(dòng)力。
關(guān)鍵字: ARM 物聯(lián)網(wǎng)ARM公司是一家知識(shí)產(chǎn)權(quán)(IP)供應(yīng)商,它與一般的半導(dǎo)體公司最大的不同就是不制造芯片且不向終端用戶(hù)出售芯片,而是通過(guò)轉(zhuǎn)讓設(shè)計(jì)方案,由合作伙伴生產(chǎn)出各具特色的芯片。
關(guān)鍵字: ARMLinux內(nèi)核是從V2.6開(kāi)始引入設(shè)備樹(shù)的概念,其起源于OF:OpenFirmware, 用于描述一個(gè)硬件平臺(tái)的硬件資源信息,這些信息包括:CPU的數(shù)量和類(lèi)別、內(nèi)存基地址和大小、總線和橋、外設(shè)連接、中斷控制器和中斷使用情...
關(guān)鍵字: Linux內(nèi)核 硬件 CPU