Microchip UNI/O總線(xiàn)技術(shù)及其應(yīng)用
隨著嵌入式系統(tǒng)小型化的趨勢(shì),市場(chǎng)對(duì)減少器件間通信所用的I/O引腳數(shù)的需求與日俱增。Microchip科技公司開(kāi)發(fā)的UNI/O總線(xiàn)正滿(mǎn)足了這一需求,這個(gè)低成本且易于實(shí)現(xiàn)的解決方案,僅需要使用一個(gè)I/O引腳就可實(shí)現(xiàn)主從器件之間的通信。
1 UNI/O總線(xiàn)介紹
1.1 UNI/O總線(xiàn)的特點(diǎn)
UNI/O總線(xiàn)具有如下特點(diǎn):
①UNI/O總線(xiàn)采用曼徹斯特編碼,只需一根信號(hào)線(xiàn)SCIO就可以實(shí)現(xiàn)數(shù)據(jù)的串行傳輸和同步控制。
②UNI/O總線(xiàn)是一種單主型總線(xiàn)。主器件負(fù)責(zé)肩動(dòng)和控制總線(xiàn)上的所有操作,決定總線(xiàn)的工作速度。主器件通常由單片機(jī)、ASIC等充當(dāng)。
③UNI/O總線(xiàn)具有雙向通信能力。有主發(fā)送從接收和從發(fā)送主接收兩種工作方式。
④UNI/O總線(xiàn)速度為10~100kbps。
⑤UNI/O從器件必須具有空閑模式和待機(jī)模式,也可選擇具有保持模式。
1.2 UNI/O總線(xiàn)的幀格式
1.2.1 位值定義
由于采用的是曼徹斯特編碼,所以其位值由佗周期中間的信號(hào)跳變方向決定。UNI/O總線(xiàn)規(guī)定:從高到低的跳變是0,從低到高的跳變是1。
1.2.2 幀結(jié)構(gòu)
在UNI/O總線(xiàn)上進(jìn)行通信時(shí),指令、數(shù)據(jù)和地址的傳送都以字節(jié)為單位。字節(jié)傳送時(shí),高位在前,低位在后,前一個(gè)位之后立即傳輸下一個(gè)位,位與位之間沒(méi)有延遲。字節(jié)之后必須發(fā)送應(yīng)答序列,進(jìn)行主從應(yīng)答。圖1給出了通常情況下使用的基本字節(jié)幀結(jié)構(gòu)。
(1)主應(yīng)答位
由主器件發(fā)送,取值為1或0。為1時(shí)稱(chēng)之為MAK,MAK告知從器件指令執(zhí)行將繼續(xù);為0時(shí)稱(chēng)之為NoMAK,NoMAK用來(lái)結(jié)束當(dāng)前指令,此后如有必要,從器件可以啟動(dòng)相應(yīng)的內(nèi)部處理。
(2)從應(yīng)答位
由被選定作為通信對(duì)象的從器件發(fā)送。該位為1時(shí)稱(chēng)之為SAK,SAK表明其前面的操作已成功完成;非1時(shí)稱(chēng)之為NoSAK。在從器件被選定之前,由于無(wú)從器件應(yīng)答,從應(yīng)答位應(yīng)為NoSAK。在從器件被選定之后,NoSAK用來(lái)表明通信產(chǎn)生了錯(cuò)誤。
另外,UNI/O總線(xiàn)也考慮了對(duì)主器件的中斷功能的支持。當(dāng)主器件與具有保持模式的從器件進(jìn)行通信時(shí),如果主器件在下一個(gè)MAK位周期時(shí)間內(nèi)持續(xù)拉低SCIO,從器件就進(jìn)入了保持模式。要維持在保持模式應(yīng)繼續(xù)使SCIO為低電平。當(dāng)從器件處在保持模式時(shí),主器件就可以進(jìn)行對(duì)其他I/O設(shè)備的中斷處理工作,中斷處理結(jié)束后可通過(guò)發(fā)送MAK來(lái)終止保持過(guò)程,并繼續(xù)之前的通信。圖2給出了包含保持過(guò)程的字節(jié)幀結(jié)構(gòu)。
1.3 UNI/O總線(xiàn)的命令序列
UNI/O總線(xiàn)的命令序列是指完成一條指令的執(zhí)行主從器件,需要在總線(xiàn)上傳送的各種信號(hào)和字節(jié)幀的有序組合。在UNI/O總線(xiàn)系統(tǒng)中,一條指令的執(zhí)行過(guò)程必須包括:總線(xiàn)準(zhǔn)備、主從同步、從器件選擇、指令傳輸和指令執(zhí)行等環(huán)節(jié)。
1.3.1 總線(xiàn)定義的信號(hào)
(1)待機(jī)脈沖
待機(jī)脈沖是由主器件驅(qū)動(dòng)SCIO到高電平狀態(tài),并保持此狀態(tài)600μs以上形成的脈沖信號(hào)。待機(jī)脈沖通常用來(lái)通知總線(xiàn)上的所有從器件進(jìn)入待機(jī)模式,也可以用來(lái)提前終止一條指令的執(zhí)行。在執(zhí)行一條指令時(shí),如果是第一條指令,或者要選擇的從器件與上一條指令不同,或者上一條指令的執(zhí)行過(guò)程發(fā)生了錯(cuò)誤,本條指令的執(zhí)行都必須從產(chǎn)生待機(jī)脈沖開(kāi)始。
(2)TSS信號(hào)
TSS信號(hào)是由主器件驅(qū)動(dòng)SCIO到高電平狀態(tài),并保持此狀態(tài)10μs以上形成的脈沖信號(hào)。在一條指令成功執(zhí)行之后,若還要執(zhí)行下一條指令來(lái)對(duì)同一個(gè)從器件進(jìn)行操作,則后一條指令執(zhí)行過(guò)程的第一步只需產(chǎn)生一個(gè)TSS信號(hào),而不需要再產(chǎn)生待機(jī)脈沖。這樣,通信效率會(huì)更高。
1.3.2 特殊功能字節(jié)幀
(1)起始頭
起始頭用來(lái)使從器件進(jìn)入正常工作模式,并同步從器件內(nèi)的時(shí)鐘。起始頭由5μs以上的持續(xù)低電平脈沖和緊跟其后的8位編碼“01010 101”組成。所有的從器件都可以從起始頭中獲知位周期的長(zhǎng)短,并以此為依據(jù)調(diào)整內(nèi)部時(shí)鐘,實(shí)現(xiàn)主從同步。起始頭之后的主應(yīng)答位應(yīng)為MAK,從應(yīng)答位正常情況應(yīng)為NoSAK。
(2)地址幀
地址幀用于選擇總線(xiàn)上特定的從器件進(jìn)行通信。從器件地址有8位和12位兩種類(lèi)型,由4位系列碼和4位或8位從器件碼組成。8位地址的傳輸只需一個(gè)地址幀,正常情況,其應(yīng)答序列由MAK和SAK組成。12位地址的傳輸需要兩個(gè)字節(jié)幀:高地址字節(jié)幀和緊跟其后的低地址字節(jié)幀。正常情況,低地址字節(jié)幀中的應(yīng)答序列應(yīng)該由MAK和SAK組成,高地址字節(jié)幀中的應(yīng)答序列則由MAK和NoSAK組成。
評(píng)論