在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux SPI總線和設(shè)備驅(qū)動(dòng)架構(gòu)之一:系統(tǒng)概述

            Linux SPI總線和設(shè)備驅(qū)動(dòng)架構(gòu)之一:系統(tǒng)概述

            作者: 時(shí)間:2016-12-23 來(lái)源:網(wǎng)絡(luò) 收藏

              是"Serial Peripheral Interface" 的縮寫,是一種四線制的同步串行通信接口,用來(lái)連接微控制器、傳感器、存儲(chǔ)設(shè)備,設(shè)備分為主設(shè)備和從設(shè)備兩種,用于通信和控制的四根線分別是:

            本文引用地址:http://www.biyoush.com/article/201612/341995.htm

              CS 片選信號(hào)

              SCK 時(shí)鐘信號(hào)

              MISO 主設(shè)備的數(shù)據(jù)輸入、從設(shè)備的數(shù)據(jù)輸出腳

              MOSI 主設(shè)備的數(shù)據(jù)輸出、從設(shè)備的數(shù)據(jù)輸入腳

              因?yàn)樵诖蠖鄶?shù)情況下,CPU或SOC一側(cè)通常都是工作在主設(shè)備模式,所以,目前的內(nèi)核版本中,只實(shí)現(xiàn)了主模式的驅(qū)動(dòng)框架。

              /*****************************************************************************************************/

              聲明:本博內(nèi)容均由http://blog.csdn.net/droidphone原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處,謝謝!

              /*****************************************************************************************************/

              硬件結(jié)構(gòu)

              通常,負(fù)責(zé)發(fā)出時(shí)鐘信號(hào)的設(shè)備我們稱之為主設(shè)備,另一方則作為從設(shè)備,下圖是一個(gè)系統(tǒng)的硬件連接示例:

              圖1.1 SPI硬件結(jié)構(gòu)圖

              如上圖所示,主設(shè)備對(duì)應(yīng)SOC芯片中的SPI控制器,通常,一個(gè)SOC中可能存在多個(gè)SPI控制器,像上面的例子所示,SOC芯片中有3個(gè)SPI控制器。每個(gè)控制器下可以連接多個(gè)SPI從設(shè)備,每個(gè)從設(shè)備有各自獨(dú)立的CS引腳。每個(gè)從設(shè)備共享另外3個(gè)信號(hào)引腳:SCK、MISO、MOSI。任何時(shí)刻,只有一個(gè)CS引腳處于有效狀態(tài),與該有效CS引腳連接的設(shè)備此時(shí)可以與主設(shè)備(SPI控制器)通信,其它的從設(shè)備處于等待狀態(tài),并且它們的3個(gè)引腳必須處于高阻狀態(tài)。

              工作時(shí)序

              按照時(shí)鐘信號(hào)和數(shù)據(jù)信號(hào)之間的相位關(guān)系,SPI有4種工作時(shí)序模式:

              我們用CPOL表示時(shí)鐘信號(hào)的初始電平的狀態(tài),CPOL為0表示時(shí)鐘信號(hào)初始狀態(tài)為低電平,為1表示時(shí)鐘信號(hào)的初始電平是高電平。另外,我們用CPHA來(lái)表示在那個(gè)時(shí)鐘沿采樣數(shù)據(jù),CPHA為0表示在首個(gè)時(shí)鐘變化沿采樣數(shù)據(jù),而CPHA為1則表示要在第二個(gè)時(shí)鐘變化沿來(lái)采樣數(shù)據(jù)。內(nèi)核用CPOL和CPHA的組合來(lái)表示當(dāng)前SPI需要的工作模式:

              CPOL=0,CPHA=1 模式0

              CPOL=0,CPHA=1 模式1

              CPOL=1,CPHA=0 模式2

              CPOL=1,CPHA=1 模式3

              軟件架構(gòu)

              在內(nèi)核的SPI驅(qū)動(dòng)的軟件架構(gòu)中,進(jìn)行了合理的分層和抽象,如下圖所示:

              圖2.1 SPI驅(qū)動(dòng)的軟件架構(gòu)

              SPI控制器驅(qū)動(dòng)程序

              SPI控制器不用關(guān)心設(shè)備的具體功能,它只負(fù)責(zé)把上層協(xié)議驅(qū)動(dòng)準(zhǔn)備好的數(shù)據(jù)按SPI總線的時(shí)序要求發(fā)送給SPI設(shè)備,同時(shí)把從設(shè)備收到的數(shù)據(jù)返回給上層的協(xié)議驅(qū)動(dòng),因此,內(nèi)核把SPI控制器的驅(qū)動(dòng)程序獨(dú)立出來(lái)。SPI控制器驅(qū)動(dòng)負(fù)責(zé)控制具體的控制器硬件,諸如DMA和中斷操作等等,因?yàn)槎鄠€(gè)上層的協(xié)議驅(qū)動(dòng)可能會(huì)通過(guò)控制器請(qǐng)求數(shù)據(jù)傳輸操作,所以,SPI控制器驅(qū)動(dòng)同時(shí)也要負(fù)責(zé)對(duì)這些請(qǐng)求進(jìn)行隊(duì)列管理,保證先進(jìn)先出的原則。

              SPI通用接口封裝層

              為了簡(jiǎn)化SPI驅(qū)動(dòng)程序的編程工作,同時(shí)也為了降低協(xié)議驅(qū)動(dòng)程序和控制器驅(qū)動(dòng)程序的耦合程度,內(nèi)核把控制器驅(qū)動(dòng)和協(xié)議驅(qū)動(dòng)的一些通用操作封裝成標(biāo)準(zhǔn)的接口,加上一些通用的邏輯處理操作,組成了SPI通用接口封裝層。這樣的好處是,對(duì)于控制器驅(qū)動(dòng)程序,只要實(shí)現(xiàn)標(biāo)準(zhǔn)的接口回調(diào)API,并把它注冊(cè)到通用接口層即可,無(wú)需直接和協(xié)議層驅(qū)動(dòng)程序進(jìn)行交互。而對(duì)于協(xié)議層驅(qū)動(dòng)來(lái)說(shuō),只需通過(guò)通用接口層提供的API即可完成設(shè)備和驅(qū)動(dòng)的注冊(cè),并通過(guò)通用接口層的API完成數(shù)據(jù)的傳輸,無(wú)需關(guān)注SPI控制器驅(qū)動(dòng)的實(shí)現(xiàn)細(xì)節(jié)。

              SPI協(xié)議驅(qū)動(dòng)程序

              上面我們提到,控制器驅(qū)動(dòng)程序并不清楚和關(guān)注設(shè)備的具體功能,SPI設(shè)備的具體功能是由SPI協(xié)議驅(qū)動(dòng)程序完成的,SPI協(xié)議驅(qū)動(dòng)程序了解設(shè)備的功能和通信數(shù)據(jù)的協(xié)議格式。向下,協(xié)議驅(qū)動(dòng)通過(guò)通用接口層和控制器交換數(shù)據(jù),向上,協(xié)議驅(qū)動(dòng)通常會(huì)根據(jù)設(shè)備具體的功能和內(nèi)核的其它子系統(tǒng)進(jìn)行交互,例如,和MTD層交互以便把SPI接口的存儲(chǔ)設(shè)備實(shí)現(xiàn)為某個(gè)文件系統(tǒng),和TTY子系統(tǒng)交互把SPI設(shè)備實(shí)現(xiàn)為一個(gè)TTY設(shè)備,和網(wǎng)絡(luò)子系統(tǒng)交互以便把一個(gè)SPI設(shè)備實(shí)現(xiàn)為一個(gè)網(wǎng)絡(luò)設(shè)備,等等。當(dāng)然,如果是一個(gè)專有的SPI設(shè)備,我們也可以按設(shè)備的協(xié)議要求,實(shí)現(xiàn)自己的專有協(xié)議驅(qū)動(dòng)。

              SPI通用設(shè)備驅(qū)動(dòng)程序

              有時(shí)候,考慮到連接在SPI控制器上的設(shè)備的可變性,在內(nèi)核沒有配備相應(yīng)的協(xié)議驅(qū)動(dòng)程序,對(duì)于這種情況,內(nèi)核為我們準(zhǔn)備了通用的SPI設(shè)備驅(qū)動(dòng)程序,該通用設(shè)備驅(qū)動(dòng)程序向用戶空間提供了控制SPI控制的控制接口,具體的協(xié)議控制和數(shù)據(jù)傳輸工作交由用戶空間根據(jù)具體的設(shè)備來(lái)完成,在這種方式中,只能采用同步的方式和SPI設(shè)備進(jìn)行通信,所以通常用于一些數(shù)據(jù)量較少的簡(jiǎn)單SPI設(shè)備。



            關(guān)鍵詞: Linux SPI

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉