本應(yīng)用說明描述了如何使用帶有片上8位SPI的ST7微控制器來模擬16位從屬SPI。
ST7 SPI單元有一個(gè)雙緩沖區(qū),用于使用兩個(gè)8位寄存器接收數(shù)據(jù):一個(gè)讀寄存器和一個(gè)移位寄存器(見圖2)。應(yīng)用軟件訪問讀取寄存器以檢索接收到的數(shù)據(jù)。8位移位寄存器由硬件管理,以接收每個(gè)字節(jié)的8位。當(dāng)每個(gè)比特被接收時(shí),它被移位到移位寄存器中。在字節(jié)接收期間,讀取寄存器不會(huì)改變。它包含之前接收到的字節(jié),軟件仍可讀取該字節(jié)。在字節(jié)接收結(jié)束時(shí),8位移位寄存器被復(fù)制到讀取寄存器中。
這種雙緩沖使得接收16位字成為可能。在接收第一字節(jié)結(jié)束時(shí),將移位寄存器復(fù)制到讀取寄存器中,設(shè)置SPIF標(biāo)志,并可以生成中斷。下一個(gè)傳入字節(jié)將在移位寄存器中接收,而第一個(gè)字節(jié)在讀取寄存器中可用。為了不丟失任何比特,軟件必須足夠快,以便在第二個(gè)字節(jié)的接收結(jié)束之前讀取第一個(gè)字節(jié)。
注意:SPISR(SPI狀態(tài)寄存器)也稱為SPICSR(SPI Control/Status Register),具體取決于您使用的ST7微控制器設(shè)備。在本應(yīng)用程序說明中,我們將使用SPISR名稱作為狀態(tài)寄存器。