<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > S3C44B0X與C54X DSP的接口設(shè)計

          S3C44B0X與C54X DSP的接口設(shè)計

          作者: 時間:2012-06-26 來源:網(wǎng)絡(luò) 收藏

          3.1.3:HDLC通道控制寄存器配置

          控制寄存器(HCON)控制HDLC通道工作情況,這里介紹常用的控制選項,詳細的內(nèi)容和配置方法請參閱4510數(shù)據(jù)手冊。

          1. 波特率產(chǎn)生/DPLL使能:如果使用了內(nèi)部的波特率產(chǎn)生器或者DPLL,為使它們工作,需要設(shè)置HDLC通道的控制寄存器中相應(yīng)位來啟動工作。

          2. 收發(fā)FIFO深度設(shè)置:當(dāng)使用CPU方式進行HDLC收發(fā)時,可設(shè)置收發(fā)FIFO深度。FIFO深度可設(shè)置為8字節(jié)/32字節(jié)。當(dāng)使用DMA方式時,此設(shè)置無效。

          3. DMA發(fā)送停止/跳過方式設(shè)置:使用DMA方式發(fā)送時,如果當(dāng)前使用的發(fā)送BUFFER描述符不屬于DMA所有,可根據(jù)此設(shè)置來停止DMA發(fā)送,或是跳到發(fā)送BUFFER描述符鏈表中的下一個描述符。

          4. DMA接收停止/跳過方式設(shè)置:使用DMA方式接收時,如果當(dāng)前使用的接收BUFFER描述符不屬于DMA所有,可根據(jù)此設(shè)置來停止DMA接收,或是跳到接收BUFFER描述符鏈表中的下一個描述符。

          5. 通道空閑標志模式設(shè)置:確定通道空閑時發(fā)送哪種空閑標志(全1或者0X7E)。

          6. Flag發(fā)送模式設(shè)置:確定幀分隔方式(單FLAG或者雙FLAG方式)。

          7. 收發(fā)CRC校驗設(shè)置:確定HDLC收發(fā)過程中是否進行CRC校驗。

          8. HDLC環(huán)回設(shè)置:用于HDLC環(huán)回測試,正常工作時HDLC環(huán)回應(yīng)打開。

          3.1.4:HDLC通道中斷控制寄存器(HINT)配置

          中斷控制寄存器(HINT)控制HDLC收發(fā)中斷的產(chǎn)生。共有24種中斷產(chǎn)生條件,這里介紹DMA方式收發(fā)時編程中用到的一些中斷產(chǎn)生條件。詳細內(nèi)容請參閱4510數(shù)據(jù)手冊。

          對于HDLC通道發(fā)送中斷:

          1. 發(fā)送FIFO下沖:此條件(TxUIE)當(dāng)發(fā)送FIFO產(chǎn)生下沖時發(fā)生。此時DMA發(fā)送被自動禁止,因此發(fā)送中斷處理程序中必須首先清除HDLC狀態(tài)寄存器(HSTAT)中的相應(yīng)位,然后在下次發(fā)送前使能DMA發(fā)送。

          2. DMA發(fā)送Abort:此條件(DTxABTIE)當(dāng)DMA發(fā)送放棄時產(chǎn)生,發(fā)送中斷處理程序中必須清除HDLC狀態(tài)寄存器(HSTAT)中的相應(yīng)位。

          3. DMA發(fā)送完畢:此條件(DTxFDIE)當(dāng)DMA發(fā)送完一幀時產(chǎn)生,發(fā)送中斷處理程序中必須清除HDLC狀態(tài)寄存器(HSTAT)中的相應(yīng)位。

          4. DMA發(fā)送BUFFER描述符指針空:此條件(DTxNLIE)當(dāng)當(dāng)前DMA發(fā)送BUFFER描述符中指向下一個描述符的指針為空時產(chǎn)生。發(fā)送中斷處理程序中必須清除HDLC狀態(tài)寄存器(HSTAT)中的相應(yīng)位。并重新初始化發(fā)送BUFFER描述符鏈表。

          5. DMA發(fā)送BUFFER描述符不屬于DMA所有:此條件(DTxNOIE)當(dāng)當(dāng)前DMA發(fā)送BUFFER描述符不屬于DMA所有時發(fā)生。發(fā)送中斷處理程序中必須清除HDLC狀態(tài)寄存器(HSTAT)中的相應(yīng)位。

          對于HDLC通道接收中斷:

          1. 接收Abort:此條件(RxABTIE)當(dāng)接收到Abort幀時產(chǎn)生,接收中斷處理程序中必須清除HDLC狀態(tài)寄存器(HSTAT)中的相應(yīng)位。

          2. DMA接收完畢:此條件(DRxFDIE)當(dāng)DMA接收到一個完整幀時發(fā)生,接收中斷處理程序中必須清除HDLC狀態(tài)寄存器(HSTAT)中的相應(yīng)位。

          3. DMA接收BUFFER描述符指針空:此條件(DRxNLIE)當(dāng)當(dāng)前DMA接收BUFFER描述符中指向下一個描述符的指針為空時產(chǎn)生。接收中斷處理程序中必須清除HDLC狀態(tài)寄存器(HSTAT)中的相應(yīng)位。并重新初始化接收BUFFER描述符鏈表。

          4. DMA接收BUFFER描述符不屬于DMA所有:此條件(DRxNOIE)當(dāng)當(dāng)前DMA接收BUFFER描述符不屬于DMA所有時發(fā)生。此時DMA接收被自動禁止。因此接收中斷處理程序中必須清除HDLC狀態(tài)寄存器(HSTAT)中的相應(yīng)位,并作相應(yīng)的錯誤處理,避免再次發(fā)生這種錯誤,然后使能DMA接收功能,否則不能繼續(xù)接收數(shù)據(jù)。

          3.1.5:站址寄存器(HSAR0-HSAR3)和站址屏蔽寄存器(HMASK)初始化

          4510利用在4個站址寄存器(HSAR0-HSAR3)中保存的站點地址配合站址屏蔽寄存器(HMASK)完成接受過程中的地址比較功能,如果一個HDLC數(shù)據(jù)幀的地址不符,此幀將被簡單地丟棄而不做任何處理。具體的設(shè)置請參閱4510數(shù)據(jù)手冊。

          3.1.6:DMA收發(fā)BUFFER描述符鏈表結(jié)構(gòu)建立和指針寄存器初始化

          4510的HDLC通道利用BUFFER描述符這種數(shù)據(jù)結(jié)構(gòu)完成DMA操作,接收和發(fā)送BUFFER

          描述符以及描述符鏈表結(jié)構(gòu)分別如附圖2,3,4所示。我們的應(yīng)用中,建立了雙向環(huán)形鏈表的鏈表結(jié)構(gòu),而不是單向環(huán)形鏈表結(jié)構(gòu),雙向環(huán)形鏈表結(jié)構(gòu)與單項環(huán)形鏈表結(jié)構(gòu)不同的地方是每個鏈表中的元素多了一個指向前一元素的指針。這樣在軟件中進行鏈表操作時不用每次都遍歷整個鏈表,提高了處理速度。

          鏈表結(jié)構(gòu)建立后,需要初始化收發(fā)描述符指針寄存器,對于發(fā)送BUFFER描述符指針寄存器(HDMATxPTR),將發(fā)送BUFFER描述符鏈表結(jié)構(gòu)的頭節(jié)點地址寫入其中,之后每完成一次DMA發(fā)送操作,4510會自動更新其中的地址,指向下一個發(fā)送BUFFER描述符;對于接收BUFFER描述符指針寄存器(HDMARxPTR),將接收BUFFER描述符鏈表結(jié)構(gòu)的頭節(jié)點地址寫入其中,之后每完成一次DMA接收操作,4510會自動更新其中的地址,指向下一個接收BUFFER描述符。

          3.1.7:使能HDLC通道的收發(fā)功能

          所有的初始化工作做完后,就可以使能HDLC通道的收發(fā)功能。此時要分兩種情況:

          一:如果使用DMA方式收發(fā),則需要使能HDLC通道控制寄存器(HCON)中的TxEN,RxEN,DTxEN,DRxEN四個比特位。不過,一般在發(fā)送時,有數(shù)據(jù)后才需要打開發(fā)送使能。

          二:如果使用CPU方式收發(fā),則需要使能HDLC通道控制寄存器(HCON)中的TxEN,RxEN兩個比特位,DTxEN,DRxEN兩個比特位一定不能打開。

          3.2: HDLC通道數(shù)據(jù)發(fā)送及中斷處理過程

          3.2.1:HDLC通道數(shù)據(jù)發(fā)送過程

          DMA方式下HDLC通道的數(shù)據(jù)發(fā)送過程可分為以下幾個步驟:

          1. 讀取發(fā)送幀描述符指針寄存器HDMATxPTR,得到當(dāng)前發(fā)送幀描述符的地址,進而得到整個發(fā)送幀描述符的內(nèi)容。

          2. 得到發(fā)送幀描述符中幀數(shù)據(jù)BUFFER起始地址。

          3. 將準備好的HDLC幀拷貝到BUFFER中。

          4. 設(shè)置當(dāng)前幀描述符中的相應(yīng)控制位。

          5. 將發(fā)送幀描述符的OWERSHIP位設(shè)置為DMA所有。

          6. 使能HDLC的DMA發(fā)送。

          完成上面各步驟后,HDLC通道的DMA機制會自動將BUFFER中的數(shù)據(jù)拷貝到HDLC通道

          TxFIFO中發(fā)送出去。一幀發(fā)送完畢后,4510自動將已使用的發(fā)送BUFFER描述符的OWERSHIP位設(shè)置為CPU所有,并將幀描述符指針寄存器HDMATxPTR中的內(nèi)容更新為下一個未使用的發(fā)送BUFFER描述符地址。

          3.2.2:HDLC通道數(shù)據(jù)發(fā)送中斷處理過程

          當(dāng)一幀數(shù)據(jù)通過DMA方式發(fā)送完畢,或者發(fā)送過程中出現(xiàn)了可引起中斷的異常情況,此時軟件會進入中斷處理程序。引起中斷的情況中斷控制寄存器的設(shè)置中已做了說明。在我們的編程中,HDLC通道發(fā)送中斷處理過程主要完成以下一些功能:

          1. 進入中斷后,首先清除4510中斷指示寄存器INTPEND中相應(yīng)的標志位。

          2. 如果DMA發(fā)送成功,則進行數(shù)據(jù)幀發(fā)送成功狀態(tài)計數(shù),并清除HDLC通道狀態(tài)寄存器HSTAT中的相應(yīng)狀態(tài)位。

          3. 如果發(fā)送出現(xiàn)異常,則完成相應(yīng)的異常狀態(tài)計數(shù),并清除HDLC通道狀態(tài)寄存器HSTAT中的相應(yīng)位。其中有兩個異常會影響以后的DMA操作,一:發(fā)送下沖異常(TxU),發(fā)生此異常時,處理器會自動禁止DMA發(fā)送功能,因此下一次發(fā)送時必須重新使能DMA發(fā)送功能;二:下一個發(fā)送幀描述符指針為空異常(DTxNL),發(fā)生此異常時,說明建立的DMA發(fā)送BUFFER描述符鏈表結(jié)構(gòu)出現(xiàn)了錯誤,因此需要重新初始化DMA發(fā)送BUFFER描述符鏈表結(jié)構(gòu)。

          4. 做完上述處理可關(guān)閉HDLC通道的DMA發(fā)送功能,等待有數(shù)據(jù)需要發(fā)送時再重新打開,也可以不關(guān)閉。

          3.3: HDLC通道數(shù)據(jù)接收工作原理及中斷處理過程

          3.3.1:HDLC通道數(shù)據(jù)接收工作原理

          DMA方式下HDLC通道的數(shù)據(jù)接收工作主要在HDLC通道初始化和DMA接收中斷處理中完成,這里主要分析HDLC通道接收工作原理,明白了數(shù)據(jù)接收原理,會給我們編程帶來極大的方便。HDLC通道接收工作原理如下所述:

          1. 通道初始化階段,我們建立并初始化了HDLC接收BUFFER描述符鏈表結(jié)構(gòu),并將鏈表頭節(jié)點的地址寫入到HDLC接收BUFFER描述符指針寄存器HDMARxPTR,這是正確完成DMA方式接收的前提,下面的工作都是在這個前提下自動完成的。

          2. 當(dāng)有數(shù)據(jù)到來時,DMA機制會從HDMARxPTR指向的接收BUFFER描述符中找到接收BUFFER起始地址,然后把收到的數(shù)據(jù)寫入到BUFFER中。

          3. 如果接收無誤,4510自動更新HDMARxPTR寄存器的值,使其指向下一個還未使用的接收BUFFER描述符,以備下一次接收使用。使用過的接收BUFFER描述符的OWERSHIP位將自動設(shè)置為CPU所有,因此為了能再次使用這個接收BUFFER描述符,必須將它的OWERSHIP位重置為DMA所有。

          4. 可以對已存儲在接收BUFFER中的數(shù)據(jù)作各種自定義的操作,實現(xiàn)自定義功能。



          關(guān)鍵詞: S3C44B0X C54X DSP

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();