周晨業(yè)
摘要
本文致力于設(shè)計出一種基于13C總線為系統(tǒng)通信方式并通過實時與傳感器進(jìn)行數(shù)據(jù)交互的具有傳感器數(shù)據(jù)網(wǎng)絡(luò)回傳功能的嵌入式傳感器監(jiān)控系統(tǒng)。設(shè)計工作是基于高通SDM845平臺控為核心的,通過I3C總線獨(dú)有的對總線設(shè)備實時交互的特性,從而實時獲得設(shè)備節(jié)點的運(yùn)行狀態(tài)。該設(shè)計方案可以很好的應(yīng)用于物聯(lián)網(wǎng)中對設(shè)備環(huán)境和運(yùn)行參數(shù)的監(jiān)測。
【關(guān)鍵詞】物聯(lián)網(wǎng) 高通SDM845平臺 I3C總線傳輸 實時性
如今4G/5G,NB-Iot等網(wǎng)絡(luò)技術(shù)的不斷迅猛發(fā)展,信息交換溝通的范圍迅速擴(kuò)大,萬物互聯(lián)已經(jīng)不是紙上談兵,其實質(zhì)就是對各個可控設(shè)備的實時數(shù)據(jù)采集,狀態(tài)監(jiān)控。而萬物互聯(lián)的技術(shù)自然離不開各種傳感器。隨著監(jiān)測的數(shù)據(jù)量不斷增大,更加需要傳感器采集系統(tǒng)兼具網(wǎng)絡(luò)化,高時性、和高可靠,簡易性等特點。本文致力于研究并設(shè)計出一套以I3C總線為系統(tǒng)通信方式的,傳感器狀態(tài)通過I3C總線實時的與控制端以及其他設(shè)備進(jìn)行交互的,并能夠快速的通過網(wǎng)絡(luò)接口把傳感器數(shù)據(jù)發(fā)送到終端用戶的系統(tǒng)。
1 I3C總線無線控制的傳感器電路設(shè)計
系統(tǒng)的電路設(shè)計主要是由3個模塊化電路實現(xiàn)的,其中以SDM845系統(tǒng)電路為控制核心,以I3C控制器和加速度陀螺儀傳感器組成SDM845外設(shè)的系統(tǒng)電路。
1.1 核心控制器SDM845簡介
系統(tǒng)硬件選用高通驍龍系列的SDM845的ARM控制芯片,其對外設(shè)有很好的支持能力,并有很高的處理速度和可靠性。并且其芯片本身自帶AI Core以及modem模塊也是本次設(shè)計選擇SDM845的緣由。
Qualcomm SDM845使用Kryo 385內(nèi)核,八核心架構(gòu),四顆大核心最高頻率可達(dá)2.8GHz,四顆小核心頻率可達(dá)1.8GHz。
諸多新的特性以及性能的提升是SDM845實現(xiàn)整個系統(tǒng)高效,快速,可靠的關(guān)鍵因素之
1.2 Mipi I3C協(xié)議簡介以及I3C總線的優(yōu)勢
I3C的全稱是Improved Inter IntegratedCircuit。I3C兼容了I2C(雙線、簡單)與SPI(高速度,低功耗)的優(yōu)勢并加入了新功能,包括支持in-band中斷、動態(tài)編址(dynamicaddressing),以及更先進(jìn)的電源管理。各種傳感器的系統(tǒng)或應(yīng)用若采用I3C接口,將可大幅降低成本與功耗;這類系統(tǒng)的擴(kuò)展性也將優(yōu)于采用I2C或SPI接口的系統(tǒng)?!?/p>
I3C總線支持從12.5Mbps到接近37.5Mbps的速率。在SDR模式下,I3C總線中的SCL時鐘頻率最高為12.5MHz。
同時I3C的帶內(nèi)中斷In-band功能可以節(jié)省更多的系統(tǒng)GPIO資源,這使得芯片間的連接更加簡潔,PCB也可以簡化。此外I3C的hot-join功能可以支持從設(shè)備的熱插拔和主動退線功能,進(jìn)而節(jié)省更多的系統(tǒng)功耗。諸多I3C總線新的特性使得I3C更加適合傳感器等類似物聯(lián)網(wǎng)系統(tǒng)的應(yīng)用上。
1.3 I3C控制器與傳感器簡介
I3C的主控制器仍然是高通提供的,其核心是基于cortex-M4的傳感器hub。
本次項目中的傳感器選用的應(yīng)美盛的ICM
42605。該芯片是加速度以及陀螺儀以及溫度多用途傳感器芯片,可以實時穩(wěn)定的監(jiān)測設(shè)備的狀態(tài),包括待檢測設(shè)備的運(yùn)行姿態(tài),運(yùn)行溫度等狀態(tài)。
ICM42605內(nèi)嵌了最新的MIPI I3C從設(shè)備控制器,是如今最早支持I3C總線的傳感器芯片之一。
2 I3C總線上傳感器的交互程序?qū)崿F(xiàn)
基于I3C總線的傳感器與主控制端的的程序分為4個部分,這4個部分是從軟件功能來劃分的,如下:I3C主控制端的通信控制邏輯實現(xiàn),I3C總線的帶內(nèi)中斷(In-Band)功能,I3C bus主控端Hot-join熱插拔功能,整體系統(tǒng)狀態(tài)的處理和數(shù)據(jù)上報。
2.1 I3C主控制端的通信控制邏輯實現(xiàn)
I3C主設(shè)備的控制邏輯以及程序流程步驟由如下步驟組成:
(1)主控制設(shè)備程序在恰當(dāng)?shù)臓顟B(tài)啟動,并通過從設(shè)備處收到以下數(shù)據(jù):①需要配置動態(tài)地址的I3C兼容設(shè)備。②掛接到I3C總線上的已有靜態(tài)地址的I3C設(shè)備數(shù)量。③掛接到I3C總線上IZC設(shè)備的數(shù)據(jù)
(2)主控端程序使用Set DynamicAddress命令為已有靜態(tài)地址的I3C設(shè)備設(shè)置動態(tài)地址。
(3)主控端發(fā)送廣播命令Enter DynamicAddress Assignment。
(4)主控端程序發(fā)送一個RepeatedSTART,并產(chǎn)生廣播地址7h'7E,并將RnW位置高。
(5)主控端程序?qū)CL線拉低,并釋放SDA線為High-Z狀態(tài),以允許上拉電阻將SDA拉為高電平。
(6)在第4步中,每一個響應(yīng)I3C廣播的I3C從設(shè)備應(yīng)當(dāng)在SDA線上輸出自己48-bit的專有ID,直到由于仲裁丟失通訊。
(7)主控端使用相同的時鐘連續(xù)驅(qū)動SCL信號線,同時保持釋放SDA。沒有丟失通訊的I3C設(shè)備接著傳送它的BCR數(shù)據(jù),直到丟失通訊權(quán)。
(8)主控端負(fù)責(zé)向贏得仲裁的設(shè)備傳送7bit的動態(tài)地址。這一動態(tài)地址與主機(jī)希望分配的優(yōu)先級相匹配。贏得仲裁的設(shè)備在動態(tài)地址被發(fā)送的時候ACK。
(9)主控端發(fā)送7bit動態(tài)地址,然后發(fā)送校驗位,校驗位是7bit數(shù)據(jù)XOR的取反。
(10)如果校驗成功,傳感器從設(shè)備會在下一SCL時鐘接受該動態(tài)地址,然后再下一SCL發(fā)送NACK
(11)主控端程序一直重復(fù)這一過程,跳回第4步,直到總線上不再有I3C設(shè)備并返回ACK。
2.2 I3C bus主控端帶內(nèi)中斷In-band功能的實現(xiàn)
在I3C中總線通信的帶內(nèi)中斷程序?qū)崿F(xiàn)中,I3地址的優(yōu)先級決定了傳感器從設(shè)備請求中斷時的優(yōu)先級。每一個從設(shè)備的優(yōu)先級被編碼到其動態(tài)地中,地址越小則優(yōu)先級越高。地址越小優(yōu)先級高的傳感器從設(shè)備在發(fā)出In-Band中斷請求的時候則會被Master更優(yōu)先處理。
在動態(tài)地址指定過程中,主控制器將更低的地址賦給需要優(yōu)先處理In-Band中斷請求的設(shè)備。
而在I3C從設(shè)備這端,為了請求中斷,傳感器從設(shè)備在START后向總線上發(fā)送參與仲裁的地址頭。主控端同時將SCL拉低并完成START序列的形成。主控端以既定優(yōu)先級順序處理中斷請求。接著傳感器從設(shè)備會將自己的地址寫到SDA線上。
此時,主控Master根據(jù)需求執(zhí)行下述三項之一:
(1)第一種情況,通過ACK接受IBI。
1.如果傳感器從設(shè)備的BCR[2]位是1,則主控制端讀取由IBI設(shè)備允許的時鐘速率發(fā)起的數(shù)據(jù)流。當(dāng)前的主設(shè)備不可以拒絕接收伴隨的數(shù)據(jù),因為它是以推挽輸出模式傳送的。
2.如果傳感器從設(shè)備的BCR[2]是0,當(dāng)前主設(shè)備可以實施任何有效的I3C動作。可以發(fā)送一個STOP,或是Repeated START,或者繼續(xù)按照一般讀數(shù)據(jù)模式讀取負(fù)載數(shù)據(jù)。
(2)第二種情況:拒絕IBI但并不禁止中斷。當(dāng)前的主控設(shè)備簡單的NACK IBI即可。
(3)第三種情況:拒絕IBI并禁止中斷。首先當(dāng)前的主控設(shè)備NACK IBI事件,然后起始一個Repeated START,最后使用DisableSlave Event Connnand命令來設(shè)置DISINT位以禁止中斷。
3 基于I3C總線的傳感系統(tǒng)集成設(shè)計
之前的部分講述的是各個模塊的軟件設(shè)計,這里把所有的模塊整合在一起就形成了本次設(shè)計的整套軟件系統(tǒng)。從最低層的主控端與傳感器的物理總線通信部分到傳感器的狀態(tài)識別處理,再到通過移動互聯(lián)網(wǎng)來進(jìn)行數(shù)據(jù)分發(fā)到終端用戶。
簡易的系統(tǒng)架構(gòu)設(shè)計模塊圖如圖1。
整個系統(tǒng)分為:系統(tǒng)硬件通信層,數(shù)據(jù)獲取以及處理層,數(shù)據(jù)分發(fā)上報層。
系統(tǒng)硬件通信層:I3C控制端口的初始化模塊,傳感器初始化和通信模塊。
數(shù)據(jù)獲取以及處理層:監(jiān)測傳感器狀態(tài)的處理線程,Hot-join的監(jiān)測及處理模塊,In-band帶內(nèi)中斷模塊,傳感器數(shù)據(jù)識別以及處理模塊等。
數(shù)據(jù)分發(fā)上報層:移動網(wǎng)絡(luò)數(shù)據(jù)分發(fā)模塊,NB-Iot數(shù)據(jù)鏈路模塊,物聯(lián)網(wǎng)設(shè)備管理和數(shù)據(jù)推送模塊。
4 結(jié)語
此設(shè)計方案可用于智能家具等物聯(lián)網(wǎng)應(yīng)用,對傳感器設(shè)備的狀況進(jìn)行實時監(jiān)測,并可以通過移動互聯(lián)網(wǎng)獲取并控制物聯(lián)網(wǎng)現(xiàn)場每個傳感器設(shè)備的狀態(tài)和參數(shù)。經(jīng)過本設(shè)計以及多次實驗證明,嵌入式I3C總線控制的傳感器監(jiān)控系統(tǒng)設(shè)計方案可行有效。在SDM845上基于I3C總線傳輸?shù)膫鞲衅鞅O(jiān)控系統(tǒng)的設(shè)計是符合并滿足如今物聯(lián)網(wǎng)對于傳感器以及衍生設(shè)備數(shù)據(jù)實時獲取的需求,而且同時兼?zhèn)淞讼到y(tǒng)設(shè)計的簡潔以及高效性。
參考文獻(xiàn)
[1]伍新華,陸麗萍.物聯(lián)網(wǎng)工程技術(shù)[M].北京:清華大學(xué)出版社,2011.
[2]黃玉蘭.物聯(lián)網(wǎng)傳感器技術(shù)與應(yīng)用[M].北京:職業(yè)教育出版分社,2012.
[3]沙占友.智能傳感器系統(tǒng)設(shè)計與應(yīng)用[M].北京:電子工業(yè)出版社,2004.