chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度解析Linux SPI總線和設(shè)備驅(qū)動(dòng)架構(gòu)

Q4MP_gh_c472c21 ? 來(lái)源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-02-07 08:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

·CS 片選信號(hào)

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

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

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

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

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

深度解析Linux SPI總線和設(shè)備驅(qū)動(dòng)架構(gòu)

圖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)核沒(mé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è)備。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11806

    瀏覽量

    219493
  • SPI總線
    +關(guān)注

    關(guān)注

    4

    文章

    110

    瀏覽量

    28494
  • 設(shè)備驅(qū)動(dòng)

    關(guān)注

    0

    文章

    71

    瀏覽量

    11365

原文標(biāo)題:Linux SPI總線和設(shè)備驅(qū)動(dòng)架構(gòu)你都懂了嗎?

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何理解Linux內(nèi)核中的PCIe驅(qū)動(dòng)

    我們習(xí)慣了用 Verilog 去死磕 PCIe 的底層協(xié)議狀態(tài)機(jī)。但一旦越過(guò)硬件邊界來(lái)到操作系統(tǒng)層面,Linux 內(nèi)核是如何接管并驅(qū)動(dòng)這些 PCI/PCIe 設(shè)備的呢?由于不同的 CPU 架構(gòu)
    的頭像 發(fā)表于 04-11 17:22 ?1187次閱讀

    深入解析Microchip 23A256/23K256 256-Kbit SPI總線低功耗串行SRAM

    深入解析Microchip 23A256/23K256 256-Kbit SPI總線低功耗串行SRAM 在電子設(shè)計(jì)領(lǐng)域,存儲(chǔ)設(shè)備的性能和特性對(duì)整個(gè)系統(tǒng)的運(yùn)行起著至關(guān)重要的作用。今天,我
    的頭像 發(fā)表于 04-05 13:50 ?635次閱讀

    TPS61042:高性能LED驅(qū)動(dòng)芯片的深度解析

    TPS61042:高性能LED驅(qū)動(dòng)芯片的深度解析 在電子設(shè)備的設(shè)計(jì)中,LED驅(qū)動(dòng)芯片的性能直接影響著設(shè)備
    的頭像 發(fā)表于 02-27 16:15 ?295次閱讀

    Rockchip CIF驅(qū)動(dòng)深度解析:從架構(gòu)設(shè)計(jì)到電源計(jì)數(shù)補(bǔ)丁修復(fù)

    在嵌入式 Linux 系統(tǒng)中,Rockchip CIF(Camera Interface)驅(qū)動(dòng)是攝像頭硬件與上層應(yīng)用的“橋梁”—— 它不僅要實(shí)現(xiàn)設(shè)備初始化、格式協(xié)商、數(shù)據(jù)捕獲等核心功能,還需保障運(yùn)行
    的頭像 發(fā)表于 02-06 16:49 ?4623次閱讀
    Rockchip CIF<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>深度</b><b class='flag-5'>解析</b>:從<b class='flag-5'>架構(gòu)</b>設(shè)計(jì)到電源計(jì)數(shù)補(bǔ)丁修復(fù)

    深入解析Rockchip SFC驅(qū)動(dòng)SPI Flash傳輸流程與問(wèn)題排查指南

    、關(guān)鍵機(jī)制,并給出實(shí)用的問(wèn)題排查方案,助力開(kāi)發(fā)者快速定位問(wèn)題。 一、SFC驅(qū)動(dòng)核心功能概覽 Rockchip SFC驅(qū)動(dòng)Linux內(nèi)核級(jí)SPI內(nèi)存
    的頭像 發(fā)表于 02-04 07:13 ?760次閱讀
    深入<b class='flag-5'>解析</b>Rockchip SFC<b class='flag-5'>驅(qū)動(dòng)</b>:<b class='flag-5'>SPI</b> Flash傳輸流程與問(wèn)題排查指南

    深度解析ES8389/ES8390/音頻芯片Linux驅(qū)動(dòng)Linux6.1內(nèi)核)

    基于 Linux6.1 內(nèi)核,從驅(qū)動(dòng)架構(gòu)、寄存器配置、核心函數(shù)、數(shù)據(jù)流走向四個(gè)維度,完整拆解 ES8389 的 Linux 驅(qū)動(dòng)實(shí)現(xiàn),幫你吃
    的頭像 發(fā)表于 02-02 11:37 ?2259次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>解析</b>ES8389/ES8390/音頻芯片<b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動(dòng)</b>(<b class='flag-5'>Linux</b>6.1內(nèi)核)

    深度解析?ARM?架構(gòu):從劍橋車庫(kù)到未來(lái)計(jì)算

    大家好,我是你們的技術(shù)博主[Linux1024]。 今天我們來(lái)聊聊一個(gè)無(wú)處不在,但又常常被忽略的技術(shù)基石——ARM架構(gòu)。 當(dāng)你拿起手機(jī)、平板,或是打開(kāi)輕薄的筆記本,你手里的設(shè)備大概率就運(yùn)行著ARM
    的頭像 發(fā)表于 01-05 07:09 ?539次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>解析</b>?ARM?<b class='flag-5'>架構(gòu)</b>:從劍橋車庫(kù)到未來(lái)計(jì)算

    瑞芯微(EASY EAI)RV1126B SPI使用

    的應(yīng)用程序中,完全可以不必理會(huì)SPI協(xié)議的詳細(xì)規(guī)定。只需要按照驅(qū)動(dòng)層提供給我們的操作SPI外設(shè)的操作接口函數(shù)就可以像操作linux中其他普通設(shè)備
    的頭像 發(fā)表于 01-03 14:00 ?1905次閱讀
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>SPI</b>使用

    PCA9958:24通道SPI串行總線63 mA/5.5 V恒流LED驅(qū)動(dòng)器的深度解析

    PCA9958:24通道SPI串行總線63 mA/5.5 V恒流LED驅(qū)動(dòng)器的深度解析 在LED驅(qū)動(dòng)
    的頭像 發(fā)表于 12-24 15:05 ?653次閱讀

    【免費(fèi)送書】成為硬核Linux開(kāi)發(fā)者:《Linux 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)(第 2 版)》

    Linux系統(tǒng)的設(shè)備驅(qū)動(dòng)開(kāi)發(fā),一直給人門檻較高的印象,主要因內(nèi)核機(jī)制抽象、需深度理解硬件原理、開(kāi)發(fā)調(diào)試難度大所致。2021年,一本講解驅(qū)動(dòng)開(kāi)
    的頭像 發(fā)表于 11-18 08:06 ?1746次閱讀
    【免費(fèi)送書】成為硬核<b class='flag-5'>Linux</b>開(kāi)發(fā)者:《<b class='flag-5'>Linux</b> <b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)</b>開(kāi)發(fā)(第 2 版)》

    【書籍評(píng)測(cè)活動(dòng)NO.67】成為硬核Linux開(kāi)發(fā)者:《Linux 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)(第 2 版)》

    )。成為硬核Linux開(kāi)發(fā)者Linux系統(tǒng)的設(shè)備驅(qū)動(dòng)開(kāi)發(fā),一直給人門檻較高的印象,主要因內(nèi)核機(jī)制抽象、需深度理解硬件原理、開(kāi)發(fā)調(diào)試難度大所致
    發(fā)表于 11-17 17:52

    GPU架構(gòu)深度解析

    GPU架構(gòu)深度解析從圖形處理到通用計(jì)算的進(jìn)化之路圖形處理單元(GPU),作為現(xiàn)代計(jì)算機(jī)中不可或缺的一部分,已經(jīng)從最初的圖形渲染專用處理器,發(fā)展成為強(qiáng)大的并行計(jì)算引擎,廣泛應(yīng)用于人工智能、科學(xué)計(jì)算
    的頭像 發(fā)表于 05-30 10:36 ?2006次閱讀
    GPU<b class='flag-5'>架構(gòu)</b><b class='flag-5'>深度</b><b class='flag-5'>解析</b>

    能否提供Linux下USB轉(zhuǎn)SPI模式的測(cè)試程序?

    我已在 Linux 上成功配置了 CY7C65211 器件,使其在 USB 轉(zhuǎn) SPI 模式下運(yùn)行。 使用 lsusb 命令,設(shè)備顯示如下:總線 003
    發(fā)表于 05-22 06:16

    基于RK3576開(kāi)發(fā)板的SPI使用說(shuō)明

    ,完全可以不必理會(huì)SPI協(xié)議的詳細(xì)規(guī)定。只需要按照驅(qū)動(dòng)層提供給我們的操作SPI外設(shè)的操作接口函數(shù)就可以像操作linux中其他普通設(shè)備文件那樣
    的頭像 發(fā)表于 05-07 10:31 ?1711次閱讀
    基于RK3576開(kāi)發(fā)板的<b class='flag-5'>SPI</b>使用說(shuō)明

    解鎖未來(lái)汽車電子技術(shù):軟件定義車輛與區(qū)域架構(gòu)深度解析

    解鎖未來(lái)汽車電子技術(shù):軟件定義車輛與區(qū)域架構(gòu)深度解析 ——立即下載白皮書,搶占智能汽車發(fā)展先機(jī) *附件:解鎖未來(lái)汽車電子技術(shù):軟件定義車輛與區(qū)域架構(gòu)
    的頭像 發(fā)表于 04-27 11:58 ?1578次閱讀