本發(fā)明涉及5g網(wǎng)絡(luò)及語音通話領(lǐng)域,特別涉及一種spi轉(zhuǎn)uart通訊的設(shè)備及方法。
背景技術(shù):
1、uart(通用異步接收發(fā)送器,universal?asynchronous?receiver/transmitter)串口由于具有利用簡便的通信信號(hào)線即可實(shí)現(xiàn)較強(qiáng)的傳輸功能且傳輸速度范圍廣的優(yōu)點(diǎn),成為通信行業(yè)應(yīng)用最為廣泛的通信接口。spi(串行外設(shè)接口,serial?peripheralinterface)協(xié)議是廣泛用于集成電路之間進(jìn)行數(shù)據(jù)傳輸?shù)膮f(xié)議,特別是主機(jī)處理器(也稱為spi主機(jī))與一個(gè)或多個(gè)外圍設(shè)備(也稱為spi從機(jī))之間。
2、在某些實(shí)際應(yīng)用場景下,主機(jī)側(cè)沒有空余的串口接口而有空余的spi接口,而設(shè)備側(cè)只提供串口接口,因此需要提供一種方法將主機(jī)處理器側(cè)spi協(xié)議數(shù)據(jù)和設(shè)備側(cè)串口協(xié)議數(shù)據(jù)進(jìn)行相互轉(zhuǎn)換,并且保持現(xiàn)有基于串口的應(yīng)用程序代碼無需或少量變更即可使用。現(xiàn)有技術(shù)是通過使用spi轉(zhuǎn)uart的專用芯片來進(jìn)行轉(zhuǎn)換,但其需單獨(dú)布線,硬件成本高,且當(dāng)外圍設(shè)備發(fā)生變更,或應(yīng)用業(yè)務(wù)量變化需要經(jīng)常改變數(shù)據(jù)傳輸率時(shí),需要將基于串口的應(yīng)用程序讀寫配置接口移植到基于spi的應(yīng)用程序讀寫配置接口才能更改配置以適應(yīng)新的需求或外圍設(shè)備參數(shù),靈活性和適應(yīng)性較差,上線后的運(yùn)維成本較高。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明實(shí)施例提供了一種spi協(xié)議轉(zhuǎn)串口的方法、裝置及設(shè)備,通過。
2、第一方面,本技術(shù)實(shí)施例提供一種spi轉(zhuǎn)uart通訊的設(shè)備,包括中央處理器cpu、串行外設(shè)接口spi接口及復(fù)雜可編輯邏輯器件cpld,其中:
3、所述cpu通過所述spi接口連接cpld,所述cpld通過串口連接外圍設(shè)備相連;
4、所述cpu,用于根據(jù)配置文件配置所述cpu中的軟件驅(qū)動(dòng)模塊及所述cpld,通過所述軟件驅(qū)動(dòng)模塊基于相關(guān)配置執(zhí)行控制:將發(fā)往外圍設(shè)備的串口協(xié)議數(shù)據(jù)轉(zhuǎn)換為spi協(xié)議數(shù)據(jù),并調(diào)用所述spi接口寫入所述cpld;調(diào)用spi接口從所述cpld讀取來自外圍的spi協(xié)議數(shù)據(jù)并轉(zhuǎn)換為串口協(xié)議數(shù)據(jù);
5、所述cpld,用于基于相關(guān)配置執(zhí)行硬件工作邏輯:將寫入的發(fā)往外圍設(shè)備spi協(xié)議數(shù)據(jù)轉(zhuǎn)換為串口數(shù)據(jù)后發(fā)送,及收到來自外圍設(shè)備的串口數(shù)據(jù)時(shí)轉(zhuǎn)換為spi協(xié)議數(shù)據(jù)。
6、在一些可能的實(shí)施例中,所述cpld還包括:
7、第一寄存器,用于存儲(chǔ)寫入所述cpld的發(fā)往外圍設(shè)備的spi協(xié)議數(shù)據(jù);
8、第二寄存器,用于存儲(chǔ)將接收到的外圍設(shè)備的串口協(xié)議數(shù)據(jù)進(jìn)行轉(zhuǎn)換得到的spi協(xié)議數(shù)據(jù);
9、其中,調(diào)用spi接口將spi協(xié)議數(shù)據(jù)寫入所述第一寄存器,及從所述第二寄存器讀取來自外圍設(shè)備的spi協(xié)議數(shù)據(jù)。
10、在一些可能的實(shí)施例中,所述軟件驅(qū)動(dòng)模塊還包括:
11、第一緩沖區(qū),用于緩存將發(fā)往外圍設(shè)備的串口協(xié)議數(shù)據(jù)轉(zhuǎn)換得到的spi協(xié)議數(shù)據(jù);
12、第二緩沖區(qū),用于緩存從所述cpld中讀取的來自外圍設(shè)備的spi協(xié)議數(shù)據(jù);
13、其中軟件驅(qū)動(dòng)模塊用于基于所述第一寄存器、第二寄存器、第一緩沖區(qū)和第二緩沖區(qū)的狀態(tài),確定滿足第一寫數(shù)據(jù)條件時(shí),將發(fā)往外圍設(shè)備的串口協(xié)議數(shù)據(jù)轉(zhuǎn)換為spi協(xié)議數(shù)據(jù)并存入第一緩沖區(qū);確定滿足第二寫數(shù)據(jù)條件時(shí),從第一緩沖區(qū)讀取spi協(xié)議數(shù)據(jù)寫入到所述第一寄存器,確定滿足第一讀數(shù)據(jù)條件時(shí),從第二寄存器讀取spi協(xié)議數(shù)據(jù)緩存到所述第二緩沖區(qū),確定滿足第二讀數(shù)據(jù)條件時(shí),從所述第二緩沖區(qū)讀取spi協(xié)議數(shù)據(jù)并轉(zhuǎn)換為串口協(xié)議數(shù)據(jù)。
14、在一些可能的實(shí)施例中,所述確定滿足寫數(shù)據(jù)條件/讀數(shù)據(jù)條件,包括:
15、確定第一緩沖區(qū)不滿時(shí),確定滿足第一寫數(shù)據(jù)條件;
16、確定所述第一寄存器不滿,及所述第一緩沖區(qū)不空時(shí),確定滿足第二所述寫數(shù)據(jù)條件;
17、確定所述第二緩沖區(qū)不滿,及所述第二寄存器不空時(shí),滿足所述第一讀數(shù)據(jù)條件;
18、確定第二緩沖區(qū)不空時(shí),確定滿足第二讀數(shù)據(jù)條件。
19、在一些可能的實(shí)施例中,所述軟件驅(qū)動(dòng)模塊還用于:
20、確定所述第一寄存器已滿時(shí),確定不滿足第二寫數(shù)據(jù)條件,延遲設(shè)定時(shí)間再確定是否滿足所述第二寫數(shù)據(jù)條件;
21、確定所述第一寄存器不滿,及所述第一緩沖區(qū)為空時(shí),確定不滿足第二寫數(shù)據(jù)條件,延遲設(shè)定時(shí)間再確定是否滿足所述第二寫數(shù)據(jù)條件;
22、確定所述第二緩沖區(qū)為滿時(shí),確定不滿足第一讀數(shù)據(jù)條件,延遲設(shè)定時(shí)間再判斷所述第一讀數(shù)據(jù)條件;
23、確定所述第二緩沖區(qū)不滿,及所述第二寄存器為空時(shí),確定不滿足第一讀數(shù)據(jù)條件,延遲設(shè)定時(shí)間再判斷所述第一讀數(shù)據(jù)條件。
24、在一些可能的實(shí)施例中,所述軟件驅(qū)動(dòng)模塊還用于:
25、確定所述第一緩沖區(qū)已滿時(shí),確定不滿足第一寫數(shù)據(jù)條件,創(chuàng)建與發(fā)往外圍設(shè)備的串口協(xié)議數(shù)據(jù)對(duì)應(yīng)的寫任務(wù)并插入到寫等待隊(duì)列中;
26、確定所述第二緩沖區(qū)為空時(shí),確定不滿足第二讀數(shù)據(jù)條件,創(chuàng)建與所述串口協(xié)議數(shù)據(jù)對(duì)應(yīng)的讀任務(wù)并插入到讀等待隊(duì)列中。
27、在一些可能的實(shí)施例中,所述軟件驅(qū)動(dòng)模塊還用于:
28、確定所述第一緩沖區(qū)不滿時(shí),確定滿足第一寫數(shù)據(jù)條件,從所述寫等待隊(duì)列中喚醒最早入隊(duì)的寫任務(wù),將所述寫任務(wù)中的串口協(xié)議數(shù)據(jù)轉(zhuǎn)換為spi協(xié)議數(shù)據(jù),并寫入所述第一緩沖區(qū);
29、確定所述第二緩沖區(qū)不空時(shí),確定滿足第二讀數(shù)據(jù)條件,從所述讀等待隊(duì)列中喚醒最早入隊(duì)的讀任務(wù),將所述讀任務(wù)中串口協(xié)議數(shù)據(jù)對(duì)應(yīng)的spi協(xié)議數(shù)據(jù)轉(zhuǎn)換為串口協(xié)議數(shù)據(jù)。
30、在一些可能的實(shí)施例中,所述軟件驅(qū)動(dòng)模塊通過虛擬串口字符設(shè)備文件實(shí)現(xiàn),所述軟件驅(qū)動(dòng)模塊基于相關(guān)配置執(zhí)行控制,包括:
31、所述軟件驅(qū)動(dòng)模塊通過寫接口執(zhí)行:將發(fā)往外圍設(shè)備的串口協(xié)議數(shù)據(jù)轉(zhuǎn)換為spi協(xié)議數(shù)據(jù);
32、所述軟件驅(qū)動(dòng)模塊通過內(nèi)核中的寫線程執(zhí)行:調(diào)用所述spi接口將轉(zhuǎn)換后的spi協(xié)議數(shù)據(jù)寫入所述cpld;
33、所述軟件驅(qū)動(dòng)模塊通過讀接口執(zhí)行:將從外圍設(shè)備讀取的spi協(xié)議數(shù)據(jù)轉(zhuǎn)換為串口協(xié)議數(shù)據(jù);
34、所述軟件驅(qū)動(dòng)模塊通過內(nèi)核中的讀線程執(zhí)行:調(diào)用spi接口從所述cpld讀取來自外圍的spi協(xié)議數(shù)據(jù)。
35、第二方面,本技術(shù)實(shí)施例還提出一種spi轉(zhuǎn)uart通訊的方法,包括:
36、根據(jù)配置文件配置cpu中的軟件驅(qū)動(dòng)模塊及cpld;
37、通過所述軟件驅(qū)動(dòng)模塊,基于相關(guān)配置,將發(fā)往外圍設(shè)備的串口協(xié)議數(shù)據(jù)轉(zhuǎn)換為spi協(xié)議數(shù)據(jù),并調(diào)用所述spi接口寫入所述cpld;調(diào)用spi接口從所述cpld讀取來自外圍的spi協(xié)議數(shù)據(jù)并轉(zhuǎn)換為串口協(xié)議數(shù)據(jù);
38、通過所述cpld,基于相關(guān)配置,將寫入的發(fā)往外圍設(shè)備spi協(xié)議數(shù)據(jù)轉(zhuǎn)換為串口數(shù)據(jù)后發(fā)送,及收到來自外圍設(shè)備的串口數(shù)據(jù)時(shí)轉(zhuǎn)換為spi協(xié)議數(shù)據(jù)。
39、在一些可能的實(shí)施例中,所述方法還包括:
40、通過cpld中的第一寄存器,存儲(chǔ)寫入所述cpld的發(fā)往外圍設(shè)備的spi協(xié)議數(shù)據(jù);
41、通過cpld中的第二寄存器,存儲(chǔ)將接收到的外圍設(shè)備的串口協(xié)議數(shù)據(jù)進(jìn)行轉(zhuǎn)換得到的spi協(xié)議數(shù)據(jù);
42、其中,所述軟件驅(qū)動(dòng)模塊是調(diào)用spi接口將spi協(xié)議數(shù)據(jù)寫入所述第一寄存器,及從所述第二寄存器讀取來自外圍設(shè)備的spi協(xié)議數(shù)據(jù)。
43、本技術(shù)實(shí)施例提出的一種spi轉(zhuǎn)uart通訊的設(shè)備及方法,可省去現(xiàn)有的spi轉(zhuǎn)uart的專用芯片,無需單獨(dú)布線,能夠減少制版面積,從而降低硬件成本,同時(shí)支持根據(jù)外圍設(shè)備對(duì)應(yīng)的業(yè)務(wù)量變化靈活配置數(shù)據(jù)傳輸率,支持現(xiàn)有基于串口的應(yīng)用程序直接復(fù)用。
44、本技術(shù)的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本技術(shù)而了解。本技術(shù)的目的和其他優(yōu)點(diǎn)可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。