亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于Linux系統(tǒng)的定時(shí)方法及裝置與流程

文檔序號(hào):12595992閱讀:229來(lái)源:國(guó)知局
基于Linux系統(tǒng)的定時(shí)方法及裝置與流程

本發(fā)明涉及到工業(yè)級(jí)定時(shí)控制系統(tǒng)領(lǐng)域,特別是涉及到一種基于Linux系統(tǒng)的定時(shí)方法及裝置。



背景技術(shù):

現(xiàn)代工業(yè)生產(chǎn)檢測(cè)設(shè)備中,都需要應(yīng)用到工業(yè)級(jí)的系統(tǒng)進(jìn)行生產(chǎn)測(cè)試的管理和控制,不同的產(chǎn)品加工檢測(cè)時(shí)對(duì)于時(shí)間控制精度的要求不一樣,但是在不考慮成本的前提下,企業(yè)都是希望能夠?qū)τ谏a(chǎn)或檢測(cè)過(guò)程進(jìn)行精準(zhǔn)有效的控制。

例如,在電池電芯測(cè)試行業(yè)中,電池電芯在出廠的時(shí)候,需要對(duì)電池電芯進(jìn)行測(cè)試,具體的來(lái)說(shuō),就是需要按照一定的規(guī)律對(duì)電池電芯進(jìn)行充放電測(cè)試,其對(duì)于脈沖電流的大小以及脈沖電流的持續(xù)時(shí)間和間隔時(shí)間的要求都比較高,對(duì)于控制時(shí)間的精度要求需要達(dá)到1μs(微秒),這精度要求現(xiàn)有的免費(fèi)系統(tǒng)基本無(wú)法實(shí)現(xiàn),有部分免費(fèi)系統(tǒng)的計(jì)時(shí)精度雖然能夠滿足上面的要求,但是其系統(tǒng)本身功能不能滿足工業(yè)生產(chǎn)或檢測(cè)的需要,因此對(duì)于企業(yè)來(lái)說(shuō),最簡(jiǎn)單的解決方案就是購(gòu)買適合的工業(yè)級(jí)系統(tǒng)直接使用,但是工業(yè)級(jí)的授權(quán)費(fèi)用一般比較高,這樣會(huì)無(wú)形的增加了企業(yè)的生存成本。

Linux系統(tǒng),是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個(gè)基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議,并支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。作為一個(gè)功能強(qiáng)大的開源系統(tǒng),這意味著使用它用于控制工業(yè)生產(chǎn),對(duì)企業(yè)來(lái)說(shuō)其成本基本為零;同時(shí)Linux系統(tǒng)也是一個(gè)非實(shí)時(shí)的系統(tǒng),其系統(tǒng)本身的計(jì)時(shí)精度遠(yuǎn)遠(yuǎn)不等達(dá)到工業(yè)加工的需要,因此,目前還沒有將Linux系統(tǒng)用于工業(yè)生產(chǎn)檢測(cè)的應(yīng)用。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的主要目的為提供一種基于Linux系統(tǒng)的定時(shí)方法及裝置,能夠?qū)inux系統(tǒng)用于控制工業(yè)級(jí)別的生產(chǎn)和檢測(cè)。

本發(fā)明提出一種基于Linux系統(tǒng)的定時(shí)方法,包括以下步驟,

將事件和事件的觸發(fā)時(shí)間節(jié)點(diǎn)按照觸發(fā)時(shí)間節(jié)點(diǎn)的先后順序一一對(duì)應(yīng)設(shè)置為DMA鏈表,并將所述DMA鏈表發(fā)送給系統(tǒng)定時(shí)器;

系統(tǒng)定時(shí)器根據(jù)DMA鏈表上的DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)信息,在到達(dá)觸發(fā)時(shí)間節(jié)點(diǎn)時(shí)觸發(fā)對(duì)應(yīng)的DMA事件;

系統(tǒng)定時(shí)器觸發(fā)DMA鏈表上前一DMA事件之后,DMA鏈表上的下一DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)自動(dòng)發(fā)送給系統(tǒng)定時(shí)器。

進(jìn)一步地,所述系統(tǒng)定時(shí)器根據(jù)DMA鏈表上的DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)信息,在到達(dá)觸發(fā)時(shí)間節(jié)點(diǎn)時(shí)觸發(fā)對(duì)應(yīng)的DMA事件步驟,包括,

DMA控制器發(fā)送控制指令到對(duì)應(yīng)的執(zhí)行機(jī)構(gòu),并接收返回的采樣數(shù)據(jù)。

進(jìn)一步地,所述控制指令為DAC數(shù)值,所述采樣數(shù)據(jù)為ADC采樣。

進(jìn)一步地,所述系統(tǒng)定時(shí)器觸發(fā)DMA鏈表上前一DMA事件之后,將DMA鏈表上的下一DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)發(fā)送給系統(tǒng)定時(shí)器步驟,包括,

根據(jù)DMA鏈表上DMA事件的先后,依次將DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)發(fā)送給系統(tǒng)定時(shí)器,直到DMA鏈表上的事件全部執(zhí)行完畢。

本發(fā)明還提出了一種基于Linux系統(tǒng)的定時(shí)裝置,包括,

預(yù)設(shè)單元,用于將事件和事件的觸發(fā)時(shí)間節(jié)點(diǎn)按照觸發(fā)時(shí)間節(jié)點(diǎn)的先后順序一一對(duì)應(yīng)設(shè)置為DMA鏈表,并將所述DMA鏈表發(fā)送給系統(tǒng)定時(shí)器;

執(zhí)行單元,用于系統(tǒng)定時(shí)器根據(jù)DMA鏈表上的DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)信息,在到達(dá)觸發(fā)時(shí)間節(jié)點(diǎn)時(shí)觸發(fā)對(duì)應(yīng)的DMA事件;

重復(fù)單元,用于系統(tǒng)定時(shí)器觸發(fā)DMA鏈表上前一DMA事件之后,DMA鏈表上的下一DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)自動(dòng)發(fā)送給系統(tǒng)定時(shí)器。

進(jìn)一步地,所述執(zhí)行單元,包括執(zhí)行模塊,用于DMA控制器發(fā)送控制指令到對(duì)應(yīng)的執(zhí)行機(jī)構(gòu),并接收返回的采樣數(shù)據(jù)。

進(jìn)一步地,所述控制指令為DAC數(shù)值,所述采樣數(shù)據(jù)為ADC數(shù)據(jù)。

進(jìn)一步地,所述重復(fù)單元,包括重復(fù)模塊,用于根據(jù)DMA鏈表上DMA事件的先后,依次將DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)發(fā)送給系統(tǒng)定時(shí)器,直到DMA鏈表上的事件全部執(zhí)行完畢。

本發(fā)明的有益效果是:通過(guò)Linux系統(tǒng)本身的自帶的系統(tǒng)定時(shí)器、DMA鏈表和DMA控制器配合使用,達(dá)到工業(yè)計(jì)時(shí)精度要求,能夠精確定時(shí)控制,而且非實(shí)時(shí)操作系統(tǒng)如Linux系統(tǒng)本身為開源系統(tǒng),無(wú)需增加企業(yè)額外的生產(chǎn)成本,提高企業(yè)競(jìng)爭(zhēng)力。

附圖說(shuō)明

圖1為本發(fā)明一實(shí)施例一種基于Linux系統(tǒng)的定時(shí)方法的方法流程圖;

圖2為本發(fā)明一實(shí)施例電池檢測(cè)脈沖電流的波形圖;

圖3為本發(fā)明一實(shí)施例一種基于Linux系統(tǒng)的定時(shí)裝置的結(jié)構(gòu)框圖;

圖4為本發(fā)明一具體實(shí)施例中DMA鏈表設(shè)計(jì)流程圖。

本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。

具體實(shí)施方式

應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個(gè)”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說(shuō)明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。這里使用的措辭“和/或”包括一個(gè)或更多個(gè)相關(guān)聯(lián)的列出項(xiàng)的全部或任一單元和全部組合。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(yǔ)(包括技術(shù)術(shù)語(yǔ)和科學(xué)術(shù)語(yǔ)),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語(yǔ),應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會(huì)用理想化或過(guò)于正式的含義來(lái)解釋。

Linux系統(tǒng),是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個(gè)基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議,并支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。作為一個(gè)功能強(qiáng)大的開源系統(tǒng),這意味著使用它用于控制工業(yè)生產(chǎn),對(duì)企業(yè)來(lái)說(shuō)其成本基本為零;同時(shí)Linux系統(tǒng)也是一個(gè)非實(shí)時(shí)的系統(tǒng),其系統(tǒng)本身的計(jì)時(shí)精度遠(yuǎn)遠(yuǎn)不等達(dá)到工業(yè)加工的需要,因此,目前還沒有將Linux系統(tǒng)用于工業(yè)生產(chǎn)檢測(cè)的應(yīng)用。

DMA的英文拼寫是“Direct Memory Access”,漢語(yǔ)的意思就是直接內(nèi)存訪問(wèn),是一種不經(jīng)過(guò)CPU而直接從內(nèi)存存取數(shù)據(jù)的數(shù)據(jù)交換模式。在DMA模式下,CPU只須向DMA控制器下達(dá)指令,讓DMA控制器來(lái)處理數(shù)據(jù)的傳送,數(shù)據(jù)傳送完畢再把信息反饋給CPU,這樣就很大程度上減輕了CPU資源占有率,可以大大節(jié)省系統(tǒng)資源。

ADC,中文名稱模數(shù)轉(zhuǎn)換器,是把經(jīng)過(guò)與標(biāo)準(zhǔn)量(或參考量)比較處理后的模擬量轉(zhuǎn)換成以二進(jìn)制數(shù)值表示的離散信號(hào)的轉(zhuǎn)換器。

DAC,中文名稱數(shù)模轉(zhuǎn)換器,一種將二進(jìn)制數(shù)字量形式的離散信號(hào)轉(zhuǎn)換成以標(biāo)準(zhǔn)量(或參考量)為基準(zhǔn)的模擬量的轉(zhuǎn)換器。

參照?qǐng)D1,提出本發(fā)明一實(shí)施例,一種基于Linux系統(tǒng)的定時(shí)方法,包括以下步驟:

S10、將事件和事件的觸發(fā)時(shí)間節(jié)點(diǎn)按照觸發(fā)時(shí)間節(jié)點(diǎn)的先后順序一一對(duì)應(yīng)設(shè)置為DMA鏈表,并將所述DMA鏈表發(fā)送給系統(tǒng)定時(shí)器;

S11、系統(tǒng)定時(shí)器根據(jù)DMA鏈表上的DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)信息,在到達(dá)觸發(fā)時(shí)間節(jié)點(diǎn)時(shí)觸發(fā)對(duì)應(yīng)的DMA事件;

S12、系統(tǒng)定時(shí)器觸發(fā)DMA鏈表上前一DMA事件之后,DMA鏈表上的下一DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)自動(dòng)發(fā)送給系統(tǒng)定時(shí)器。

對(duì)于步驟S10,在工業(yè)生產(chǎn)或檢測(cè)時(shí),需要具體到某個(gè)確定時(shí)間點(diǎn)進(jìn)行特定的工作,以電池測(cè)試為例,在實(shí)際測(cè)試時(shí),需要在指定的時(shí)間為電池正負(fù)極施加一個(gè)指定大小脈沖電流。

如圖2所示,I為測(cè)試時(shí)的脈沖電流,a為開始使用脈沖電流I進(jìn)行測(cè)試的時(shí)間節(jié)點(diǎn),b為結(jié)束使用脈沖電流I進(jìn)行測(cè)試的時(shí)間節(jié)點(diǎn),同時(shí)也是測(cè)試間隔期的起始時(shí)間節(jié)點(diǎn),c為測(cè)試間隔期結(jié)束的時(shí)間節(jié)點(diǎn),同時(shí)也是下一次測(cè)試的起始時(shí)間節(jié)點(diǎn),其中T1為時(shí)間節(jié)點(diǎn)a和b之間的間隔,T2為時(shí)間節(jié)點(diǎn)b和c之間的時(shí)間間隔。在實(shí)際測(cè)試時(shí),需要精準(zhǔn)的控制脈沖電流測(cè)試過(guò)程的起始、結(jié)束時(shí)間節(jié)點(diǎn)a、b和c,這時(shí),要求能夠在a、b和c三個(gè)時(shí)間節(jié)點(diǎn)立即進(jìn)行測(cè)試或者停止測(cè)試。參考圖2,在此實(shí)施例中,實(shí)際設(shè)置DMA鏈表時(shí),第一DMA事件為使用脈沖電流I進(jìn)行測(cè)試,對(duì)應(yīng)的觸發(fā)時(shí)間節(jié)點(diǎn)為a;第二DMA事件為停止使用脈沖電流I進(jìn)行測(cè)試,對(duì)應(yīng)的觸發(fā)時(shí)間節(jié)點(diǎn)為b;第三DMA事件為使用脈沖電流I進(jìn)行測(cè)試,對(duì)應(yīng)的觸發(fā)時(shí)間節(jié)點(diǎn)為c。如上面的規(guī)律將測(cè)試過(guò)程的事件及其對(duì)應(yīng)的觸發(fā)時(shí)間節(jié)點(diǎn)對(duì)應(yīng)設(shè)置為DMA鏈表,并將DMA鏈表發(fā)送給系統(tǒng)定時(shí)器,系統(tǒng)定時(shí)器可以根據(jù)接收到的觸發(fā)時(shí)間節(jié)點(diǎn),到時(shí)觸發(fā),將DMA事件信息發(fā)送給系統(tǒng)的DMA控制器,再通過(guò)DMA控制器發(fā)送控制指令來(lái)事件的進(jìn)行。

將有時(shí)間先后順序的事件依次做成DMA鏈表,DMA鏈表具有依次進(jìn)行的特性,會(huì)從第一條按順序運(yùn)行DMA鏈表上的DMA事件。系統(tǒng)定時(shí)器觸發(fā)了DMA鏈表上的上一事件后,緊接的DMA事件,會(huì)被自動(dòng)發(fā)送給系統(tǒng)定時(shí)器。

對(duì)于步驟S11,系統(tǒng)定時(shí)器,能夠?qū)崿F(xiàn)精準(zhǔn)的定時(shí)。在接收到DMA鏈表之后,獲取DMA鏈表上的DMA事件以及對(duì)應(yīng)的觸發(fā)時(shí)間節(jié)點(diǎn),在定時(shí)器時(shí)間到達(dá)觸發(fā)時(shí)間節(jié)點(diǎn)的時(shí)候,將DMA事件送到DMA控制器,DMA控制再發(fā)送DAC控制碼到執(zhí)行裝置,并獲取ADC采樣數(shù)據(jù)。

對(duì)于步驟S12,將有時(shí)間先后順序的事件依次做成DMA鏈表,DMA鏈表具有依次進(jìn)行的特性,運(yùn)行時(shí),從第一條按順序運(yùn)行DMA鏈表上的DMA事件。系統(tǒng)定時(shí)器觸發(fā)了DMA鏈表上的上一事件后,緊接的DMA事件,會(huì)被自動(dòng)發(fā)送給系統(tǒng)定時(shí)器,系統(tǒng)定時(shí)器進(jìn)入下一DMA事件的觸發(fā)時(shí)間節(jié)點(diǎn)定時(shí)工作。

上述步驟S11還包括以下步驟:

S111、DMA控制器發(fā)送控制指令到對(duì)應(yīng)的執(zhí)行機(jī)構(gòu),并接收返回的采樣數(shù)據(jù)。

對(duì)于步驟S111,DMA控制器發(fā)送控制指令到執(zhí)行機(jī)構(gòu),不再需要通過(guò)系統(tǒng)層,就可以控制對(duì)應(yīng)的執(zhí)行機(jī)構(gòu)進(jìn)行工作,DMA控制器發(fā)出控制指令后同時(shí)收集采樣數(shù)據(jù)。

具體的,上面提到的控制指令為DAC數(shù)值,采樣數(shù)據(jù)為ADC采樣數(shù)據(jù)。

上述步驟S12還包括以下步驟:

S121、根據(jù)DMA鏈表上DMA事件的先后,依次將DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)發(fā)送給系統(tǒng)定時(shí)器,直到DMA鏈表上的事件全部執(zhí)行完畢。

對(duì)于步驟S121,DMA鏈表上的DMA事件按照發(fā)生時(shí)間將有時(shí)間先后順序的事件依次做成DMA鏈表,DMA鏈表具有依次進(jìn)行的特性,運(yùn)行時(shí),從第一條按順序運(yùn)行DMA鏈表上的DMA事件知道所有的DMA時(shí)間全部完結(jié)。

當(dāng)然,也可以通過(guò)將事件設(shè)置為多個(gè)DMA鏈表,再通過(guò)多個(gè)DMA鏈表來(lái)實(shí)現(xiàn)對(duì)于多個(gè)連續(xù)時(shí)間的持續(xù)控制。

本發(fā)明的有益效果是:通過(guò)Linux系統(tǒng)本身的自帶的系統(tǒng)定時(shí)器、DMA鏈表和DMA控制器配合使用,達(dá)到工業(yè)計(jì)時(shí)精度要求,能夠精確定時(shí)控制,而且Linux系統(tǒng)本身為開源系統(tǒng),無(wú)需增加企業(yè)額外的生產(chǎn)成本,提高企業(yè)競(jìng)爭(zhēng)力。

本發(fā)明還提出了一種基于Linux系統(tǒng)的定時(shí)裝置,包括,

預(yù)設(shè)單元10,用于將事件和事件的觸發(fā)時(shí)間節(jié)點(diǎn)按照觸發(fā)時(shí)間節(jié)點(diǎn)的先后順序一一對(duì)應(yīng)設(shè)置為DMA鏈表,并將所述DMA鏈表發(fā)送給系統(tǒng)定時(shí)器;

執(zhí)行單元20,用于系統(tǒng)定時(shí)器根據(jù)DMA鏈表上的DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)信息,在到達(dá)觸發(fā)時(shí)間節(jié)點(diǎn)時(shí)觸發(fā)對(duì)應(yīng)的DMA事件;

重復(fù)單元30,用于系統(tǒng)定時(shí)器觸發(fā)DMA鏈表上前一DMA事件之后,DMA鏈表上的下一DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)自動(dòng)發(fā)送給系統(tǒng)定時(shí)器。

在工業(yè)生產(chǎn)或檢測(cè)時(shí),需要具體到某個(gè)確定時(shí)間點(diǎn)進(jìn)行特定的工作,以電池測(cè)試為例,在實(shí)際測(cè)試時(shí),需要在指定的時(shí)間為電池正負(fù)極施加一個(gè)指定大小脈沖電流。

如圖2所示,I為測(cè)試時(shí)的脈沖電流,a為開始使用脈沖電流I進(jìn)行測(cè)試的時(shí)間節(jié)點(diǎn),b為結(jié)束使用脈沖電流I進(jìn)行測(cè)試的時(shí)間節(jié)點(diǎn),同時(shí)也是測(cè)試間隔期的起始時(shí)間節(jié)點(diǎn),c為測(cè)試間隔期結(jié)束的時(shí)間節(jié)點(diǎn),同時(shí)也是下一次測(cè)試的起始時(shí)間節(jié)點(diǎn),其中T1為時(shí)間節(jié)點(diǎn)a和b之間的間隔,T2為時(shí)間節(jié)點(diǎn)b和c之間的時(shí)間間隔。在實(shí)際測(cè)試時(shí),需要精準(zhǔn)的控制脈沖電流測(cè)試過(guò)程的起始、結(jié)束時(shí)間節(jié)點(diǎn)a、b和c,這時(shí),要求能夠在a、b和c三個(gè)時(shí)間節(jié)點(diǎn)立即進(jìn)行測(cè)試或者停止測(cè)試。參考圖2,在此實(shí)施例中,預(yù)設(shè)單元10設(shè)置DMA鏈表時(shí),第一DMA事件為使用脈沖電流I進(jìn)行測(cè)試,對(duì)應(yīng)的觸發(fā)時(shí)間節(jié)點(diǎn)為a;第二DMA事件為停止使用脈沖電流I進(jìn)行測(cè)試,對(duì)應(yīng)的觸發(fā)時(shí)間節(jié)點(diǎn)為b;第三DMA事件為使用脈沖電流I進(jìn)行測(cè)試,對(duì)應(yīng)的觸發(fā)時(shí)間節(jié)點(diǎn)為c。預(yù)設(shè)單元10使用上面的規(guī)律將測(cè)試過(guò)程的事件及其對(duì)應(yīng)的觸發(fā)時(shí)間節(jié)點(diǎn)對(duì)應(yīng)設(shè)置為DMA鏈表,并將DMA鏈表發(fā)送給系統(tǒng)定時(shí)器,系統(tǒng)定時(shí)器可以根據(jù)接收到的觸發(fā)時(shí)間節(jié)點(diǎn),到時(shí)觸發(fā),將DMA事件信息發(fā)送給系統(tǒng)的DMA控制器,再通過(guò)DMA控制器發(fā)送控制指令來(lái)事件的進(jìn)行。

預(yù)設(shè)單元10,將有時(shí)間先后順序的事件依次做成DMA鏈表,DMA鏈表具有依次進(jìn)行的特性,會(huì)從第一條按順序運(yùn)行DMA鏈表上的DMA事件。系統(tǒng)定時(shí)器觸發(fā)了DMA鏈表上的上一事件后,緊接的DMA事件,會(huì)被自動(dòng)發(fā)送給系統(tǒng)定時(shí)器。

系統(tǒng)定時(shí)器,能夠?qū)崿F(xiàn)精準(zhǔn)的定時(shí)。執(zhí)行單元20,用于在系統(tǒng)定時(shí)器接收到DMA鏈表之后,獲取DMA鏈表上的DMA事件以及對(duì)應(yīng)的觸發(fā)時(shí)間節(jié)點(diǎn),在定時(shí)器時(shí)間到達(dá)觸發(fā)時(shí)間節(jié)點(diǎn)的時(shí)候,將DMA事件送到DMA控制器,DMA控制再發(fā)送DAC控制碼到執(zhí)行裝置,并獲取ADC采樣數(shù)據(jù)。

將有時(shí)間先后順序的事件依次做成DMA鏈表,DMA鏈表具有依次進(jìn)行的特性,運(yùn)行時(shí),從第一條按順序運(yùn)行DMA鏈表上的DMA事件。重復(fù)單元,用于在系統(tǒng)定時(shí)器觸發(fā)了DMA鏈表上的上一事件后,緊接的DMA事件,會(huì)被自動(dòng)發(fā)送給系統(tǒng)定時(shí)器,系統(tǒng)定時(shí)器進(jìn)入下一DMA事件的觸發(fā)時(shí)間節(jié)點(diǎn)定時(shí)工作。

執(zhí)行單元20,還包括執(zhí)行模塊21,用于DMA控制器發(fā)送控制指令到對(duì)應(yīng)的執(zhí)行機(jī)構(gòu),并接收返回的采樣數(shù)據(jù)。

執(zhí)行模塊21,用于DMA控制器發(fā)送控制指令到執(zhí)行機(jī)構(gòu),不在需要通過(guò)系統(tǒng)層,就可以控制對(duì)應(yīng)的執(zhí)行機(jī)構(gòu)進(jìn)行工作,DMA控制器發(fā)出控制指令后同時(shí)收集采樣數(shù)據(jù)。

具體的,控制指令為DAC數(shù)值,采樣數(shù)據(jù)為ADC數(shù)據(jù)。

重復(fù)單元30,包括重復(fù)模塊31,用于根據(jù)DMA鏈表上DMA事件的先后,依次將DMA事件以及事件的觸發(fā)時(shí)間節(jié)點(diǎn)發(fā)送給系統(tǒng)定時(shí)器,直到DMA鏈表上的事件全部執(zhí)行完畢。

DMA鏈表上的DMA事件按照發(fā)生時(shí)間將有時(shí)間先后順序的事件依次做成DMA鏈表,DMA鏈表具有依次進(jìn)行的特性,運(yùn)行時(shí),從第一條按順序運(yùn)行DMA鏈表上的DMA事件知道所有的DMA時(shí)間全部完結(jié)。

當(dāng)然,也可以通過(guò)將事件設(shè)置為多個(gè)DMA鏈表,再通過(guò)多個(gè)DMA鏈表來(lái)實(shí)現(xiàn)對(duì)于多個(gè)連續(xù)時(shí)間的持續(xù)控制。

本發(fā)明的有益效果是:通過(guò)Linux系統(tǒng)本身的自帶的系統(tǒng)定時(shí)器、DMA鏈表和DMA控制器配合使用,達(dá)到工業(yè)計(jì)時(shí)精度要求,能夠精確定時(shí)控制,而且Linux系統(tǒng)本身為開源系統(tǒng),無(wú)需增加企業(yè)額外的生產(chǎn)成本,提高企業(yè)競(jìng)爭(zhēng)。

在本發(fā)明一具體實(shí)施例中,DMA鏈表設(shè)計(jì)過(guò)程具體如下:

預(yù)先根據(jù)控制/采樣的脈沖寬度要求,配置好一組DMA鏈表控制數(shù)據(jù),然后定時(shí)器觸發(fā),逐個(gè)控制幀通過(guò)SPI送往外設(shè),設(shè)定定時(shí)控制和定時(shí)采樣,控制幀內(nèi)部實(shí)現(xiàn)幀號(hào)和幀地址的自動(dòng)修正過(guò)程。

參考圖4,以下為一種具體的DMA鏈表的設(shè)計(jì)流程:

DMA1:取出當(dāng)前脈沖控制包送往T2;

DMA2:T2下一包指針地址修改;

DMA3:T2脈沖寬度送至系統(tǒng)定時(shí)器初值;

DMA4:獲取系統(tǒng)時(shí)鐘值保存到R2;

DMA5:T2脈沖序號(hào)保存至R2;

DMA6:T2中順序取下一包控制信息送至T1;

DMA7:修正T1的下一包地址為DMA6.SRC;

DMA8:T1輸出外設(shè)片選信號(hào);

DMA9:T1輸出SPI外設(shè)控制指令;

DMA10:T1接收地址修正為DMA14.DEST;

DMA11:T1的DMA鏈指向DMA14.LINK;

DMA12:清除SPI接收緩存;

DMA13:T1清除外設(shè)片選信號(hào);

DMA14:SPI接收結(jié)果保存到R1,并判斷控制幀數(shù)是否到達(dá),若是,執(zhí)行DMA15,若否,執(zhí)行DMA6;

DMA15:輸出同步信號(hào)觸發(fā)DMA16保存采樣結(jié)果;

DMA16:R1數(shù)據(jù)保存至R2,并判斷包數(shù)量是否大于等于32,若是,則指針歸零;或者,若否,則重復(fù)將R1數(shù)據(jù)保存至R2。

其中:

T1:一級(jí)發(fā)送緩存,內(nèi)含一個(gè)控制幀,通過(guò)SPI與外設(shè)ADC/DAC交互;

T2:二級(jí)發(fā)送緩存,內(nèi)含一組控制幀,逐個(gè)送往T1,執(zhí)行動(dòng)作。

R1:一級(jí)接收緩存,接收T1的執(zhí)行結(jié)果,臨時(shí)緩存;

R2:二級(jí)接收緩存,內(nèi)含多組執(zhí)行結(jié)果,用于保存系統(tǒng)采樣數(shù)據(jù)。

以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1