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