,同時產(chǎn)生 內(nèi)部中斷信號,即控制寄存器的ΙΝΤ狀態(tài)位為1,當(dāng)處于中斷模式時,/ΙΝΤ信號線同時產(chǎn)生低 電平或低電平脈沖中斷請求信號。當(dāng)串行總線控制器處于發(fā)送數(shù)據(jù)狀態(tài)時,狀態(tài)寄存器的 值為0χΑ2。數(shù)據(jù)發(fā)送完畢,產(chǎn)生延時寄存器指定的延時后,狀態(tài)寄存器的值變?yōu)?χΕ2,同時 產(chǎn)生內(nèi)部中斷信號,當(dāng)處于中斷模式時,/ΙΝΤ信號線產(chǎn)生中斷請求信號。
[0079] 當(dāng)本條串行操作指令為讀類型時,主控制器處于主接收模式,狀態(tài)寄存器的值分 別為0^0、0妨1、0^3、0述3。當(dāng)串行總線控制器處于發(fā)送地址狀態(tài)時,狀態(tài)寄存器的值為 0χΑ0。地址發(fā)送完畢,產(chǎn)生延時寄存器指定的延時后,狀態(tài)寄存器的值變?yōu)镺xEl,同時產(chǎn)生 內(nèi)部中斷信號,即控制寄存器的INT狀態(tài)位為1,當(dāng)處于中斷模式時,/INT信號線同時產(chǎn)生低 電平或低電平脈沖中斷請求信號。當(dāng)串行總線控制器處于接收數(shù)據(jù)狀態(tài)時,狀態(tài)寄存器的 值為0xA3。數(shù)據(jù)接收完畢,產(chǎn)生延時寄存器指定的延時后,狀態(tài)寄存器的值變?yōu)?xE3,同時 產(chǎn)生內(nèi)部中斷信號,當(dāng)處于中斷模式時,/INT信號線產(chǎn)生中斷請求信號。
[0080] 串行總線從設(shè)備(serial bus slave device)有三種模式,即空閑模式(idle mode)、從發(fā)送模式(slave transmitter mode)、從接收模式(slave receiver mode) 〇狀態(tài) 寄存器存儲串行總線從設(shè)備狀態(tài)機(jī)信息。下面以8位模式說明本發(fā)明串行總線從設(shè)備的設(shè) 計思想。
[0081] 空閑模式表示從設(shè)備處于空閑狀態(tài),這時狀態(tài)寄存器的值為十六進(jìn)制的0xF8。
[0082] 當(dāng)本條串行操作指令為寫類型時,從設(shè)備處于從接收模式,狀態(tài)寄存器的值分別 為(^81、(^?1、(^83、(^?3、(^85。當(dāng)從設(shè)備檢測到3_303信號線由高電平變?yōu)榈碗娖綍r,/3_ INT信號線置為高電平。當(dāng)從設(shè)備處于接收地址狀態(tài)時,狀態(tài)寄存器的值為OxBl。地址接收 完畢,狀態(tài)寄存器的值變?yōu)?xFl,/S_INT信號線同時產(chǎn)生低電平中斷請求信號。當(dāng)從設(shè)備處 于接收數(shù)據(jù)狀態(tài)時,狀態(tài)寄存器的值為0xB3,/S_INT信號線置為高電平。數(shù)據(jù)接收完畢,狀 態(tài)寄存器的值變?yōu)?xF3,/S_INT信號線同時產(chǎn)生低電平中斷請求信號。當(dāng)S_SCS信號線變?yōu)?高電平,該條指令接收完畢,從設(shè)備處于執(zhí)行指令狀態(tài),狀態(tài)寄存器的值變?yōu)?xB5,/S_INT 信號線置為高電平。指令執(zhí)行完畢,從設(shè)備處于空閑狀態(tài),狀態(tài)寄存器的值變?yōu)?xF8,/S_ INT信號線同時產(chǎn)生低電平中斷請求信號。
[0083] 當(dāng)本條串行操作指令為讀類型時,從設(shè)備處于從發(fā)送模式,狀態(tài)寄存器的值分別 為(^81、(^84、(^?0、(^82、(^?2。當(dāng)從設(shè)備檢測到3_303信號線由高電平變?yōu)榈碗娖綍r,/3_ INT信號線置為高電平。當(dāng)從設(shè)備處于接收地址狀態(tài)時,狀態(tài)寄存器的值為OxBl。地址接收 完畢,執(zhí)行該指令,狀態(tài)寄存器的值變?yōu)?xB4。數(shù)據(jù)準(zhǔn)備好后,狀態(tài)寄存器的值變?yōu)?xF0,/ S_INT信號線同時產(chǎn)生低電平中斷請求信號。當(dāng)從設(shè)備處于發(fā)送數(shù)據(jù)狀態(tài)時,狀態(tài)寄存器的 值為0xB2,/S_INT信號線置為高電平。數(shù)據(jù)發(fā)送完畢,狀態(tài)寄存器的值變?yōu)?xF2,/S_INT信 號線同時產(chǎn)生低電平中斷請求信號。當(dāng)從設(shè)備檢測到s_scs信號線由低電平變?yōu)楦唠娖?時,/S_INT信號線置為高電平。
[0084] 圖7是串行總線主發(fā)送模式時序圖。其中,CLK、/CS、/RD、/WR、A[1..0]、D[7..0]、/ I NT為串行總線控制器與CPU接口信號。SCS、SCLK、SDI、SD0為串行總線控制器端信號, STATUS為串行總線控制器狀態(tài)寄存器。S_SCS、S_SCLK、S_SDI、S_SD0為串行總線從設(shè)備端信 號,/S_INT為串行總線從設(shè)備輸出中斷請求信號,S_STATUS為串行總線從設(shè)備狀態(tài)寄存器。 [0085] 在本例中CPU向串行總線的0x78地址單元依次寫入OxAA和0x55。串行總線控制器 處于空閑時,狀態(tài)寄存器的值為0xE8<XPU向串行總線控制器的指令寄存器寫入OxFO,啟動 了 一次串行總線主發(fā)送操作,SCS信號變?yōu)榈?,狀態(tài)寄存器的值變?yōu)镺xAO,SCLK產(chǎn)生8個時鐘 脈沖,SD0串行輸出0xF0,SD0輸出完畢,狀態(tài)寄存器的值變?yōu)?xE0,表示上個步驟操作完畢, 在電平型中斷模式下,中斷請求信號/ΙΝΤ變?yōu)榈?,在邊沿型中斷模式下,中斷請求信?ΙΝΤ 產(chǎn)生低電平脈沖,同時讀控制寄存器的ΙΝΤ位置為1,表示產(chǎn)生了中斷請求狀態(tài)。CPU向串行 總線控制器的數(shù)據(jù)寄存器寫入OxAA,向串行總線控制器的控制寄存器寫入0x04,中斷請求 信號/INT變?yōu)楦?,讀控制寄存器的INT位置為0,表示清除了中斷請求狀態(tài),狀態(tài)寄存器的值 變?yōu)?xA2,同時啟動了串行總線操作的下個步驟。SCLK產(chǎn)生8個時鐘脈沖,SD0串行輸出數(shù)據(jù) OxAA,SD0輸出完畢,狀態(tài)寄存器的值變?yōu)?xE2,表示上個步驟操作完畢,在電平型中斷模式 下,中斷請求信號/INT變?yōu)榈?,在邊沿型中斷模式下,中斷請求信?INT產(chǎn)生低電平脈沖, 同時讀控制寄存器的INT位置為1,表示產(chǎn)生了中斷請求狀態(tài)。如果有下一個數(shù)據(jù)要輸出,例 如,CPU向串行總線控制器的數(shù)據(jù)寄存器寫入0x55,向串行總線控制器的控制寄存器寫入 0x04,中斷請求信號/INT變?yōu)楦?,讀控制寄存器的INT位置為0,表示清除了中斷請求狀態(tài), 狀態(tài)寄存器的值變?yōu)?xA2,同時啟動了串行總線操作的下個步驟。SCLK產(chǎn)生8個時鐘脈沖, SD0串行輸出數(shù)據(jù)0x55,SD0輸出完畢,狀態(tài)寄存器的值變?yōu)?xE2,表示上個步驟操作完畢, 在電平型中斷模式下,中斷請求信號/INT變?yōu)榈停谶呇匦椭袛嗄J较?,中斷請求信?INT 產(chǎn)生低電平脈沖,同時讀控制寄存器的INT位置為1,表示產(chǎn)生了中斷請求狀態(tài)。數(shù)據(jù)發(fā)送完 畢后,CPU向串行總線控制器的控制寄存器寫入0x01,中斷請求信號/INT變?yōu)楦?,讀控制寄 存器的INT位置為0,表示清除了中斷請求狀態(tài),SCS信號變?yōu)楦撸敬尾僮魍瓿?,狀態(tài)寄存器 的值變?yōu)?xE8。
[0086]當(dāng)串行總線控制器為主發(fā)送模式時,串行總線從設(shè)備處于從接收模式。串行總線 從設(shè)備處于空閑時,狀態(tài)寄存器的值為0xF8。串行總線從設(shè)備檢測信號變?yōu)榈秃螅?狀態(tài)寄存器的值變?yōu)镺xBl,S_SCLK上接收到8個時鐘脈沖,S_SDI串行接收命令數(shù)據(jù),在本例 中是0xF0,S_SDI輸入完畢,狀態(tài)寄存器的值變?yōu)镺xFl,表示上個步驟操作完畢,中斷請求信 號/S_INT變?yōu)榈?。SCLK接著接收到8個時鐘脈沖,在第1個時鐘脈沖的上升沿狀態(tài)寄存器的 值變?yōu)?xB3,S_SDI串行數(shù)據(jù)接收完畢,在本例中數(shù)值是OxAA,狀態(tài)寄存器的值變?yōu)?xF3,表 示上個步驟操作完畢,中斷請求信號/S_INT變?yōu)榈?。如果有下一個數(shù)據(jù)要輸入,S_SCLK上接 收到8個時鐘脈沖,在第1個時鐘脈沖的上升沿狀態(tài)寄存器的值變?yōu)?xB3,S_SDI串行數(shù)據(jù)接 收完畢,在本例中數(shù)值是0x55,狀態(tài)寄存器的值變?yōu)?xF3,表示上個步驟操作完畢,中斷請 求信號/S_INT變?yōu)榈?。串行總線從設(shè)備檢測到S_SCS信號變?yōu)楦吆?,將中斷請求信?S_INT 置為高,表示該條指令已經(jīng)接收完畢。狀態(tài)寄存器的值變?yōu)?xB5,表示正在執(zhí)行該條指令。 執(zhí)行完該條指令后,將中斷請求信號/S_INT置為低,串行總線從設(shè)備處于空閑狀態(tài),狀態(tài)寄 存器的值變?yōu)?xF8。
[0087] 圖8是串行總線主接收模式時序圖,在本例中CPU從串行總線的0x78地址單元依次 讀出OxAA和0x55。串行總線控制器處于空閑時,狀態(tài)寄存器的值為0XE8XPU向串行總線控 制器的指令寄存器寫入OxFl,啟動了一次串行總線主接收操作,SCS信號變?yōu)榈?,狀態(tài)寄存 器的值變?yōu)镺xAO,SCLK產(chǎn)生8個時鐘脈沖,SD0串行輸出OxFl,SD0輸出完畢,狀態(tài)寄存器的值 變?yōu)镺xEl,表示上個步驟操作完畢,在電平型中斷模式下,中斷請求信號/INT變?yōu)榈?,在?沿型中斷模式下,中斷請求信號/INT產(chǎn)生低電平脈沖,同時讀控制寄存器的INT位置為1,表 示產(chǎn)生了中斷請求狀態(tài)。CPU向串行總線控制器的控制寄存器寫入0x04,中斷請求信號/INT 變?yōu)楦?,讀控制寄存器的INT位置為0,表示清除了中斷請求狀態(tài),狀態(tài)寄存器的值變?yōu)?0xA3,同時啟動了串行總線操作的下個步驟。SCLK產(chǎn)生8個時鐘脈沖,SDI串行輸入數(shù)據(jù) OxAA,SDI輸入完畢,狀態(tài)寄存器的值變?yōu)?xE3,表示上個步驟操作完畢,在電平型中斷模式 下,中斷請求信號/INT變?yōu)榈?,在邊沿型中斷模式下,中斷請求信?INT產(chǎn)生低電平脈沖, 同時讀控制寄存器的INT位置為1,表示產(chǎn)生了中斷請求狀態(tài)。接著CPU讀取串行總線控制器 的數(shù)據(jù)寄存器,在本例中數(shù)值為OxAA。如果需要讀下一個數(shù)據(jù),CPU向串行總線控制器的控 制寄存器寫入0x04,中斷請求信號/INT變?yōu)楦?,讀控制寄存器的INT位置為0,表示清除了中 斷請求狀態(tài),狀態(tài)寄存器的值