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

基于SPI協(xié)議的數(shù)據(jù)流控系統(tǒng)及方法與流程

文檔序號:12915864閱讀:1201來源:國知局

本發(fā)明涉及數(shù)據(jù)傳輸與處理領(lǐng)域,特別涉及一種基于spi(同步串行外設(shè)接口)協(xié)議的數(shù)據(jù)流控系統(tǒng)及方法,從而將spi改造成異步雙向數(shù)據(jù)通信接口。



背景技術(shù):

目前,具有票據(jù)打印功能的移動pos(銷售點)機,包含嵌入式主機平臺、打印機以及移動網(wǎng)絡(luò)連接等功能,具有集成度高、功能完整的特點。

移動pos機的主機平臺使用cpu(中央處理器)方案,一般都存在一定的接口限制,其可提供的接口類型只有以下幾種:usbotg(是usbon-the-go的縮寫,主要應(yīng)用于各種不同的設(shè)備或移動設(shè)備間的聯(lián)接,進行數(shù)據(jù)交換)、uart(通用同步/異步串行接收/發(fā)送器)、iic(集成電路總線)和spi。

移動pos集成的打印機,與其主機之間的數(shù)據(jù)通信接口,如果是通用數(shù)據(jù)接口的話,就只有usb和uart可以選擇。但是,主機平臺cpu往往只提供一個usbotg,如果將其配置為host(主機)連接打印機,那么主機將無法提供usbdebug(故障調(diào)試)功能,這會造成很多的不便。如果選擇uart,要當心其傳輸速率無法滿足打印機速度的問題。

在usb和uart都不能選擇的情況下,iic和spi也就成為可選項。iic控制總線的傳輸速率也不高,打印機的控制mcu(微控制單元)的iic總線最高速率也只有400k,跟uart同樣存在傳輸速率問題。spi接口的傳輸速率可以達到20mb/s以上,而且協(xié)議簡單、占用引腳少,可以通過簡單的軟件協(xié)議實現(xiàn)高速數(shù)據(jù)傳輸。

但是,spi接口存在一個缺點:沒有指定的流控制,沒有應(yīng)答機制確認是否接收到數(shù)據(jù)。而打印機數(shù)據(jù)接口接收數(shù)據(jù),如果數(shù)據(jù)丟失的話,最直接 的結(jié)果就是打印錯亂,所以需要有很好的流控或校驗機制。但在數(shù)據(jù)傳輸速率要求比較高的情況下,校驗機制往往比較難實現(xiàn);所以實現(xiàn)流控機制是必需的。

更有甚者,打印機還是一個需要自動上報異常狀態(tài)的設(shè)備,在接口沒有數(shù)據(jù)傳輸?shù)那闆r下,一旦打印機發(fā)生異常,是需要打印機主動將信息傳輸?shù)街鳈C,而spi是不支持從設(shè)備主動向主機傳輸數(shù)據(jù)的。所以實現(xiàn)異步傳輸機制也是必須的。



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

本發(fā)明要解決的技術(shù)問題是現(xiàn)有的移動pos機等系統(tǒng)利用spi接口進行通信時不具備完整的控制導(dǎo)致主機和從機間信息交互出現(xiàn)錯誤的缺陷,提供一種基于spi協(xié)議的數(shù)據(jù)流控系統(tǒng)及方法。

本發(fā)明是通過下述技術(shù)方案來解決上述技術(shù)問題的:

本發(fā)明提供一種基于spi協(xié)議的數(shù)據(jù)流控系統(tǒng),其包括一主機和一從機,該主機和該從機通過spi協(xié)議進行通信,其特點在于,該從機的端口包括至少兩個io(輸入輸出)口,該主機包括一主控制器,該從機包括一從控制器;

該從控制器用于在該從機準備好接收數(shù)據(jù)之前將該兩個io口的狀態(tài)設(shè)置為第一狀態(tài),在該從機準備好接收數(shù)據(jù)時將該兩個io口的狀態(tài)設(shè)置為第二狀態(tài),在該從機接收完一數(shù)據(jù)包時將該兩個io口的狀態(tài)設(shè)置為第三狀態(tài),在該從機接收完一數(shù)據(jù)包后且準備接收下一數(shù)據(jù)包時將該兩個io口的狀態(tài)設(shè)置為該第二狀態(tài);

該主控制器用于在檢測到該兩個io口的狀態(tài)為該第一狀態(tài)時不發(fā)送數(shù)據(jù)包給該從機,在檢測到該兩個io口的狀態(tài)為該第二狀態(tài)或該第三狀態(tài)時發(fā)送該數(shù)據(jù)包至該從機。

spi協(xié)議本身是沒有流控機制的,而從其協(xié)議上看,用軟件方式實現(xiàn)流控也是不可能的,所以,本方案考慮增加硬件流控方式,也就是增加狀態(tài)io 口以表達接收端即打印機的閑忙狀態(tài)。

較佳地,該從控制器用于在該從機的緩沖區(qū)存滿時保持該兩個io口的狀態(tài)不變直至該緩沖區(qū)空閑,且將該兩個io口的狀態(tài)設(shè)置為該第二狀態(tài)或該第三狀態(tài)。

較佳地,該從控制器用于在該從機出現(xiàn)異常情況時,將該兩個io口的狀態(tài)設(shè)置為第四狀態(tài);

該主控制器用于在檢測到該兩個io口的狀態(tài)為該第四狀態(tài)時發(fā)送一詢問包至該從機;

該從控制器還用于發(fā)送一該從機出現(xiàn)異常情況的信息至該主機。

較佳地,該主控制器用于在未發(fā)送數(shù)據(jù)包的時間達到一設(shè)定時間時發(fā)送一休眠信號至該從機,該從控制器用于將該兩個io口的狀態(tài)設(shè)置為該第一狀態(tài)。

較佳地,該主控制器用于在再次需要發(fā)送數(shù)據(jù)包時發(fā)送一喚醒信號至該從機,該從控制器用于將該兩個io口的狀態(tài)設(shè)置為該第二狀態(tài)。

本發(fā)明還提供一種基于spi協(xié)議的數(shù)據(jù)流控方法,其特點在于,其利用上述的基于spi協(xié)議的數(shù)據(jù)流控系統(tǒng)實現(xiàn),該數(shù)據(jù)流控方法包括以下步驟:

s1、在該從機準備好接收數(shù)據(jù)之前,該從控制器將該兩個io口的狀態(tài)設(shè)置為該第一狀態(tài);

s2、該主控制器檢測該兩個io口的狀態(tài)為該第一狀態(tài),控制不發(fā)送數(shù)據(jù)包給該從機;

s3、該從機準備好接收數(shù)據(jù),該從控制器將該兩個io口的狀態(tài)設(shè)置為第二狀態(tài);

s4、該主控制器檢測該兩個io口的狀態(tài)為該第二狀態(tài),控制發(fā)送該數(shù)據(jù)包至該從機;

s5、該從機接收該數(shù)據(jù)包,并發(fā)送一狀態(tài)包至該主機;

s6、該從機準備好接收下一數(shù)據(jù),該從控制器將該兩個io口的狀態(tài)設(shè)置為第三狀態(tài);

s6、該主控制器檢測該兩個io口的狀態(tài)為該第三狀態(tài),控制發(fā)送下一個數(shù)據(jù)包給該從機;

s7、該從機接收該下一個數(shù)據(jù)包,并發(fā)送該狀態(tài)包至該主機,進入步驟s3。

較佳地,該從控制器在該從機的緩沖區(qū)存滿時保持該兩個io口的狀態(tài)不變直至該緩沖區(qū)空閑,且將該兩個io口的狀態(tài)設(shè)置為該第二狀態(tài)或該第三狀態(tài)。

較佳地,該從控制器在該從機出現(xiàn)異常情況時,將該兩個io口的狀態(tài)設(shè)置為第四狀態(tài);

該主控制器在檢測到該兩個io口的狀態(tài)為該第四狀態(tài)時發(fā)送一詢問包至該從機;

該從控制器發(fā)送一該從機出現(xiàn)異常情況的信息至該主機。

較佳地,該主控制器在未發(fā)送數(shù)據(jù)包的時間達到一設(shè)定時間時發(fā)送一休眠信號至該從機,該從控制器將該兩個io口的狀態(tài)設(shè)置為該第一狀態(tài)。

較佳地,該主控制器在再次需要發(fā)送數(shù)據(jù)包時發(fā)送一喚醒信號至該從機,該從控制器將該兩個io口的狀態(tài)設(shè)置為該第二狀態(tài)。

在符合本領(lǐng)域常識的基礎(chǔ)上,上述各優(yōu)選條件,可任意組合,即得本發(fā)明各較佳實例。

本發(fā)明的積極進步效果在于:

本發(fā)明的基于spi協(xié)議的數(shù)據(jù)流控系統(tǒng)及方法,使得主機和從機之間實現(xiàn)很好的配合工作,能夠防止數(shù)據(jù)丟失,防止主機和從機間信息交互時出現(xiàn)錯誤,此外,休眠喚醒機制能夠有效地降低功耗。

附圖說明

圖1為本發(fā)明較佳實施例的基于spi協(xié)議的數(shù)據(jù)流控方法的流程圖。

具體實施方式

下面結(jié)合附圖給出本發(fā)明較佳實施例,以詳細說明本發(fā)明的技術(shù)方案,但并不因此將本發(fā)明限制在所述的實施例范圍之中。

本實施例提供一種基于spi協(xié)議的數(shù)據(jù)流控系統(tǒng),其包括一主機和一從機,該主機和該從機通過spi協(xié)議進行通信,該從機的端口包括至少兩個io口,該主機包括一主控制器,該從機包括一從控制器。

該主機作為spi主機設(shè)備,控制spi的發(fā)送時序及發(fā)送速率;該從機例如打印機作為spi從設(shè)備,只能被動接收主機發(fā)送下來的數(shù)據(jù);打印機端通過兩個io口與主機相連表示閑忙狀態(tài)。

如圖1所示,本實施例還提供一種基于spi協(xié)議的數(shù)據(jù)流控方法,其利用上述的基于spi協(xié)議的數(shù)據(jù)流控系統(tǒng)實現(xiàn),該數(shù)據(jù)流控方法包括以下步驟:

步驟101、在該從機(例如打印機)準備好接收數(shù)據(jù)之前,該從控制器將該兩個io口的狀態(tài)設(shè)置為該第一狀態(tài)(00,即均為低電平);

步驟102、該主控制器檢測該兩個io口的狀態(tài)為該第一狀態(tài),控制不發(fā)送數(shù)據(jù)包給該從機;

步驟103、該從機準備好接收數(shù)據(jù),該從控制器將該兩個io口的狀態(tài)設(shè)置為第二狀態(tài)(01,即一個低電平一個高電平);

步驟104、該主控制器檢測該兩個io口的狀態(tài)為該第二狀態(tài),控制發(fā)送256個字節(jié)的數(shù)據(jù)包至該從機;

步驟105、該從機接收該數(shù)據(jù)包,并發(fā)送一個256個字節(jié)的狀態(tài)包至該主機;

步驟106、該從機準備好接收下一數(shù)據(jù),該從控制器將該兩個io口的狀態(tài)由01更改設(shè)置為第三狀態(tài)(10,即一個高電平一個低電平);

步驟107、該主控制器檢測該兩個io口的狀態(tài)為該第三狀態(tài),控制發(fā)送下一個數(shù)據(jù)包給該從機;

步驟108、該從機接收該下一個數(shù)據(jù)包,并發(fā)送該狀態(tài)包至該主機,進入步驟103。

此外,該從控制器在該從機的緩沖區(qū)存滿時保持該兩個io口的狀態(tài)不 變直至該緩沖區(qū)空閑,且將該兩個io口的狀態(tài)設(shè)置為該第二狀態(tài)或該第三狀態(tài)。

由于該從機無法主動發(fā)送數(shù)據(jù),所以,在該從機出現(xiàn)異常情況(例如打印機翻蓋、過熱等)時,執(zhí)行以下步驟:步驟109、該從控制器將該兩個io口的狀態(tài)設(shè)置為第四狀態(tài)(11,即均為高電平);步驟110、該主控制器在檢測到該兩個io口的狀態(tài)為該第四狀態(tài)時發(fā)送一詢問包至該從機;步驟111、該從控制器發(fā)送一該從機出現(xiàn)異常情況的信息包至該主機。

主機端利用gpio引腳(gpio1、gpio2引腳對應(yīng)從控制器(mcu)的io狀態(tài)引腳,gpio3、gpio4引腳對應(yīng)mcu的休眠喚醒引腳)輔助完成上位機與打印機的通訊。gpio(gpio1、gpio2)取值0(第一狀態(tài)00)、1(第二狀態(tài)01)、2(第三狀態(tài)10)、3(第四狀態(tài)11)。值為0停止通訊,值3發(fā)送查詢包。gpio值變?yōu)?或2時,主機可以發(fā)信息包給打印機,同時收到打印機返回的等長度的信息包,主機根據(jù)約定對返回信息包進行分析處理,打印機收到包進行處理,如果接收緩沖區(qū)未滿,可以接收下一個包,打印機將gpio值改為2或1。如果打印機沒有改變gpio值,則主機不能繼續(xù)發(fā)包。

為降低功耗,流程中引入了休眠喚醒機制,如果長時間主機沒有打印任務(wù),主機利用gpio引腳(gpio3)使打印機進入休眠,降低功耗,即打印機收到休眠信號,把兩個io口的狀態(tài)設(shè)置為第一狀態(tài),停止接收數(shù)據(jù)包。主機有打印任務(wù)時,利用gpio引腳(gpio4)喚醒打印機,打印機收到喚醒信號,準備好后將兩個io的狀態(tài)設(shè)置第二狀態(tài),打印機可以開始接收主機數(shù)據(jù)包。

本實施例中,mcu接收spi數(shù)據(jù)包未做數(shù)據(jù)處理情況下,每秒可接收1200個包(每個包256個字節(jié))左右,即數(shù)據(jù)流量2.5mbit左右。

在本系統(tǒng)中的從機為打印機時,mcu接收spi數(shù)據(jù)包并且在打印機(選擇打印速度只有70mm/s的58熱敏打印機)做光柵位圖(80寬度位圖)打印情況下,每秒可發(fā)送200個數(shù)據(jù)包,打印效果流暢。上位機由于傳輸速度 很快,受打印頭速度限制,會提示數(shù)據(jù)阻塞,但數(shù)據(jù)沒有發(fā)生打印錯亂問題。

mcu接收spi數(shù)據(jù)包做光柵位圖(80寬度位圖)處理但不打印,每秒可發(fā)送725個數(shù)據(jù)包,即理論上spi結(jié)合數(shù)據(jù)流可支持80打印機320mm/s的光柵位圖打印。

由此可見,通過以上測試,可以確定spi數(shù)據(jù)異步流控通信速率能夠滿足產(chǎn)品化要求。

雖然以上描述了本發(fā)明的具體實施方式,但是本領(lǐng)域的技術(shù)人員應(yīng)當理解,這些僅是舉例說明,本發(fā)明的保護范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實質(zhì)的前提下,可以對這些實施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護范圍。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1