基于SPI總線(xiàn)的51單片機多機互連編程技術(shù)
圖2中,筆者設計的基本協(xié)議如下:SPI的工作模式是主機用PCA定時(shí)器進(jìn)行數據連續發(fā)、收,從機用串行中斷進(jìn)行數據連續收、發(fā)。建立收發(fā)數據包,每個(gè)數據包8個(gè)字節,主從機均建立一個(gè)8個(gè)字節的發(fā)送數據緩沖區(spi send buf[8])和一個(gè)8個(gè)字節的接收數據緩沖區(spi_re cv_buf[8]),并建立一個(gè)完整數據包接收完畢標志(spi_recv_flag)。當用戶(hù)需要發(fā)送數據時(shí),隨時(shí)可以將發(fā)送數據包填入發(fā)送緩沖區,當需要接收數據時(shí),隨時(shí)測試接收標志是否置傳,這樣從接收數據緩沖區中得到對方發(fā)來(lái)的數據包。按照上述協(xié)議,SPI接口設置好以后,用戶(hù)的數據收發(fā)只要面對本協(xié)議設置的通信緩沖區,而無(wú)需關(guān)注SPI接口如何工作。從而滿(mǎn)足數據雙向傳輸、隨機收發(fā)的要求?;緟f(xié)議構造示意圖如圖3所示。本文引用地址:http://dyxdggzs.com/article/171013.htm
注意:筆者主機顯示設備為L(cháng)CD12864,從機顯示設備為8個(gè)數碼管,為縮短篇幅,其顯示驅動(dòng)程序未列出。從程序中可以看出,SPI接口在發(fā)送一個(gè)字節的同時(shí),接收一個(gè)字節,這是SPI與其他串行通信方式本質(zhì)的不同。此外,筆者在接近1 MHz的極限速率下作了測試,數據傳輸穩定。
3 高級協(xié)議的設計和實(shí)現
基本協(xié)議較簡(jiǎn)單,可以保證通信雙方能夠可靠地進(jìn)行數據傳輸,但上述協(xié)議的實(shí)現依賴(lài)于從機中斷方式。而SPI中斷與UART串行中斷共用,當從機串行口用于其他通信時(shí),就要避免通信中斷的相互干擾。復雜電子系統通信配置圖如圖4所示。
圖4中的單片機串口只是數據發(fā)送,而無(wú)需接收數據,串行通信也只需單向數據傳輸。采用查詢(xún)方式,不占用中斷,串行4號中斷用于SPI通信。因此,可以用SPI基本協(xié)議完成單片機雙機通信功能。若電子系統與上位機之間有信息交互的要求,并且收發(fā)數據皆為隨機,此時(shí)系統通信的配置模式如圖4所示。
評論