亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

控制數(shù)字輸入輸出接口的方法、處理器與流程

文檔序號(hào):12063607閱讀:549來源:國(guó)知局
本發(fā)明涉及計(jì)算機(jī)應(yīng)用領(lǐng)域,特別是涉及一種控制數(shù)字輸入輸出接口的方法和用于控制數(shù)字輸入輸出的處理器。
背景技術(shù)
:目前人們常用的數(shù)字輸入輸出接口通常由X86平臺(tái)主板的GPIO(GeneralPurposeInputOutput,通用輸入/輸出口)實(shí)現(xiàn),通過這種方式得到的數(shù)字輸入輸出接口通常沒有中斷,需要通過軟件不停地掃描數(shù)字輸入接口以獲取電平變化等信息,不僅占用大量的軟件資源,還容易遺漏某一個(gè)數(shù)字輸入接口短時(shí)間的脈沖突變。此外,傳統(tǒng)的GPIO可擴(kuò)展性較差,數(shù)字輸入輸出接口的控制功能較為單一。技術(shù)實(shí)現(xiàn)要素:基于此,有必要針對(duì)數(shù)字輸入輸出接口沒有中斷、控制功能較為單一的問題,提供一種控制數(shù)字輸入輸出接口的方法。此外,還有必要針對(duì)數(shù)字輸入輸出接口沒有中斷、控制功能較為單一的問題,提供一種用于控制數(shù)字輸入輸出的處理器。一種控制數(shù)字輸入輸出接口的方法,包括以下步驟:檢測(cè)數(shù)字輸入接口是否發(fā)生中斷;當(dāng)檢測(cè)到數(shù)字輸入接口發(fā)生中斷時(shí),根據(jù)所述中斷生成第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包發(fā)送給主機(jī),以使所述主機(jī)解析所述第一數(shù)據(jù)包并根據(jù)解析結(jié)果獲取所述數(shù)字輸入接口的信息;接收由所述主機(jī)發(fā)送的第二數(shù)據(jù)包,所述第二數(shù)據(jù)包根據(jù)所述主機(jī)調(diào)用的預(yù)設(shè)函數(shù)生成;解析所述第二數(shù)據(jù)包;根據(jù)解析結(jié)果獲取數(shù)字輸出接口的信息,并根據(jù)所述數(shù)字輸出接口的信息 設(shè)置所述數(shù)字輸出接口。一種用于控制數(shù)字輸入輸出接口的處理器,所述處理器包括:檢測(cè)模塊,用于檢測(cè)數(shù)字輸入接口是否發(fā)生中斷;發(fā)送模塊,用于當(dāng)檢測(cè)到數(shù)字輸入接口發(fā)生中斷時(shí),根據(jù)所述中斷生成第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包發(fā)送給主機(jī),以使所述主機(jī)解析所述第一數(shù)據(jù)包并根據(jù)解析結(jié)果獲取所述數(shù)字輸入接口的信息;接收模塊,用于接收由所述主機(jī)發(fā)送的第二數(shù)據(jù)包,所述第二數(shù)據(jù)包根據(jù)所述主機(jī)調(diào)用的預(yù)設(shè)函數(shù)生成;解析模塊,用于解析所述第二數(shù)據(jù)包;設(shè)置模塊,用于根據(jù)解析結(jié)果獲取數(shù)字輸出接口的信息,并根據(jù)所述數(shù)字輸出接口的信息設(shè)置所述數(shù)字輸出接口。上述控制數(shù)字輸入輸出接口的方法和用于控制數(shù)字輸入輸出的處理器,處理器可檢測(cè)數(shù)字輸入接口的中斷并上傳中斷信息給主機(jī),方便主機(jī)對(duì)與數(shù)字輸入接口連接的設(shè)備進(jìn)行監(jiān)測(cè),且不需要通過軟件不停地掃描數(shù)字輸入接口,節(jié)約資源,提高應(yīng)用軟件的執(zhí)行效率。主機(jī)通過調(diào)用預(yù)設(shè)的函數(shù)向處理器發(fā)送設(shè)置信息,對(duì)數(shù)字輸出接口進(jìn)行控制,使數(shù)字輸入輸出接口的控制功能更加可靠和多樣,能適用于各種應(yīng)用場(chǎng)合。此外,能夠?yàn)橛脩籼峁?biāo)準(zhǔn)的接口函數(shù),可擴(kuò)展性強(qiáng),方便用戶進(jìn)行開發(fā),且處理器的數(shù)據(jù)處理對(duì)于用戶是隱藏的,當(dāng)升級(jí)處理器時(shí)不影響用戶使用。處理器通過串行接口與主機(jī)連接,實(shí)現(xiàn)了數(shù)字輸入輸出接口與主機(jī)的剝離,對(duì)安全性、可靠性與工業(yè)現(xiàn)場(chǎng)的布線都有一定的優(yōu)化,方便進(jìn)行遠(yuǎn)距離傳輸。附圖說明圖1為一個(gè)實(shí)施例中控制數(shù)字輸入輸出接口的方法的流程示意圖;圖2為一個(gè)實(shí)施例中本發(fā)明的硬件結(jié)構(gòu)示意圖;圖3為一個(gè)實(shí)施例中修改波特率的流程示意圖;圖4為一個(gè)實(shí)施例中上傳數(shù)字輸入接口信息的流程示意圖;圖5為一個(gè)實(shí)施例中重新上傳數(shù)字輸入接口信息的流程示意圖;圖6為一個(gè)實(shí)施例中設(shè)置數(shù)字輸出接口的流程示意圖;圖7為一個(gè)實(shí)施例中用于控制數(shù)字輸入輸出接口的處理器的結(jié)構(gòu)示意圖;圖8為另一個(gè)實(shí)施例中用于控制數(shù)字輸入輸出接口的處理器的結(jié)構(gòu)示意圖;圖9為一個(gè)實(shí)施例中發(fā)送模塊的內(nèi)部結(jié)構(gòu)示意圖;圖10為一個(gè)實(shí)施例中設(shè)置模塊的內(nèi)部結(jié)構(gòu)示意圖;圖11為另一個(gè)實(shí)施例中用于控制數(shù)字輸入輸出接口的處理器的結(jié)構(gòu)示意圖;圖12為一個(gè)實(shí)施例中控制數(shù)字輸入輸出接口的系統(tǒng)的結(jié)構(gòu)示意圖。具體實(shí)施方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。如圖1所示,一種控制數(shù)字輸入輸出接口的方法,包括以下步驟:步驟S110,檢測(cè)數(shù)字輸入接口是否發(fā)生中斷,若是,則執(zhí)行步驟S120,若否,則繼續(xù)執(zhí)行步驟S110。具體的,處理器與主機(jī)建立通信連接,處理器可為嵌入式ARM(AdvancedRISCMachines)、DSP(DigitalSignalProcessing,數(shù)字信號(hào)處理)等支持GPIO具有中斷功能的處理器,當(dāng)其中任意一個(gè)GPI(通用輸入口)發(fā)生中斷,處理器即可檢測(cè)到中斷,并將中斷信息上傳至主機(jī)。中斷類型可包括外接設(shè)備請(qǐng)求中斷、電源故障中斷、實(shí)時(shí)時(shí)鐘中斷等,外接設(shè)備請(qǐng)求中斷為外接設(shè)備請(qǐng)求處理器提供服務(wù)發(fā)生的中斷,一般可包括外接設(shè)備啟動(dòng)、關(guān)閉、運(yùn)行、故障等產(chǎn)生的中斷。每個(gè)GPI產(chǎn)生中斷的中斷源可能不同,將會(huì)導(dǎo)致中斷優(yōu)先級(jí)不同,處理器可設(shè)置全部GPI的中斷優(yōu)先級(jí)相同,并采用并行處理的方式處理GPI發(fā)生的中斷。處理器只要檢測(cè)到中斷,即可上傳中斷信息,而不是采用X86平臺(tái)的查詢方式,可節(jié)約資源開銷。進(jìn)一步的實(shí)施例中,在步驟檢測(cè)數(shù)字輸入接口是否發(fā)生中斷之前,還包括 步驟a和步驟b:步驟a:采用串行接口與主機(jī)建立通信連接。具體的,處理器可采用串行接口與主機(jī)建立通信連接,串行接口可為RS-232、RS485等能實(shí)現(xiàn)數(shù)據(jù)通信的接口,主機(jī)通過串行接口監(jiān)控GPIO功能,且能適應(yīng)遠(yuǎn)距離傳輸數(shù)據(jù)的要求,使數(shù)據(jù)傳輸更為可靠。處理器通過串行接口與主機(jī)連接,實(shí)現(xiàn)了數(shù)字輸入輸出接口與主機(jī)的剝離,對(duì)安全性、可靠性與工業(yè)現(xiàn)場(chǎng)的布線都有一定的優(yōu)化。在其它的實(shí)施例中,處理器也可采用IIC(Inter-IntegratedCircuit,集成電路總線)等其它方式與主機(jī)建立通信連接。步驟b:通過串行接口與主機(jī)進(jìn)行數(shù)據(jù)傳輸。具體的,處理器與主機(jī)通過串行接口進(jìn)行數(shù)據(jù)傳輸,可預(yù)先通過對(duì)處理器進(jìn)行編程,定義通信協(xié)議,處理器與主機(jī)根據(jù)定義的通信協(xié)議實(shí)現(xiàn)數(shù)據(jù)傳輸,用戶只需對(duì)主機(jī)進(jìn)行操作,即可通過串口實(shí)現(xiàn)控制GPIO功能。步驟S120,根據(jù)中斷生成第一數(shù)據(jù)包,并將第一數(shù)據(jù)包發(fā)送給主機(jī),以使主機(jī)解析第一數(shù)據(jù)包并根據(jù)解析結(jié)果獲取數(shù)字輸入接口的信息。具體的,處理器根據(jù)檢測(cè)到的中斷生成第一數(shù)據(jù)包,第一數(shù)據(jù)包中包括GPI的中斷信息,處理器按照預(yù)先定義的通信協(xié)議通過串行接口將第一數(shù)據(jù)包發(fā)送給主機(jī)。主機(jī)接收第一數(shù)據(jù)包后,根據(jù)通信協(xié)議進(jìn)行解析,并根據(jù)解析結(jié)果獲取數(shù)字輸入接口的信息,數(shù)字輸入接口的信息可包括所有數(shù)字輸入接口的輸入電平、部分?jǐn)?shù)字輸入接口的輸入電平、一個(gè)數(shù)字輸入接口的輸入電平及波特率參數(shù)中的一種或多種。主機(jī)通過獲取的GPI信息可對(duì)GPI進(jìn)行監(jiān)測(cè),一旦與GPI連接的外接設(shè)備發(fā)生電平變化,例如因繼電器開關(guān)、電機(jī)檔位、設(shè)備狀態(tài)變化等發(fā)生電平變化,GPI即會(huì)產(chǎn)生相應(yīng)的中斷,處理器將中斷信息發(fā)送至主機(jī),使主機(jī)可隨時(shí)對(duì)GPI和外接設(shè)備進(jìn)行監(jiān)測(cè)。進(jìn)一步的實(shí)施例中,上述方法還包括步驟:根據(jù)預(yù)設(shè)的通信協(xié)議與主機(jī)進(jìn)行數(shù)據(jù)傳輸。具體的,通信協(xié)議可根據(jù)實(shí)際應(yīng)用需求進(jìn)行規(guī)定。在本實(shí)施例中,定義通信協(xié)議的長(zhǎng)度固定為8字節(jié),命令幀的格式包括幀頭、命令字節(jié)、參數(shù)設(shè)置區(qū)及校驗(yàn)和,具體如表1所示:表1幀頭幀頭命令字節(jié)參數(shù)設(shè)置區(qū)校驗(yàn)和其中,幀頭占用2字節(jié),幀頭命名可將命令幀分為主動(dòng)幀、被動(dòng)幀、應(yīng)答幀等,例如,可規(guī)定幀頭為55AA表示主動(dòng)幀,AA55表示被動(dòng)幀,66BB表示應(yīng)答幀等。對(duì)命令幀進(jìn)行命名,可方便處理器及主機(jī)對(duì)其進(jìn)行處理辨別。命令字節(jié)占用1字節(jié),用來分辨命令類型為原始命令或是回傳命令等,例如可規(guī)定命令第6位為1表示原始命令,第7位為1表示回傳命令等。參數(shù)設(shè)置區(qū)用來傳遞數(shù)據(jù),占用4字節(jié),且根據(jù)不同的命令數(shù)據(jù)不同。校驗(yàn)和占用1字節(jié),校驗(yàn)和為命令幀內(nèi)前7字節(jié)按無符號(hào)數(shù)累加求和。例如,設(shè)置GPO(通用輸出口)電平時(shí),主機(jī)給處理器發(fā)送的初始化GPIO報(bào)文,如表2所示:表2幀頭幀頭命令字節(jié)數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3效驗(yàn)和33CC01FF00000000數(shù)據(jù)0定義GPO16-GPO9的電平,數(shù)據(jù)1定義GPO8-GPO1的電平,數(shù)據(jù)2定義GPI16-GPI9的電平,數(shù)據(jù)3定義GPI8-GPI1的電平,上表表示設(shè)置GPO9-GPO16輸出高電平,GPO1-GPO8輸出低電平。若主機(jī)與處理器通信成功,處理器向主機(jī)應(yīng)答,應(yīng)答報(bào)文如表3所示:表3幀頭幀頭命令字節(jié)數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3效驗(yàn)和CC33810000FF0000數(shù)據(jù)0定義GPI16-GPI9的電平,數(shù)據(jù)1定義GPI8-GPI1的電平,數(shù)據(jù)2定義GPO16-GPO9的電平,數(shù)據(jù)3定義GPO8-GPO1的電平,上表表示GPI1-GPI16輸入全為低電平,GPO9-GPO16輸出高電平,GPO1-GPO8輸出低電平。通信協(xié)議可根據(jù)實(shí)際應(yīng)用需求進(jìn)行設(shè)置,在此基礎(chǔ)上也可設(shè)置其它報(bào)文形式,如通信協(xié)議的協(xié)議報(bào)文可改變長(zhǎng)度、增加幀長(zhǎng)命令、幀尾、CRC(CyclicalRedundancyCheck,循環(huán)冗余碼校驗(yàn))校驗(yàn)等。步驟S130,接收由主機(jī)發(fā)送的第二數(shù)據(jù)包。具體的,第二數(shù)據(jù)包根據(jù)主機(jī)調(diào)用預(yù)設(shè)的函數(shù)生成,預(yù)設(shè)的函數(shù)可包括獲取一個(gè)GPO輸出電平、獲取所有GPO輸出電平、獲取部分GPO輸出電平、初始化所有GPO輸出電平、設(shè)置一個(gè)GPO輸出電平、獲取所有GPI輸入電平、獲取一個(gè)GPI輸入電平、獲取部分GPI輸入電平、設(shè)置波特率參數(shù)、獲取波特率參數(shù)等中的一個(gè)或多個(gè)。主機(jī)可預(yù)先設(shè)置函數(shù),處理器也可設(shè)置一些基本函數(shù),例如上傳所有GPI輸入電平、上傳一個(gè)GPI輸入電平、上傳部分GPI輸入電平、獲取波特率參數(shù)、上傳波特率參數(shù)等,用于完成上傳GPI信息的功能。主機(jī)通過調(diào)用預(yù)設(shè)的函數(shù)可實(shí)現(xiàn)設(shè)置GPO信息、獲取GPIO信息及設(shè)置波特率等功能。為用戶提供這些函數(shù),使得GPIO的擴(kuò)展性變強(qiáng),當(dāng)用戶需要進(jìn)行開發(fā)時(shí),只需增加新的函數(shù)即可實(shí)現(xiàn)更多的控制GPIO功能。進(jìn)一步的實(shí)施例中,在步驟接收由主機(jī)發(fā)送的第二數(shù)據(jù)包之后,還包括步驟:根據(jù)命令幀格式中的校驗(yàn)和判斷接收的第二數(shù)據(jù)包是否正確,若所述校驗(yàn)和發(fā)生錯(cuò)誤,則丟棄所述第二數(shù)據(jù)包。具體的,數(shù)據(jù)包中加入了校驗(yàn)和,接收端通過判斷校驗(yàn)和是否正確來判斷所接收的數(shù)據(jù)包是否發(fā)生錯(cuò)誤。處理器接收第二數(shù)據(jù)包并判斷第二數(shù)據(jù)包中的校驗(yàn)和是否正確,當(dāng)校驗(yàn)和發(fā)生錯(cuò)誤時(shí),丟棄第二數(shù)據(jù)包,此時(shí),主機(jī)得不到處理器應(yīng)答,將會(huì)重新發(fā)送第二數(shù)據(jù)包。此外,當(dāng)處理器向主機(jī)發(fā)送第一數(shù)據(jù)包時(shí),主機(jī)接收第一數(shù)據(jù)包并判斷第一數(shù)據(jù)包中的校驗(yàn)和是否正確,當(dāng)校驗(yàn)和發(fā)生錯(cuò)誤時(shí),丟棄第一數(shù)據(jù)包,由處理器重新發(fā)送第一數(shù)據(jù)包。可保證數(shù)據(jù)的正確性和完整性。步驟S140,解析第二數(shù)據(jù)包。具體的,處理器根據(jù)通信協(xié)議解析第二數(shù)據(jù)包,并獲取GPO信息。步驟S150,根據(jù)解析結(jié)果獲取數(shù)字輸出接口的信息,并根據(jù)該數(shù)字輸出接口的信息設(shè)置數(shù)字輸出接口。具體的,數(shù)字輸出接口的信息可包括所有數(shù)字輸出接口的輸出電平、部分?jǐn)?shù)字輸出接口的輸出電平、一個(gè)數(shù)字輸出接口的輸出電平及波特率參數(shù)中的一種或多種。處理器根據(jù)獲取的GPO信息對(duì)GPO進(jìn)行設(shè)置,實(shí)現(xiàn)對(duì)GPIO功能的 控制。在進(jìn)一步的實(shí)施例中,上述方法還可包括步驟:接收由主機(jī)每隔特定時(shí)間發(fā)送的心跳包。具體的,該特定時(shí)間可根據(jù)需求進(jìn)行設(shè)置,例如3s(秒)、5s等,當(dāng)串行接口空閑超過該特定時(shí)間時(shí),即表示處理器與主機(jī)處于無數(shù)據(jù)傳輸?shù)目臻e時(shí)間,主機(jī)通過串行接口向處理器發(fā)送心跳包,一旦處理器無應(yīng)答,主機(jī)的系統(tǒng)應(yīng)用層即可快速發(fā)現(xiàn)通信異常并進(jìn)行報(bào)警,通信異常可能由主機(jī)端口錯(cuò)誤、串行接口線連接出錯(cuò)、外界干擾及GPIO功能出錯(cuò)等問題導(dǎo)致。心跳包占用的系統(tǒng)資源少,在無數(shù)據(jù)傳輸?shù)目臻e時(shí)間,主機(jī)每隔特定時(shí)間向處理器發(fā)送心跳包可保證通信正常。上述控制數(shù)字輸入輸出接口的方法,處理器可檢測(cè)數(shù)字輸入接口的中斷并上傳中斷信息給主機(jī),方便主機(jī)對(duì)與數(shù)字輸入接口連接的設(shè)備進(jìn)行監(jiān)測(cè),且不需要通過軟件不停地掃描數(shù)字輸入接口,節(jié)約資源,提高應(yīng)用軟件的執(zhí)行效率。主機(jī)通過調(diào)用預(yù)設(shè)的函數(shù)向處理器發(fā)送設(shè)置信息,對(duì)數(shù)字輸出接口進(jìn)行控制,使數(shù)字輸入輸出接口的控制功能更加可靠和多樣,能適用于各種應(yīng)用場(chǎng)合。此外,能夠?yàn)橛脩籼峁?biāo)準(zhǔn)的接口函數(shù),可擴(kuò)展性強(qiáng),方便用戶進(jìn)行開發(fā),且處理器的數(shù)據(jù)處理對(duì)于用戶是隱藏的,當(dāng)升級(jí)處理器時(shí)不影響用戶使用。處理器通過串行接口與主機(jī)連接,實(shí)現(xiàn)了數(shù)字輸入輸出接口與主機(jī)的剝離,對(duì)安全性、可靠性與工業(yè)現(xiàn)場(chǎng)的布線都有一定的優(yōu)化,方便進(jìn)行遠(yuǎn)距離傳輸。圖2為一個(gè)實(shí)施例中本發(fā)明的硬件結(jié)構(gòu)示意圖。如圖2所示,在一個(gè)實(shí)施例中,處理器為ARMM0系列的ARMM054芯片,用來控制數(shù)字輸入輸出接口,利用串行接口RS-232和/或RS-485作為傳輸總線,與主機(jī)的DB9串行接口建立通信連接。處理器與主機(jī)之間以串行接口協(xié)議為基礎(chǔ),可定義一組通信協(xié)議完成數(shù)據(jù)的雙向通信。在ARMM054芯片的控制下,擴(kuò)展出16路隔離的數(shù)字輸入接口及16路數(shù)字輸出接口??偩€驅(qū)動(dòng)為數(shù)字輸入輸出的驅(qū)動(dòng)電路,其供電能力強(qiáng),滿足工業(yè)現(xiàn)場(chǎng)使用。處理器還加入了組合邏輯電路,當(dāng)關(guān)閉軟件控制數(shù)字輸入輸出功能,可由硬件完成簡(jiǎn)單的數(shù)字輸入輸出功能。數(shù)字輸入接口及數(shù)字輸出接口利用光耦進(jìn)行隔離,使數(shù)字輸入接口及數(shù)字 輸出接口具有防干擾能力。ARMM054芯片支持所有GPIO具有中斷功能,只要檢測(cè)到中斷,即可上傳中斷信息至主機(jī),節(jié)約資源花銷,且ARMM054芯片的GPIO中斷時(shí)鐘源可以設(shè)置高達(dá)48Mhz(兆赫),對(duì)于極短的電平變化,都可以高效準(zhǔn)確地偵測(cè)到,同時(shí),ARMM054芯片的GPIO還可設(shè)置具有去抖動(dòng)功能,能夠減少外界環(huán)境因素引起的誤判斷,提高偵測(cè)判斷能力及效率。此外,ARMM054芯片可采用指令冗余、軟件陷阱和看門狗等確保程序的可靠正確運(yùn)行。在各工業(yè)應(yīng)用環(huán)境中,例如水利、電力、交通等行業(yè)都可使用本發(fā)明對(duì)外接設(shè)備及數(shù)字輸入輸出接口進(jìn)行控制及監(jiān)控,且性能可靠、成本低廉。在其它的實(shí)施例中,處理器還可為ARMM3系列芯片、ARMM4系列芯片、DSP芯片等。如圖3所示,在一個(gè)實(shí)施例中,上述方法,還包括以下步驟:步驟S302,接收由主機(jī)發(fā)送的第二數(shù)據(jù)包。步驟S304,解析第二數(shù)據(jù)包,并根據(jù)解析結(jié)果獲取波特率設(shè)置信息。具體的,主機(jī)通過調(diào)用設(shè)置波特率參數(shù)的函數(shù)進(jìn)行設(shè)置波特率,并生成第二數(shù)據(jù)包。處理器接收包含波特率設(shè)置信息的第二數(shù)據(jù)包,根據(jù)通信協(xié)議解析第二數(shù)據(jù)包并獲取波特率設(shè)置信息。波特率為處理器或主機(jī)在串行接口通信時(shí)的速率。步驟S306,向主機(jī)應(yīng)答,并反饋波特率信息。具體的,處理器接收成功后,向主機(jī)發(fā)送應(yīng)答報(bào)文,應(yīng)答報(bào)文中包含波特率信息,波特率信息可包括原波特率及待設(shè)置的波特率。步驟S308,判斷主機(jī)是否應(yīng)答,若是,則執(zhí)行步驟S312,若否,則執(zhí)行步驟S310。具體的,處理器向主機(jī)反饋波特率信息后,判斷主機(jī)是否應(yīng)答,若主機(jī)應(yīng)答,則表示通信成功,根據(jù)波特率設(shè)置信息修改波特率,同時(shí),主機(jī)也根據(jù)波特率設(shè)置信息修改波特率。若主機(jī)無應(yīng)答,則處理器重新向主機(jī)反饋波特率信息。步驟S310,記錄反饋次數(shù),并判斷反饋次數(shù)是否超過第一閾值,若是,則執(zhí)行步驟S312,若否,則執(zhí)行步驟S306。具體的,處理器記錄反饋次數(shù),當(dāng)反饋次數(shù)超過第一閾值時(shí),不再向主機(jī)反饋波特率信息,直接根據(jù)波特率設(shè)置信息修改波特率。第一閾值可根據(jù)實(shí)際應(yīng)用情況進(jìn)行設(shè)置,例如4次、5次等。步驟S312,根據(jù)波特率設(shè)置信息修改波特率。步驟S314,將修改后的波特率進(jìn)行存儲(chǔ)。具體的,處理器可將修改后的波特率寫入內(nèi)部Flash(閃存)存儲(chǔ)器中進(jìn)行存儲(chǔ)。此外,除了由通過主機(jī)調(diào)用函數(shù)進(jìn)行修改波特率外,還可對(duì)處理器硬件設(shè)計(jì)固定波特率,防止用戶使用出錯(cuò)。上述控制數(shù)字輸入輸出接口的方法,可通過調(diào)用函數(shù)設(shè)置波特率信息,滿足不同用戶波特率的需求,使串行接口控制更加靈活。此外,設(shè)置的波特率信息可掉電保存,在不需要修改的情況下,串行接口能以掉電之前的波特率繼續(xù)工作,節(jié)省人力的開銷和維護(hù)。如圖4所示,一個(gè)實(shí)施例中,步驟將第一數(shù)據(jù)包發(fā)送給主機(jī),具體包括以下步驟:步驟S402,通過串行接口向主機(jī)發(fā)送第一數(shù)據(jù)包。具體的,GPI的所有引腳可全部設(shè)置為邊沿變化中斷,當(dāng)電平發(fā)生變化時(shí),即可產(chǎn)生中斷,處理器可即時(shí)將電平變化信息上傳至主機(jī)。步驟S404,第一預(yù)設(shè)時(shí)間后判斷主機(jī)是否應(yīng)答,若是,則執(zhí)行步驟S406,若否,則執(zhí)行步驟S408。具體的,第一預(yù)設(shè)時(shí)間可根據(jù)實(shí)際應(yīng)用情況進(jìn)行設(shè)置,例如設(shè)置為20ms(毫秒)、30ms等,若在第一預(yù)設(shè)時(shí)間內(nèi)主機(jī)無應(yīng)答,則可認(rèn)為通信失敗,處理器重新向主機(jī)發(fā)送第一數(shù)據(jù)包。步驟S406,通信成功。步驟S408,記錄重發(fā)次數(shù),判斷重發(fā)次數(shù)是否超過第二閾值,若是,則執(zhí)行步驟S410,若否,則執(zhí)行步驟S402。具體的,記錄重發(fā)次數(shù),當(dāng)重發(fā)次數(shù)超過第二閾值時(shí),則停止向主機(jī)發(fā)送第一數(shù)據(jù)包。第二閾值可根據(jù)實(shí)際應(yīng)用情況進(jìn)行設(shè)置,例如5次、7次等。步驟S410,停止重新發(fā)送第一數(shù)據(jù)包。上述控制數(shù)字輸入輸出接口的方法,主機(jī)通過獲取的GPI信息可對(duì)GPI進(jìn)行監(jiān)測(cè),一旦與GPI連接的外接設(shè)備發(fā)生電平變化,例如因繼電器開關(guān)、電機(jī)檔位、設(shè)備狀態(tài)變化等發(fā)生電平變化,GPI即會(huì)產(chǎn)生相應(yīng)的中斷,處理器將中斷信息發(fā)送至主機(jī),使主機(jī)可隨時(shí)對(duì)GPI和外接設(shè)備進(jìn)行監(jiān)測(cè)。除了上傳GPI信息,處理器向主機(jī)上傳GPO信息、波特率信息等時(shí)也可采用上述步驟進(jìn)行上傳。如圖5所示,在一個(gè)實(shí)施例中,上述方法還包括以下步驟:步驟S502,標(biāo)記需要重新向主機(jī)發(fā)送第一數(shù)據(jù)包的數(shù)字輸入接口。具體的,因處理器可預(yù)先設(shè)置所有GPI的中斷優(yōu)先級(jí)相同,并采用并行處理各GPI發(fā)生的中斷,對(duì)于需要重新上傳的GPI,先分別標(biāo)記,然后并行處理重發(fā)數(shù)據(jù),當(dāng)一個(gè)GPI多次觸發(fā)重發(fā)機(jī)制時(shí),處理器將處理該GPI最后一次狀態(tài)變化產(chǎn)生的中斷信息。步驟S504,計(jì)時(shí)到第二預(yù)設(shè)時(shí)間。具體的,第二預(yù)設(shè)時(shí)間可根據(jù)實(shí)際應(yīng)用需求進(jìn)行設(shè)置,例如設(shè)置為40ms、50ms等,計(jì)時(shí)到后才對(duì)被標(biāo)記的GPI進(jìn)行索引。步驟S506,對(duì)被標(biāo)記的數(shù)字輸入接口進(jìn)行索引。具體的,GPI可預(yù)先設(shè)置標(biāo)記位,當(dāng)需要重新上傳數(shù)據(jù)時(shí),該標(biāo)記位發(fā)生變化,例如從0變?yōu)?,或是從1變?yōu)?,分別對(duì)被標(biāo)記的各個(gè)GPI進(jìn)行索引。步驟S508,判斷被標(biāo)記的數(shù)字輸入接口的中斷標(biāo)志是否有效,若是,則執(zhí)行步驟S510,若否,則執(zhí)行步驟S512。具體的,中斷標(biāo)志用來描述中斷狀態(tài),通??杀硎臼欠癜l(fā)生中斷,一般情況下,當(dāng)GPI發(fā)生中斷,中斷標(biāo)志從0變?yōu)?,表示發(fā)生中斷,當(dāng)中斷標(biāo)志從1變?yōu)?,則表示中斷失效。處理器對(duì)被標(biāo)記的各個(gè)GPI進(jìn)行索引并判斷其中斷標(biāo)志是否有效,當(dāng)該中斷標(biāo)志有效時(shí),處理器重新向主機(jī)發(fā)送該被索引的GPI的數(shù)據(jù)。步驟S510,重新向主機(jī)發(fā)送與該數(shù)字輸入接口對(duì)應(yīng)的第一數(shù)據(jù)包并記錄索引次數(shù)。步驟S512,判斷索引次數(shù)是否超過第三閾值,若是,則執(zhí)行步驟S514,若否,則執(zhí)行步驟S504。具體的,第三閾值可根據(jù)實(shí)際應(yīng)用需求進(jìn)行設(shè)置,例如5次、8次等。當(dāng)索引次數(shù)超過第三閾值時(shí),清除所有GPI的中斷標(biāo)志、索引次數(shù)以及相關(guān)變量,若索引次數(shù)未超過第三閾值,則第二預(yù)設(shè)時(shí)間后繼續(xù)索引下一個(gè)被標(biāo)記的GPI并判斷其中斷標(biāo)志是否有效。步驟S514,清除所有數(shù)字輸入接口的中斷標(biāo)志及索引次數(shù)。具體的,將所有GPI的中斷標(biāo)志重置為0,即不產(chǎn)生中斷時(shí)的狀態(tài),將索引次數(shù)重置為0,并將相關(guān)變量進(jìn)行重置,相關(guān)變量可為實(shí)時(shí)計(jì)時(shí)等。上述控制數(shù)字輸入輸出接口的方法,利用通信協(xié)議建立處理器與主機(jī)之間的重發(fā)機(jī)制,當(dāng)二者通信發(fā)生異常時(shí),將觸發(fā)該重發(fā)機(jī)制,并采用并行處理的方式,更為快速有效,能保證處理器與主機(jī)之間數(shù)據(jù)傳輸正確。上述重發(fā)機(jī)制除了應(yīng)用于處理器向主機(jī)上傳GPI信息,也可應(yīng)用于主機(jī)向處理器發(fā)送設(shè)置GPO信息。如圖6所示,在一個(gè)實(shí)施例中,步驟根據(jù)解析結(jié)果獲取數(shù)字輸出接口的信息,并根據(jù)數(shù)字輸出接口的信息設(shè)置數(shù)字輸出接口,具體包括以下步驟:步驟S602,根據(jù)解析結(jié)果獲取數(shù)字輸出接口的設(shè)置信息。具體的,處理器接收由主機(jī)發(fā)送的第二數(shù)據(jù)包,并根據(jù)通信協(xié)議解析該第二數(shù)據(jù)包獲取GPO的設(shè)置信息。主機(jī)通過調(diào)用預(yù)設(shè)的函數(shù),并生成對(duì)應(yīng)的第二數(shù)據(jù)包發(fā)送給處理器來設(shè)置GPO功能。步驟S604,根據(jù)設(shè)置信息設(shè)置對(duì)應(yīng)的數(shù)字輸出接口。具體的,處理器根據(jù)設(shè)置信息設(shè)置對(duì)應(yīng)的GPO,可包括設(shè)置全部GPO輸出電平、部分GPO輸出電平、一個(gè)GPO輸出電平等。步驟S608,判斷數(shù)字輸出接口是否設(shè)置成功,若是,則執(zhí)行步驟S610,若否,則執(zhí)行步驟S612。具體的,在部分應(yīng)用場(chǎng)景下,處理器常常需要判斷GPO是否設(shè)置成功,例如當(dāng)外接設(shè)備發(fā)生故障時(shí),可能會(huì)產(chǎn)生設(shè)置失敗的情況等。可在處理器中增加相應(yīng)的硬件偵測(cè)和軟件判斷處理過程,用于判斷是否發(fā)生人為操作失誤、環(huán)境干擾、機(jī)器設(shè)備故障等異常狀況,從而提高處理器的可靠性,保證控制數(shù)字輸入輸出接口功能的可靠性、安全性。當(dāng)GPO設(shè)置成功,處理器向主機(jī)發(fā)送應(yīng)答 報(bào)文,表示設(shè)置成功,當(dāng)設(shè)置失敗時(shí),處理器對(duì)該GPO重新進(jìn)行設(shè)置。步驟S610,向主機(jī)應(yīng)答成功。步驟S612,記錄重設(shè)次數(shù),判斷重設(shè)次數(shù)是否超過第四閾值,若是,則執(zhí)行步驟S614,若否,則執(zhí)行步驟S604。具體的,第四閾值可根據(jù)實(shí)際應(yīng)用需求進(jìn)行設(shè)置,例如5次、6次等,當(dāng)重設(shè)次數(shù)超過第四閾值,則處理器停止重新設(shè)置,并向主機(jī)反饋錯(cuò)誤及該GPO的輸出電平。步驟S614,向主機(jī)反饋錯(cuò)誤及數(shù)字輸出接口的輸出電平。在進(jìn)一步的實(shí)施例中,上述方法還包括步驟:開機(jī)上電后,初始化輸出電平。具體的,處量器及主機(jī)開機(jī)上電后,GPO的輸出電平具有可配置功能,即開機(jī)上電后GPO的輸出電平可定制化,方便用戶需求。步驟開機(jī)上電后,初始化輸出電平,具體包括以下步驟:(1)判斷數(shù)字輸出接口是否使能,若是,則讀取預(yù)先分配的配置表,根據(jù)配置表獲取初始輸出電平。具體的,可預(yù)先將GPO的配置信息通過燒錄工具等寫入處理器內(nèi)部Flash或外部EEPROM(ElectricallyErasableProgrammableRead-OnlyMemory,電可擦可編程只讀存儲(chǔ)器)等存儲(chǔ)器中,生成對(duì)應(yīng)的配置表,通過該配置表可對(duì)GPO的初始輸出電平進(jìn)行設(shè)置。當(dāng)開機(jī)上電后,處理器通過GPO的使能位狀態(tài)判斷GPO是否使能,若GPO使能,即表示配置表功能打開,則直接從內(nèi)部Flash或外部EEPROM等存儲(chǔ)器中讀取配置表,并根據(jù)配置表獲取GPO的初始輸出電平并進(jìn)行設(shè)置。此外,也可通過主機(jī)調(diào)用預(yù)設(shè)的函數(shù)對(duì)GPO初始輸出電平進(jìn)行設(shè)置。(2)若否,則等待接收由主機(jī)發(fā)送的第二數(shù)據(jù)包,然后解析第二數(shù)據(jù)包,并根據(jù)解析結(jié)果獲取初始輸出電平。具體的,若GPO不使能,即表示配置表功能關(guān)閉,或是內(nèi)部Flash或外部EEPROM等存儲(chǔ)器中不存在配置表,則由主機(jī)調(diào)用預(yù)設(shè)的函數(shù)對(duì)GPO初始輸出電平進(jìn)行設(shè)置。處理器接收由主機(jī)發(fā)送的第二數(shù)據(jù)包,并根據(jù)通信協(xié)議進(jìn)行解 析獲取GPO初始輸出電平進(jìn)行設(shè)置。上述控制數(shù)字輸入輸出接口的方法,可通過調(diào)用函數(shù)設(shè)置GPO功能,滿足不同的控制數(shù)字?jǐn)?shù)入輸出需求。此外,設(shè)置的GPO初始化輸出電平可掉電保存,在不需要重新設(shè)置的情況下,GPO能以掉電之前的輸出電平繼續(xù)工作,節(jié)省人力的開銷和維護(hù)。如圖7所示,一種用于控制數(shù)字輸入輸出接口的處理器,包括通信模塊710、檢測(cè)模塊720、發(fā)送模塊730、接收模塊740、解析模塊750及設(shè)置模塊760。通信模塊710,用于采用串行接口與主機(jī)建立通信連接。具體的,處理器可采用串行接口與主機(jī)建立通信連接,串行接口可為RS-232、RS485等能實(shí)現(xiàn)數(shù)據(jù)通信的接口,主機(jī)通過串行接口監(jiān)控GPIO功能,且能適應(yīng)遠(yuǎn)距離傳輸數(shù)據(jù)的要求,使數(shù)據(jù)傳輸更為可靠。處理器通過串行接口與主機(jī)連接,實(shí)現(xiàn)了數(shù)字輸入輸出接口與主機(jī)的剝離,對(duì)安全性、可靠性與工業(yè)現(xiàn)場(chǎng)的布線都有一定的優(yōu)化。在其它的實(shí)施例中,處理器也可采用IIC等其它方式與主機(jī)建立通信連接。檢測(cè)模塊720,用于檢測(cè)數(shù)字輸入接口是否發(fā)生中斷。具體的,處理器與主機(jī)建立通信連接,處理器可為嵌入式ARM、DSP等支持GPIO具有中斷功能的處理器,當(dāng)其中任意一個(gè)GPI發(fā)生中斷,處理器即可檢測(cè)到中斷,并將中斷信息上傳至主機(jī)。中斷類型可包括外接設(shè)備請(qǐng)求中斷、電源故障中斷、實(shí)時(shí)時(shí)鐘中斷等,外接設(shè)備請(qǐng)求中斷為外接設(shè)備請(qǐng)求處理器提供服務(wù)發(fā)生的中斷,一般可包括外接設(shè)備啟動(dòng)、關(guān)閉、運(yùn)行、故障等產(chǎn)生的中斷。每個(gè)GPI產(chǎn)生中斷的中斷源可能不同,將會(huì)導(dǎo)致中斷優(yōu)先級(jí)不同,處理器可設(shè)置全部GPI的中斷優(yōu)先級(jí)相同,并采用并行處理的方式處理GPI發(fā)生的中斷。處理器只要檢測(cè)到中斷,即可上傳中斷信息,而不是采用X86平臺(tái)的查詢方式,可節(jié)約資源開銷。發(fā)送模塊730,用于當(dāng)檢測(cè)到數(shù)字輸入接口發(fā)生中斷時(shí),根據(jù)中斷生成第一數(shù)據(jù)包,并將第一數(shù)據(jù)包發(fā)送給主機(jī),以使主機(jī)解析第一數(shù)據(jù)包并根據(jù)解析結(jié)果獲取數(shù)字輸入接口的信息。具體的,處理器根據(jù)檢測(cè)到的中斷生成第一數(shù)據(jù)包,第一數(shù)據(jù)包中包括GPI的中斷信息,處理器按照預(yù)先定義的通信協(xié)議通過串行接口將第一數(shù)據(jù)包發(fā)送給主機(jī)。主機(jī)接收第一數(shù)據(jù)包后,根據(jù)通信協(xié)議進(jìn)行解析,并根據(jù)解析結(jié)果獲取數(shù)字輸入接口的信息,數(shù)字輸入接口的信息可包括所有數(shù)字輸入接口的輸入電平、部分?jǐn)?shù)字輸入接口的輸入電平、一個(gè)數(shù)字輸入接口的輸入電平及波特率參數(shù)中的一種或多種。主機(jī)通過獲取的GPI信息可對(duì)GPI進(jìn)行監(jiān)測(cè),一旦與GPI連接的外接設(shè)備發(fā)生電平變化,例如因繼電器開關(guān)、電機(jī)檔位、設(shè)備狀態(tài)變化等發(fā)生電平變化,GPI即會(huì)產(chǎn)生相應(yīng)的中斷,處理器將中斷信息發(fā)送至主機(jī),使主機(jī)可隨時(shí)對(duì)GPI和外接設(shè)備進(jìn)行監(jiān)測(cè)。接收模塊740,用于接收由主機(jī)發(fā)送的第二數(shù)據(jù)包。具體的,第二數(shù)據(jù)包根據(jù)主機(jī)調(diào)用預(yù)設(shè)的函數(shù)生成,預(yù)設(shè)的函數(shù)可包括獲取一個(gè)GPO輸出電平、獲取所有GPO輸出電平、獲取部分GPO輸出電平、初始化所有GPO輸出電平、設(shè)置一個(gè)GPO輸出電平、獲取所有GPI輸入電平、獲取一個(gè)GPI輸入電平、獲取部分GPI輸入電平、設(shè)置波特率參數(shù)、獲取波特率參數(shù)等中的一個(gè)或多個(gè)。主機(jī)可預(yù)先設(shè)置函數(shù),處理器也可設(shè)置一些基本函數(shù),例如上傳所有GPI輸入電平、上傳一個(gè)GPI輸入電平、上傳部分GPI輸入電平、獲取波特率參數(shù)、上傳波特率參數(shù)等,用于完成上傳GPI信息的功能。主機(jī)通過調(diào)用預(yù)設(shè)的函數(shù)可實(shí)現(xiàn)設(shè)置GPO信息、獲取GPIO信息及設(shè)置波特率等功能。為用戶提供這些函數(shù),使得GPIO的擴(kuò)展性變強(qiáng),當(dāng)用戶需要進(jìn)行開發(fā)時(shí),只需增加新的函數(shù)即可實(shí)現(xiàn)更多的控制GPIO功能。發(fā)送模塊730和接收模塊740還用于通過串行接口與主機(jī)進(jìn)行數(shù)據(jù)傳輸。具體的,處理器與主機(jī)通過串行接口進(jìn)行數(shù)據(jù)傳輸,可預(yù)先通過對(duì)處理器進(jìn)行編程,定義通信協(xié)議,處理器與主機(jī)根據(jù)定義的通信協(xié)議實(shí)現(xiàn)數(shù)據(jù)傳輸,用戶只需對(duì)主機(jī)進(jìn)行操作,即可通過串口實(shí)現(xiàn)控制GPIO功能。解析模塊750,用于解析第二數(shù)據(jù)包。具體的,處理器根據(jù)通信協(xié)議解析第二數(shù)據(jù)包,并獲取GPO信息。設(shè)置模塊760,用于根據(jù)解析結(jié)果獲取數(shù)字輸出接口的信息,并根據(jù)數(shù)字輸出接口的信息設(shè)置所述數(shù)字輸出接口。具體的,數(shù)字輸出接口的信息可包括所有數(shù)字輸出接口的輸出電平、部分?jǐn)?shù)字輸出接口的輸出電平、一個(gè)數(shù)字輸出接口的輸出電平及波特率參數(shù)中的一種或多種。處理器根據(jù)獲取的GPO信息對(duì)GPO進(jìn)行設(shè)置,實(shí)現(xiàn)對(duì)GPIO功能的控制。在進(jìn)一步的實(shí)施例中,上述處理器還包括協(xié)議模塊和校驗(yàn)?zāi)K。協(xié)議模塊,用于根據(jù)預(yù)設(shè)的通信協(xié)議與主機(jī)進(jìn)行數(shù)據(jù)傳輸。具體的,通信協(xié)議可根據(jù)實(shí)際應(yīng)用需求進(jìn)行規(guī)定。在本實(shí)施例中,定義通信協(xié)議的長(zhǎng)度固定為8字節(jié),命令幀的格式包括幀頭、命令字節(jié)、參數(shù)設(shè)置區(qū)及校驗(yàn)和,具體如表1所示。其中,幀頭占用2字節(jié),幀頭命名可將命令幀分為主動(dòng)幀、被動(dòng)幀、應(yīng)答幀等,例如,可規(guī)定幀頭為55AA表示主動(dòng)幀,AA55表示被動(dòng)幀,66BB表示應(yīng)答幀等。對(duì)命令幀進(jìn)行命名,可方便處理器及主機(jī)對(duì)其進(jìn)行處理辨別。命令字節(jié)占用1字節(jié),用來分辨命令類型為原始命令或是回傳命令等,例如可規(guī)定命令第6位為1表示原始命令,第7位為1表示回傳命令等。參數(shù)設(shè)置區(qū)用來傳遞數(shù)據(jù),占用4字節(jié),且根據(jù)不同的命令數(shù)據(jù)不同。校驗(yàn)和占用1字節(jié),校驗(yàn)和為命令幀內(nèi)前7字節(jié)按無符號(hào)數(shù)累加求和。例如,設(shè)置GPO電平時(shí),主機(jī)給處理器發(fā)送的初始化GPIO報(bào)文如表2所示。若主機(jī)與處理器通信成功,處理器向主機(jī)應(yīng)答,應(yīng)答報(bào)文如表3所示。通信協(xié)議可根據(jù)實(shí)際應(yīng)用需求進(jìn)行設(shè)置,在此基礎(chǔ)上也可設(shè)置其它報(bào)文形式,如通信協(xié)議的協(xié)議報(bào)文可改變長(zhǎng)度、增加幀長(zhǎng)命令、幀尾、CRC校驗(yàn)等。校驗(yàn)?zāi)K,用于根據(jù)命令幀格式中的校驗(yàn)和判斷接收的第二數(shù)據(jù)包是否正確,若校驗(yàn)和發(fā)生錯(cuò)誤,則丟棄第二數(shù)據(jù)包。具體的,數(shù)據(jù)包中加入了校驗(yàn)和,接收端通過判斷校驗(yàn)和是否正確來判斷所接收的數(shù)據(jù)包是否發(fā)生錯(cuò)誤。處理器接收第二數(shù)據(jù)包并判斷第二數(shù)據(jù)包中的校驗(yàn)和是否正確,當(dāng)校驗(yàn)和發(fā)生錯(cuò)誤時(shí),丟棄第二數(shù)據(jù)包,此時(shí),主機(jī)得不到處理器應(yīng)答,將會(huì)重新發(fā)送第二數(shù)據(jù)包。此外,當(dāng)處理器向主機(jī)發(fā)送第一數(shù)據(jù)包時(shí),主機(jī)接收第一數(shù)據(jù)包并判斷第一數(shù)據(jù)包中的校驗(yàn)和是否正確,當(dāng)校驗(yàn)和發(fā)生錯(cuò)誤時(shí),丟棄第一數(shù)據(jù)包,由處理器重新發(fā)送第一數(shù)據(jù)包??杀WC數(shù)據(jù)的 正確性和完整性。在進(jìn)一步的實(shí)施例中,上述處理器還包括心跳包模塊。心跳包模塊,用于接收由主機(jī)每隔特定時(shí)間發(fā)送的心跳包。具體的,該特定時(shí)間可根據(jù)需求進(jìn)行設(shè)置,例如3s、5s等,當(dāng)串行接口空閑超過該特定時(shí)間時(shí),即表示處理器與主機(jī)處于無數(shù)據(jù)傳輸?shù)目臻e時(shí)間,主機(jī)通過串行接口向處理器發(fā)送心跳包,一旦處理器無應(yīng)答,主機(jī)的系統(tǒng)應(yīng)用層即可快速發(fā)現(xiàn)通信異常并進(jìn)行報(bào)警,通信異常可能由主機(jī)端口錯(cuò)誤、串行接口線連接出錯(cuò)、外界干擾及GPIO功能出錯(cuò)等問題導(dǎo)致。心跳包占用的系統(tǒng)資源少,在無數(shù)據(jù)傳輸?shù)目臻e時(shí)間,主機(jī)每隔特定時(shí)間向處理器發(fā)送心跳包可保證通信正常。上述用于控制數(shù)字輸入輸出接口的處理器,處理器可檢測(cè)數(shù)字輸入接口的中斷并上傳中斷信息給主機(jī),方便主機(jī)對(duì)與數(shù)字輸入接口連接的設(shè)備進(jìn)行監(jiān)測(cè),且不需要通過軟件不停地掃描數(shù)字輸入接口,節(jié)約資源,提高應(yīng)用軟件的執(zhí)行效率。主機(jī)通過調(diào)用預(yù)設(shè)的函數(shù)向處理器發(fā)送設(shè)置信息,對(duì)數(shù)字輸出接口進(jìn)行控制,使數(shù)字輸入輸出接口的控制功能更加可靠和多樣,能適用于各種應(yīng)用場(chǎng)合。此外,能夠?yàn)橛脩籼峁?biāo)準(zhǔn)的接口函數(shù),可擴(kuò)展性強(qiáng),方便用戶進(jìn)行開發(fā),且處理器的數(shù)據(jù)處理對(duì)于用戶是隱藏的,當(dāng)升級(jí)處理器時(shí)不影響用戶使用。處理器通過串行接口與主機(jī)連接,實(shí)現(xiàn)了數(shù)字輸入輸出接口與主機(jī)的剝離,對(duì)安全性、可靠性與工業(yè)現(xiàn)場(chǎng)的布線都有一定的優(yōu)化,方便進(jìn)行遠(yuǎn)距離傳輸。如圖8所示,在一個(gè)實(shí)施例中,上述處理器還包括獲取波特率模塊810、反饋波特率模塊820、修改波特率模塊830和存儲(chǔ)波特率模塊840。獲取波特率模塊810,用于接收由主機(jī)發(fā)送的第二數(shù)據(jù)包,解析第二數(shù)據(jù)包,并根據(jù)解析結(jié)果獲取波特率設(shè)置信息。具體的,主機(jī)通過調(diào)用設(shè)置波特率參數(shù)的函數(shù)進(jìn)行設(shè)置波特率,并生成第二數(shù)據(jù)包。處理器接收包含波特率設(shè)置信息的第二數(shù)據(jù)包,根據(jù)通信協(xié)議解析第二數(shù)據(jù)包并獲取波特率設(shè)置信息。波特率為處理器或主機(jī)在串行接口通信時(shí)的速率。反饋波特率模塊820,用于向主機(jī)應(yīng)答,并反饋波特率信息。具體的,處理器接收成功后,向主機(jī)發(fā)送應(yīng)答報(bào)文,應(yīng)答報(bào)文中包含波特率信息,波特率信息可包括原波特率及待設(shè)置的波特率。修改波特率模塊830,用于當(dāng)判斷出主機(jī)應(yīng)答時(shí),根據(jù)波特率設(shè)置信息修改波特率。具體的,處理器向主機(jī)反饋波特率信息后,判斷主機(jī)是否應(yīng)答,若主機(jī)應(yīng)答,則表示通信成功,根據(jù)波特率設(shè)置信息修改波特率,同時(shí),主機(jī)也根據(jù)波特率設(shè)置信息修改波特率。若主機(jī)無應(yīng)答,則處理器重新向主機(jī)反饋波特率信息。反饋波特率模塊820還用于當(dāng)判斷出主機(jī)無應(yīng)答時(shí),重新向主機(jī)反饋波特率信息并記錄反饋次數(shù)。修改波特率模塊830還用于當(dāng)反饋次數(shù)超過第一閾值時(shí),根據(jù)波特率設(shè)置信息修改波特率。具體的,處理器記錄反饋次數(shù),當(dāng)反饋次數(shù)超過第一閾值時(shí),不再向主機(jī)反饋波特率信息,直接根據(jù)波特率設(shè)置信息修改波特率。第一閾值可根據(jù)實(shí)際應(yīng)用情況進(jìn)行設(shè)置,例如4次、5次等。存儲(chǔ)波特率模塊840,用于將修改后的波特率進(jìn)行存儲(chǔ)。具體的,處理器可將修改后的波特率寫入內(nèi)部Flash存儲(chǔ)器中進(jìn)行存儲(chǔ)。此外,除了由通過主機(jī)調(diào)用函數(shù)進(jìn)行修改波特率外,還可對(duì)處理器硬件設(shè)計(jì)固定波特率,防止用戶使用出錯(cuò)。上述用于控制數(shù)字輸入輸出接口的處理器,可通過調(diào)用函數(shù)設(shè)置波特率信息,滿足不同用戶波特率的需求,使串行接口控制更加靈活。此外,設(shè)置的波特率信息可掉電保存,在不需要修改的情況下,串行接口能以掉電之前的波特率繼續(xù)工作,節(jié)省人力的開銷和維護(hù)。如圖9所示,在一個(gè)實(shí)施例中,發(fā)送模塊720包括發(fā)送單元202、判斷單元204、停止單元206、標(biāo)記單元208、索引單元210及清除單元212。發(fā)送單元202,用于通過串行接口向主機(jī)發(fā)送第一數(shù)據(jù)包。具體的,GPI的所有引腳可全部設(shè)置為邊沿變化中斷,當(dāng)電平發(fā)生變化時(shí), 即可產(chǎn)生中斷,處理器可即時(shí)將電平變化信息上傳至主機(jī)。判斷單元204,用于第一預(yù)設(shè)時(shí)間后判斷主機(jī)是否應(yīng)答,若主機(jī)應(yīng)答,則通信成功。具體的,第一預(yù)設(shè)時(shí)間可根據(jù)實(shí)際應(yīng)用情況進(jìn)行設(shè)置,例如設(shè)置為20ms(毫秒)、30ms等,若在第一預(yù)設(shè)時(shí)間內(nèi)主機(jī)無應(yīng)答,則可認(rèn)為通信失敗,處理器重新向主機(jī)發(fā)送第一數(shù)據(jù)包。發(fā)送單元202還用于當(dāng)判斷出主機(jī)無應(yīng)答時(shí),重新向主機(jī)發(fā)送第一數(shù)據(jù)包并記錄重發(fā)次數(shù)。停止單元206,用于當(dāng)重發(fā)次數(shù)超過第二閾值時(shí),停止重新發(fā)送第一數(shù)據(jù)包。具體的,記錄重發(fā)次數(shù),當(dāng)重發(fā)次數(shù)超過第二閾值時(shí),則停止向主機(jī)發(fā)送第一數(shù)據(jù)包。第二閾值可根據(jù)實(shí)際應(yīng)用情況進(jìn)行設(shè)置,例如5次、7次等。標(biāo)記單元208,用于標(biāo)記需要重新向主機(jī)發(fā)送第一數(shù)據(jù)包的數(shù)字輸入接口。具體的,因處理器可預(yù)先設(shè)置所有GPI的中斷優(yōu)先級(jí)相同,并采用并行處理各GPI發(fā)生的中斷,對(duì)于需要重新上傳的GPI,先分別標(biāo)記,然后并行處理重發(fā)數(shù)據(jù),當(dāng)一個(gè)GPI多次觸發(fā)重發(fā)機(jī)制時(shí),處理器將處理該GPI最后一次狀態(tài)變化產(chǎn)生的中斷信息。索引單元210,用于第二預(yù)設(shè)時(shí)間后對(duì)被標(biāo)記的數(shù)字輸入接口進(jìn)行索引并判斷被標(biāo)記的數(shù)字輸入接口的中斷標(biāo)志是否有效。具體的,第二預(yù)設(shè)時(shí)間可根據(jù)實(shí)際應(yīng)用需求進(jìn)行設(shè)置,例如設(shè)置為40ms、50ms等,計(jì)時(shí)到后才對(duì)被標(biāo)記的GPI進(jìn)行索引。GPI可預(yù)先設(shè)置標(biāo)記位,當(dāng)需要重新上傳數(shù)據(jù)時(shí),該標(biāo)記位發(fā)生變化,例如從0變?yōu)?,或是從1變?yōu)?,分別對(duì)被標(biāo)記的各個(gè)GPI進(jìn)行索引。中斷標(biāo)志用來描述中斷狀態(tài),通??杀硎臼欠癜l(fā)生中斷,一般情況下,當(dāng)GPI發(fā)生中斷,中斷標(biāo)志從0變?yōu)?,表示發(fā)生中斷,當(dāng)中斷標(biāo)志從1變?yōu)?,則表示中斷失效。處理器對(duì)被標(biāo)記的各個(gè)GPI進(jìn)行索引并判斷其中斷標(biāo)志是否有效,當(dāng)該中斷標(biāo)志有效時(shí),處理器重新向主機(jī)發(fā)送該被索引的GPI的數(shù)據(jù)。發(fā)送單元202還用于當(dāng)中斷標(biāo)記有效時(shí),重新向主機(jī)發(fā)送與數(shù)字輸入接口對(duì)應(yīng)的第一數(shù)據(jù)包并記錄索引次數(shù)。索引單元210還用于當(dāng)判斷出索引次數(shù)未超過第三閾值時(shí),則第二預(yù)設(shè)時(shí) 間后繼續(xù)索引并判斷下一個(gè)被標(biāo)記的數(shù)字輸入接口的中斷標(biāo)志是否有效。具體的,第三閾值可根據(jù)實(shí)際應(yīng)用需求進(jìn)行設(shè)置,例如5次、8次等。當(dāng)索引次數(shù)超過第三閾值時(shí),清除所有GPI的中斷標(biāo)志、索引次數(shù)以及相關(guān)變量,若索引次數(shù)未超過第三閾值,則第二預(yù)設(shè)時(shí)間后繼續(xù)索引下一個(gè)被標(biāo)記的GPI并判斷其中斷標(biāo)志是否有效。清除單元212,用于當(dāng)判斷出索引次數(shù)超過第三閾值時(shí),清除所有數(shù)字輸入接口的中斷標(biāo)記及索引次數(shù)。具體的,將所有GPI的中斷標(biāo)志重置為0,即不產(chǎn)生中斷時(shí)的狀態(tài),將索引次數(shù)重置為0,并將相關(guān)變量進(jìn)行重置,相關(guān)變量可為實(shí)時(shí)計(jì)時(shí)等。上述用于控制數(shù)字輸入輸出接口的處理器,利用通信協(xié)議建立處理器與主機(jī)之間的重發(fā)機(jī)制,當(dāng)二者通信發(fā)生異常時(shí),將觸發(fā)該重發(fā)機(jī)制,并采用并行處理的方式,更為快速有效,能保證處理器與主機(jī)之間數(shù)據(jù)傳輸正確。上述重發(fā)機(jī)制除了應(yīng)用于處理器向主機(jī)上傳GPI信息,也可應(yīng)用于主機(jī)向處理器發(fā)送設(shè)置GPO信息。如圖10所示,在一個(gè)實(shí)施例中,設(shè)置模塊750包括獲取單元752、設(shè)置單元754、判斷單元756及反饋單元758。獲取單元752,用于根據(jù)解析結(jié)果獲取數(shù)字輸出接口的設(shè)置信息。具體的,處理器接收由主機(jī)發(fā)送的第二數(shù)據(jù)包,并根據(jù)通信協(xié)議解析該第二數(shù)據(jù)包獲取GPO的設(shè)置信息。主機(jī)通過調(diào)用預(yù)設(shè)的函數(shù),并生成對(duì)應(yīng)的第二數(shù)據(jù)包發(fā)送給處理器來設(shè)置GPO功能。設(shè)置單元754,用于根據(jù)設(shè)置信息設(shè)置對(duì)應(yīng)的數(shù)字輸出接口。具體的,處理器根據(jù)設(shè)置信息設(shè)置對(duì)應(yīng)的GPO,可包括設(shè)置全部GPO輸出電平、部分GPO輸出電平、一個(gè)GPO輸出電平等。判斷單元756,用于判斷數(shù)字輸出接口是否設(shè)置成功,若設(shè)置成功,則向主機(jī)應(yīng)答成功。具體的,在部分應(yīng)用場(chǎng)景下,處理器常常需要判斷GPO是否設(shè)置成功,例如當(dāng)外接設(shè)備發(fā)生故障時(shí),可能會(huì)產(chǎn)生設(shè)置失敗的情況等。可在處理器中增加相應(yīng)的硬件偵測(cè)和軟件判斷處理過程,用于判斷是否發(fā)生人為操作失誤、環(huán)境 干擾、機(jī)器設(shè)備故障等異常狀況,從而提高處理器的可靠性,保證控制數(shù)字輸入輸出接口功能的可靠性、安全性。當(dāng)GPO設(shè)置成功,處理器向主機(jī)發(fā)送應(yīng)答報(bào)文,表示設(shè)置成功,當(dāng)設(shè)置失敗時(shí),處理器對(duì)該GPO重新進(jìn)行設(shè)置。設(shè)置單元754還用于判斷出數(shù)字輸出接口設(shè)置不成功時(shí),重新進(jìn)行設(shè)置并記錄重設(shè)次數(shù)。反饋單元758,用于當(dāng)重設(shè)次數(shù)超過第四閾值時(shí),向主機(jī)反饋錯(cuò)誤及數(shù)字輸出接口的輸出電平。具體的,第四閾值可根據(jù)實(shí)際應(yīng)用需求進(jìn)行設(shè)置,例如5次、6次等,當(dāng)重設(shè)次數(shù)超過第四閾值,則處理器停止重新設(shè)置,并向主機(jī)反饋錯(cuò)誤及該GPO的輸出電平。上述用于控制數(shù)字輸入輸出接口的處理器,主機(jī)通過調(diào)用預(yù)設(shè)的函數(shù)向處理器發(fā)送設(shè)置信息,對(duì)數(shù)字輸出接口進(jìn)行控制,使數(shù)字輸入輸出接口的控制功能更加可靠和多樣,能適用于各種應(yīng)用場(chǎng)合,滿足不同的控制數(shù)字?jǐn)?shù)入輸出需求。如圖11所示,在一個(gè)實(shí)施例中,上述處理器除了包括通信模塊710、檢測(cè)模塊720、發(fā)送模塊730、接收模塊740、解析模塊750及設(shè)置模塊760,還包括初始化模塊770。初始化模塊770,用于開機(jī)上電后,初始化輸出電平。初始化模塊770包括讀取單元772和等待單元774。讀取單元772,用于當(dāng)判斷出數(shù)字輸出接口使能時(shí),讀取預(yù)先分配的配置表,根據(jù)配置表獲取初始輸出電平。具體的,可預(yù)先將GPO的配置信息通過燒錄工具等寫入處理器內(nèi)部Flash或外部EEPROM等存儲(chǔ)器中,生成對(duì)應(yīng)的配置表,通過該配置表可對(duì)GPO的初始輸出電平進(jìn)行設(shè)置。當(dāng)開機(jī)上電后,處理器通過GPO的使能位狀態(tài)判斷GPO是否使能,若GPO使能,即表示配置表功能打開,則直接從內(nèi)部Flash或外部EEPROM等存儲(chǔ)器中讀取配置表,并根據(jù)配置表獲取GPO的初始輸出電平并進(jìn)行設(shè)置。此外,也可通過主機(jī)調(diào)用預(yù)設(shè)的函數(shù)對(duì)GPO初始輸出電平進(jìn)行設(shè)置。等待單元774,用于當(dāng)判斷出數(shù)字輸出接口不使能時(shí),等待接收由主機(jī)發(fā)送的第二數(shù)據(jù)包,然后解析第二數(shù)據(jù)包,并根據(jù)解析結(jié)果獲取初始輸出電平。具體的,若GPO不使能,即表示配置表功能關(guān)閉,或是內(nèi)部Flash或外部EEPROM等存儲(chǔ)器中不存在配置表,則由主機(jī)調(diào)用預(yù)設(shè)的函數(shù)對(duì)GPO初始輸出電平進(jìn)行設(shè)置。處理器接收由主機(jī)發(fā)送的第二數(shù)據(jù)包,并根據(jù)通信協(xié)議進(jìn)行解析獲取GPO初始輸出電平進(jìn)行設(shè)置。上述用于控制數(shù)字輸入輸出接口的處理器,主機(jī)可通過調(diào)用函數(shù)設(shè)置GPO初始輸出電平,滿足不同的控制數(shù)字?jǐn)?shù)入輸出需求。此外,設(shè)置的GPO初始化輸出電平可掉電保存,在不需要重新設(shè)置的情況下,GPO能以掉電之前的輸出電平繼續(xù)工作,節(jié)省人力的開銷和維護(hù)。如圖12所示,一種控制數(shù)字輸入輸出接口的系統(tǒng),包括主機(jī)10和用于控制數(shù)字輸入輸出接口的處理器20,處理器20與主機(jī)10建立通信連接。處理器20檢測(cè)數(shù)字輸入接口是否發(fā)生中斷,當(dāng)檢測(cè)到數(shù)字輸入接口發(fā)生中斷時(shí),處理器20根據(jù)中斷生成第一數(shù)據(jù)包,通過預(yù)先規(guī)定的通信協(xié)議將第一數(shù)據(jù)包發(fā)送給主機(jī)10。主機(jī)10根據(jù)通信協(xié)議解析第一數(shù)據(jù)包并根據(jù)解析結(jié)果獲取數(shù)字輸入接口的信息,主機(jī)10調(diào)用預(yù)設(shè)函數(shù),并根據(jù)被調(diào)用的預(yù)設(shè)函數(shù)生成第二數(shù)據(jù)包,將第二數(shù)據(jù)包發(fā)送給處理器20。處理器20接收由主機(jī)10發(fā)送的第二數(shù)據(jù)包,處理器20根據(jù)解析結(jié)果獲取數(shù)字輸出接口的信息,并根據(jù)數(shù)字輸出接口的信息設(shè)置數(shù)字輸出接口。處理器20的其他功能與控制數(shù)字輸入輸出接口的方法中所描述一致,在此不再贅述。上述控制數(shù)字輸入輸出接口的系統(tǒng),處理器可檢測(cè)數(shù)字輸入接口的中斷并上傳中斷信息給主機(jī),方便主機(jī)對(duì)與數(shù)字輸入接口連接的設(shè)備進(jìn)行監(jiān)測(cè),且不需要通過軟件不停地掃描數(shù)字輸入接口,節(jié)約資源,提高應(yīng)用軟件的執(zhí)行效率。主機(jī)通過調(diào)用預(yù)設(shè)的函數(shù)向處理器發(fā)送設(shè)置信息,對(duì)數(shù)字輸出接口進(jìn)行控制,使數(shù)字輸入輸出接口的控制功能更加可靠和多樣,能適用于各種應(yīng)用場(chǎng)合。以上所述實(shí)施例的各技術(shù)特征可以進(jìn)行任意的組合,為使描述簡(jiǎn)潔,未對(duì) 上述實(shí)施例中的各個(gè)技術(shù)特征所有可能的組合都進(jìn)行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說明書記載的范圍。以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。當(dāng)前第1頁(yè)1 2 3 
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1