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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 井下儀器總線轉(zhuǎn)換功能模塊設(shè)計(jì)

          井下儀器總線轉(zhuǎn)換功能模塊設(shè)計(jì)

          作者: 時(shí)間:2016-12-20 來(lái)源:網(wǎng)絡(luò) 收藏

          3 DSP程序設(shè)計(jì)

          系統(tǒng)為CAN/DTB轉(zhuǎn)換模塊分配了1個(gè)CAN總線ID,該模塊中DSP程序所執(zhí)行的功能類似于1個(gè)430 kbit/s傳輸速率的井下儀器。DSP程序包括系統(tǒng)的初始化、FPGA內(nèi)部數(shù)據(jù)的讀取、CAN接口數(shù)據(jù)收發(fā)等主要功能。與普通井下儀器的差別在于FPGA通過FIFO傳送的數(shù)據(jù)不是該模塊自身采集的,而是由DTB總線上掛接的100 kbit/s傳輸速率的儀器所采集的。

          3.1系統(tǒng)初始化

          初始化單元完成DSP初始化、CAN控制器初始化、以及清空FIFO中數(shù)據(jù)等工作。DSP初始化主要設(shè)置相關(guān)寄存器來(lái)配置系統(tǒng)時(shí)鐘的頻率、啟動(dòng)看門狗、打開相關(guān)中斷等工作。CAN控制器初始化包括設(shè)置CAN通信的波特率以及同步跳轉(zhuǎn)寬度、采樣次數(shù)和重同步方式;設(shè)置郵箱工作方式,啟動(dòng)郵箱工作并設(shè)置郵箱的ID;此外,還要設(shè)置CAN控制器的中斷。清空FIFO中的數(shù)據(jù),以防止丟失FIFO的半滿中斷信號(hào)。

          3.2 FPGA中斷服務(wù)程序

          當(dāng)FPGA內(nèi)部的FIFO存儲(chǔ)的數(shù)據(jù)容量超過一半時(shí),向DSP的硬件管腳產(chǎn)生硬件中斷,DSP進(jìn)入FPGA的中斷服務(wù)程序。

          FPGA中斷服務(wù)程序用于從FPGA的FIFO中讀取數(shù)據(jù),其流程見圖4。設(shè)置1個(gè)變量N,等于FIFO存儲(chǔ)容量的一半,DSP循環(huán)讀取FIFO中的數(shù)據(jù),每讀一次將N減1,直到N等于0時(shí),中斷服務(wù)程序結(jié)束。讀取的數(shù)據(jù)存放在數(shù)據(jù)存儲(chǔ)區(qū)中,由CAN接口按照一定的幀格式和流程要求發(fā)送給USB/CAN轉(zhuǎn)換模塊。

          點(diǎn)擊放大圖片

          圖4 FPGA中斷服務(wù)程序


          3.3 CAM控制器接收中斷服務(wù)程序

          無(wú)論CAN接收到數(shù)據(jù),還是發(fā)送數(shù)據(jù)成功,均進(jìn)入CAN中斷服務(wù)程序,程序流程見圖5。在中斷服務(wù)程序中,首先通過狀態(tài)寄存器,判斷是發(fā)送中斷還是接收中斷。如果是發(fā)送中斷,表明上一次的發(fā)送成功,相應(yīng)地設(shè)置發(fā)送成功標(biāo)志。如果是接收中斷,則需進(jìn)一步判斷接收到的是遠(yuǎn)程幀還是數(shù)據(jù)幀。如果是數(shù)據(jù)幀,表明接收的是儀器的控制命令,DSP需要將收到的命令發(fā)送到FPGA內(nèi)的命令寄存器,再由FPGA將命令通過DSIG信號(hào)發(fā)往井下儀器。如果是遠(yuǎn)程幀,表示主控節(jié)點(diǎn)請(qǐng)求該節(jié)點(diǎn)發(fā)送1幀數(shù)據(jù),則在程序中,將全局變量nSendNum賦值為要發(fā)送的1幀數(shù)據(jù)的長(zhǎng)度,nSendNum的值取決于當(dāng)前所掛接的儀器種類和儀器數(shù)量,由計(jì)算機(jī)軟件進(jìn)行配置。

          點(diǎn)擊放大圖片

          圖5 CAN中斷服務(wù)程序

          3.4系統(tǒng)主程序

          主程序主要是依據(jù)全局變量nSendNum、緩沖區(qū)數(shù)據(jù)長(zhǎng)度和發(fā)送成功標(biāo)志等狀態(tài)信息,決定數(shù)據(jù)發(fā)送的一個(gè)循環(huán)流程(見圖6)。在初始化完成后

          點(diǎn)擊放大圖片

          圖6 CAN接收服務(wù)程序

          主程序處于等待狀態(tài),判斷nSendNum是否為0。如果不為0,則表示已經(jīng)接收到主控節(jié)點(diǎn)請(qǐng)求發(fā)送數(shù)據(jù)的遠(yuǎn)程幀,因此進(jìn)人數(shù)據(jù)發(fā)送流程。接著判斷發(fā)送緩沖區(qū)中的數(shù)據(jù)是否有一完整幀的長(zhǎng)度(儀器不同,幀長(zhǎng)也不同),如果不足則停止發(fā)送,否則就將緩沖區(qū)的數(shù)據(jù)填入CAN的發(fā)送郵箱,啟動(dòng)發(fā)送流程,并將要發(fā)送的數(shù)據(jù)nSendNum減去8(CAN每次能夠發(fā)送8 Byte的數(shù)據(jù))。循環(huán)進(jìn)行CAN的發(fā)送程序,直到nSendNum等于0,表示一幀數(shù)據(jù)發(fā)送結(jié)束,主程序重新回到等待狀態(tài)。

          4 結(jié)束語(yǔ)

          經(jīng)過實(shí)驗(yàn)和應(yīng)用的驗(yàn)證,所設(shè)計(jì)的綜合測(cè)試設(shè)備與相應(yīng)的計(jì)算機(jī)測(cè)試程序配合,可同時(shí)用于DTB和CAN這2套通訊協(xié)議方式的測(cè)井系統(tǒng)的測(cè)試、維修和生產(chǎn),已開始在各儀器使用單位推廣。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          技術(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); })();