SPI接口基礎上的各種串行通信工作方式配置及驅動編程
圖2中,筆者設計的基本協議如下:SPI的工作模式是主機用PCA定時器進行數據連續發、收,從機用串行中斷進行數據連續收、發。建立收發數據包,每個數據包8個字節,主從機均建立一個8個字節的發送數據緩沖區(spi send buf[8])和一個8個字節的接收數據緩沖區(spi_re cv_buf[8]),并建立一個完整數據包接收完畢標志(spi_recv_flag)。當用戶需要發送數據時,隨時可以將發送數據包填入發送緩沖區,當需要接收數據時,隨時測試接收標志是否置傳,這樣從接收數據緩沖區中得到對方發來的數據包。按照上述協議,SPI接口設置好以后,用戶的數據收發只要面對本協議設置的通信緩沖區,而無需關注SPI接口如何工作。從而滿足數據雙向傳輸、隨機收發的要求。基本協議構造示意圖如圖3所示。
注意:筆者主機顯示設備為LCD12864,從機顯示設備為8個數碼管,為縮短篇幅,其顯示驅動程序未列出。從程序中可以看出,SPI接口在發送一個字節的同時,接收一個字節,這是SPI與其他串行通信方式本質的不同。此外,筆者在接近1 MHz的極限速率下作了測試,數據傳輸穩定。
3 高級協議的設計和實現
基本協議較簡單,可以保證通信雙方能夠可靠地進行數據傳輸,但上述協議的實現依賴于從機中斷方式。而SPI中斷與UART串行中斷共用,當從機串行口用于其他通信時,就要避免通信中斷的相互干擾。復雜電子系統通信配置圖如圖4所示。
圖4中的單片機串口只是數據發送,而無需接收數據,串行通信也只需單向數據傳輸。采用查詢方式,不占用中斷,串行4號中斷用于SPI通信。因此,可以用SPI基本協議完成單片機雙機通信功能。若電子系統與上位機之間有信息交互的要求,并且收發數據皆為隨機,此時系統通信的配置模式如圖4所示。
數字通信相關文章:數字通信原理
通信相關文章:通信原理
評論