基于SPI總線的51單片機(jī)多機(jī)互連編程技術(shù)
圖4中2號機(jī)SPI通信和UART通信皆為Slaver方式,由于SPI、UART共用一個(gè)中斷,會導(dǎo)致通信工作過程不正常,嚴(yán)重時(shí)SPI和UART通信皆無法正常進(jìn)行。上述協(xié)議無法滿足需要。為此,在基本協(xié)議的基礎(chǔ)上,構(gòu)造高級的協(xié)議。
高級協(xié)議:主機(jī)和從機(jī)皆用定時(shí)器進(jìn)行SPI數(shù)據(jù)幀的收發(fā),定時(shí)器是SPI通信的發(fā)動機(jī),通信是由主機(jī)定時(shí)器發(fā)動。從機(jī)僅被動收發(fā),為了保證SPI收發(fā)雙方數(shù)據(jù)包的字節(jié)相位匹配,必須設(shè)置數(shù)據(jù)包收發(fā)緩沖區(qū),收發(fā)緩沖區(qū)字節(jié)個(gè)數(shù)應(yīng)當(dāng)是數(shù)據(jù)包的N倍。同時(shí),數(shù)據(jù)包中設(shè)置若干包標(biāo)示字節(jié),通常為頭字節(jié)、尾字節(jié),以便主從機(jī)在接收數(shù)據(jù)時(shí)可以動態(tài)的進(jìn)行字節(jié)相位的校準(zhǔn),保證數(shù)據(jù)接收的可靠性。高級協(xié)議構(gòu)造示意圖如圖5所示。本文引用地址:http://www.ex-cimer.com/article/171013.htm
圖5中,SPI通信數(shù)據(jù)包為8個(gè)字節(jié),包標(biāo)識字節(jié)為0x0d、0x0c。SPI通信發(fā)動采用PCA定時(shí)器模式,讀者也可以采用定時(shí)器T1和T2實(shí)現(xiàn)SPI通信發(fā)動。參考程序如下:
評論