嵌入式系統(tǒng)中可配置式GPIO模擬SPI總線方法
在嵌入式系統(tǒng)處理器中有相當一部分處理器不帶SPI接口,但基丁SPI接口的設(shè)備非常豐富,此外,SPI設(shè)備的不同以及處理器對GPIO口位尋址是否支持各處理器各有不同,因而不同處理器中軟件模擬GPIO也各不相同。若能提供一種通用可配置可移植的GPIO模擬SPI總線的驅(qū)動則能很方便快捷的訪問SPI設(shè)備,從而提高整個嵌入式系統(tǒng)的開發(fā)效率。本文針對GPIO口位尋址與否給出方面,給出了一種可配置GPIO模擬SPI總線的方法并詳細介紹了其設(shè)計與實現(xiàn)過程,且具有代碼小可移植性強使用方便等特點。
本文引用地址:http://2s4d.com/article/149407.htm1 GPIO規(guī)范
SPI是一個全雙工的串行接口。它設(shè)計成可以在一個給定總線上處理多個互聯(lián)的主機和從機。在一定數(shù)據(jù)傳輸過程中,接口上只能有一個豐機和一個從機能夠通信。在一次數(shù)據(jù)傳輸中,主機總是向從機發(fā)送一個字節(jié)數(shù)據(jù),而從機也總是向主要發(fā)送一個字節(jié)數(shù)據(jù)??梢允筂CU與各種外圍設(shè)備以串行方式進行通信以交換信息。由于SPI總線一共只需3~4位數(shù)據(jù)線和控制線即可實現(xiàn)與具有SPI總線接口功能的各種I/O器件進行接口,而擴展并行總線則需要8根數(shù)據(jù)線、8~16位地址線、2~3位控制線,岡此,采用SPI總線接口可以簡化電路設(shè)計,節(jié)省很多常規(guī)電路中的接口器件和I/O口線,提高設(shè)計的可靠性。在基于SPI總線接口構(gòu)成的通信網(wǎng)絡(luò)中,通信可由主節(jié)點發(fā)起,也可由從節(jié)點發(fā)起。當主節(jié)點發(fā)起通信時,它可主動對從節(jié)點進行數(shù)據(jù)的讀寫操作。工作過程敘述如下:首先選中要與之通信的從節(jié)點(通常片選端為低有效),而后送出時鐘信號,讀取數(shù)據(jù)信息的操作將在時鐘的上升沿(或下降沿)進行。每送出八個時鐘脈沖,從節(jié)點產(chǎn)生一個中斷信號,該中斷信號通知上節(jié)點一個字節(jié)已完整接收,可發(fā)送下一個字節(jié)的數(shù)據(jù)。SPI接口網(wǎng)絡(luò)主從點需完成給出片選信號及時鐘信號,它可主動的與各從節(jié)點進行信息的交流;而在從節(jié)點主動要求服務(wù)的情況下,它卻是一種半主動的形式。由SPI接口技術(shù)構(gòu)成的網(wǎng)絡(luò)接口信號線(CLK、MOSI、MISO、/SS和INT)如果輔之以相應(yīng)完備的通信協(xié)議,其服務(wù)功能必然會增強,相比于485等主從式分布網(wǎng)絡(luò)而言,其通信速率也應(yīng)有較人的提高。
2 GPIO模擬SPl
2.1 SPI硬件結(jié)構(gòu)
SPI接口在內(nèi)部硬件實際上足兩個簡單的移位寄存器,傳輸?shù)臄?shù)據(jù)為8位,在主器件產(chǎn)生的從器件使能信號和移位脈沖下,按位傳輸,高位在前,低位在后,SPI內(nèi)部硬件結(jié)構(gòu)如圖1所示。
2.2 SPI時序
在SCLK的下降沿上數(shù)據(jù)改變,同時一位數(shù)據(jù)被存入移位寄存器,SPI時序如圖2所示。
2.3 SPI寫過程模擬
采用掩碼方式實現(xiàn)位控制。
3 可配置GPIO設(shè)計與實現(xiàn)
GPIO端口可分為支持位尋址和不支持位尋址,需由程序移植人員根據(jù)處理器及編譯器情況定義GPIO對應(yīng)的SPI接口,相關(guān)文件在SPIHARD.H中。
3.1 GPIO配置
3.2 實現(xiàn)配置的可移植部分
與GPIO口尋址方式無關(guān)性代碼的實現(xiàn)。
以上實現(xiàn)在EPSON S1C33L11、AT89C52、SPCE061A及PHILIPS ARM LPC2106上都得到驗證。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論