新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 井下儀器總線轉換功能模塊設計

        井下儀器總線轉換功能模塊設計

        作者: 時間:2016-12-20 來源:網絡 收藏

        3 DSP程序設計

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

        3.1系統初始化

        初始化單元完成DSP初始化、CAN控制器初始化、以及清空FIFO中數據等工作。DSP初始化主要設置相關寄存器來配置系統時鐘的頻率、啟動看門狗、打開相關中斷等工作。CAN控制器初始化包括設置CAN通信的波特率以及同步跳轉寬度、采樣次數和重同步方式;設置郵箱工作方式,啟動郵箱工作并設置郵箱的ID;此外,還要設置CAN控制器的中斷。清空FIFO中的數據,以防止丟失FIFO的半滿中斷信號。

        3.2 FPGA中斷服務程序

        當FPGA內部的FIFO存儲的數據容量超過一半時,向DSP的硬件管腳產生硬件中斷,DSP進入FPGA的中斷服務程序。

        FPGA中斷服務程序用于從FPGA的FIFO中讀取數據,其流程見圖4。設置1個變量N,等于FIFO存儲容量的一半,DSP循環讀取FIFO中的數據,每讀一次將N減1,直到N等于0時,中斷服務程序結束。讀取的數據存放在數據存儲區中,由CAN接口按照一定的幀格式和流程要求發送給USB/CAN轉換模塊。

        點擊放大圖片

        圖4 FPGA中斷服務程序


        3.3 CAM控制器接收中斷服務程序

        無論CAN接收到數據,還是發送數據成功,均進入CAN中斷服務程序,程序流程見圖5。在中斷服務程序中,首先通過狀態寄存器,判斷是發送中斷還是接收中斷。如果是發送中斷,表明上一次的發送成功,相應地設置發送成功標志。如果是接收中斷,則需進一步判斷接收到的是遠程幀還是數據幀。如果是數據幀,表明接收的是儀器的控制命令,DSP需要將收到的命令發送到FPGA內的命令寄存器,再由FPGA將命令通過DSIG信號發往井下儀器。如果是遠程幀,表示主控節點請求該節點發送1幀數據,則在程序中,將全局變量nSendNum賦值為要發送的1幀數據的長度,nSendNum的值取決于當前所掛接的儀器種類和儀器數量,由計算機軟件進行配置。

        點擊放大圖片

        圖5 CAN中斷服務程序

        3.4系統主程序

        主程序主要是依據全局變量nSendNum、緩沖區數據長度和發送成功標志等狀態信息,決定數據發送的一個循環流程(見圖6)。在初始化完成后

        點擊放大圖片

        圖6 CAN接收服務程序

        主程序處于等待狀態,判斷nSendNum是否為0。如果不為0,則表示已經接收到主控節點請求發送數據的遠程幀,因此進人數據發送流程。接著判斷發送緩沖區中的數據是否有一完整幀的長度(儀器不同,幀長也不同),如果不足則停止發送,否則就將緩沖區的數據填入CAN的發送郵箱,啟動發送流程,并將要發送的數據nSendNum減去8(CAN每次能夠發送8 Byte的數據)。循環進行CAN的發送程序,直到nSendNum等于0,表示一幀數據發送結束,主程序重新回到等待狀態。

        4 結束語

        經過實驗和應用的驗證,所設計的綜合測試設備與相應的計算機測試程序配合,可同時用于DTB和CAN這2套通訊協議方式的測井系統的測試、維修和生產,已開始在各儀器使用單位推廣。


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 桦甸市| 尚志市| 博爱县| 彰化县| 古浪县| 哈尔滨市| 鹿邑县| 巴南区| 青海省| 兴山县| 郸城县| 方正县| 龙胜| 社会| 象州县| 苍南县| 政和县| 晋州市| 巴楚县| 南召县| 襄垣县| 合山市| 淳安县| 祁连县| 肥东县| 广汉市| 诸暨市| 宜宾县| 南宫市| 明溪县| 天峨县| 花莲市| 抚远县| 莲花县| 邛崃市| 名山县| 古丈县| 荣昌县| 綦江县| 泌阳县| 苍山县|