国产在线不卡看片成人免费视频|亚洲乱码精品一区二区三区|国产一区二区三区的视频|日韩精品视频在线一区二区|国产a视频网站免费观看

18931180976
探傷

設(shè)備 超聲波探傷設(shè)備型號(hào)
探傷設(shè)備生產(chǎn)廠家
探傷設(shè)備案例
綜合實(shí)力
合作單位
探傷知識(shí)
招聘信息
聯(lián)系方式
當(dāng)前位置:首頁(yè) >> 探傷知識(shí)

八通道探傷數(shù)據(jù)實(shí)時(shí)傳輸模塊驅(qū)動(dòng)設(shè)計(jì)

發(fā)布時(shí)間:2024/1/4 9:18:17

探傷系統(tǒng)中需要進(jìn)行驅(qū)動(dòng)設(shè)計(jì)的模塊主要分為兩大類。第一類是與超聲波探傷功能相關(guān)的信號(hào)處理部分,主要通過 FPGA 實(shí)現(xiàn),包括實(shí)時(shí)波形傳輸模塊、硬件實(shí)時(shí)報(bào)警和報(bào)警波形存儲(chǔ)模塊以及參數(shù)配置模塊等,這些模塊涉及到的主要是 FPGA 中的高速信號(hào)處理以及數(shù)據(jù)流向 ARM傳輸?shù)墓δ?,與系統(tǒng)性能關(guān)系密切,需要對(duì)其中的控制算法進(jìn)行重點(diǎn)優(yōu)化設(shè)計(jì)。第二類是 ARM系統(tǒng)的外設(shè)驅(qū)動(dòng)部分,主要有 RTC 實(shí)時(shí)時(shí)鐘模塊、DAC 增益控制模塊、ADC 電池電量監(jiān)控模塊、LCD 驅(qū)動(dòng)、LCD 背光亮度控制模塊以及矩陣鍵盤驅(qū)動(dòng)。這些外設(shè)與探傷功能沒有直接關(guān)系,卻是組成 ARM 嵌入式系統(tǒng)不可缺少的部分。


八通道探傷數(shù)據(jù)實(shí)時(shí)傳輸模塊驅(qū)動(dòng)設(shè)計(jì)

探傷系統(tǒng)的前端模擬部分采用八通道高速 ADC 進(jìn)行采樣,采樣速率為 40M,10bit。在 FPGA中,對(duì)八通道的高速數(shù)據(jù)需要進(jìn)行非均勻壓縮處理,將高速數(shù)據(jù)流壓縮為 ARM 處理器可處理的低速數(shù)據(jù)流。在 FPGA 中設(shè)置了八個(gè) FIFO,分別存儲(chǔ)八路通道壓縮后的波形數(shù)據(jù)。ARM 系統(tǒng)需要從 FIFO 中讀入波形數(shù)據(jù)并進(jìn)行實(shí)時(shí)的波形顯示,這對(duì)系統(tǒng)的實(shí)時(shí)性要求非常高。為了保證 FPGA 能夠向 ARM 子系統(tǒng)及時(shí)高效地傳輸探傷數(shù)據(jù),探傷系統(tǒng)采用了中斷方式進(jìn)行控制。由于軟件同時(shí)只顯示一個(gè)通道的波形,因此 FPGA 中通過八選一數(shù)據(jù)選擇器對(duì)八通道進(jìn)行選擇,每次只發(fā)送需要進(jìn)行顯示的通道的中斷。中斷的選擇通過該設(shè)備驅(qū)動(dòng)程序中的 ioctl()實(shí)現(xiàn),在ioctl()函數(shù)中,修改內(nèi)核空間的通道號(hào)變量,并且向 FPGA 中的通道選擇寄存器寫入相應(yīng)的通道號(hào)控制字就可以實(shí)現(xiàn)顯示通道的切換。


以重復(fù)頻率 50Hz 為例,F(xiàn)PGA 對(duì)波形數(shù)據(jù)進(jìn)行非均勻壓縮后,每隔 20ms 發(fā)送一個(gè)中斷信號(hào)給 ARM,ARM 模塊接收到中斷后,由 Linux 操作系統(tǒng)負(fù)責(zé)處理中斷,調(diào)用該設(shè)備驅(qū)動(dòng)程序中的中斷服務(wù)子程序。在中斷處理程序中,首先通過通道號(hào)變量確定需要進(jìn)行傳輸?shù)耐ǖ溃⒋_定需要讀入 FIFO 數(shù)據(jù)的端口地址。然后通過 insw()調(diào)用,從 FPGA 中的 FIFO 中讀取探傷波形數(shù)據(jù)到操作系統(tǒng)的內(nèi)核空間。接下來需要與應(yīng)用程序通信,通知波形數(shù)據(jù)已經(jīng)到達(dá)。驅(qū)動(dòng)程序與進(jìn)程的通信屬于進(jìn)程間通信,Linux 中進(jìn)程間通信方式包括管道(Pipe)、FIFO、信號(hào)(Signal)、共享內(nèi)存(Shared Memory)以及套接字(Socket)等。其中信號(hào)既可以用于兩個(gè)進(jìn)程之間進(jìn)行通信,也可以用于內(nèi)核與進(jìn)程之間的通信,但內(nèi)核只能向進(jìn)程發(fā)送信號(hào)而不能接收信號(hào)。


驅(qū)動(dòng)程序采用了異步通信的機(jī)制來實(shí)現(xiàn)與應(yīng)用程序的通信。當(dāng)驅(qū)動(dòng)程序從 FIFO 中讀取完畢波形數(shù)據(jù)后,向應(yīng)用程序發(fā)送信號(hào) SIGIO。應(yīng)用程序接收到 SIGIO 信號(hào)后,再調(diào)用驅(qū)動(dòng)中的 read()方法,從內(nèi)核空間讀取波形數(shù)據(jù)進(jìn)行實(shí)時(shí)顯示。這種方法在一定程度上實(shí)現(xiàn)了軟件意義上的中斷機(jī)制。與反復(fù)輪詢方法相比,減少了系統(tǒng)的開銷,提高了系統(tǒng)的運(yùn)行效率。