在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深度解析Linux SPI總線和設備驅動架構

Q4MP_gh_c472c21 ? 來源:互聯網 ? 作者:佚名 ? 2018-02-07 08:16 ? 次閱讀

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

·CS 片選信號

·SCK 時鐘信號

·MISO 主設備的數據輸入、從設備的數據輸出腳

·MOSI 主設備的數據輸出、從設備的數據輸入腳

硬件結構

通常,負責發出時鐘信號的設備我們稱之為主設備,另一方則作為從設備,下圖是一個SPI系統的硬件連接示例:

深度解析Linux SPI總線和設備驅動架構

圖1.1 SPI硬件結構圖

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

工作時序

按照時鐘信號和數據信號之間的相位關系,SPI有4種工作時序模式:

我們用CPOL表示時鐘信號的初始電平的狀態,CPOL為0表示時鐘信號初始狀態為低電平,為1表示時鐘信號的初始電平是高電平。另外,我們用CPHA來表示在那個時鐘沿采樣數據,CPHA為0表示在首個時鐘變化沿采樣數據,而CPHA為1則表示要在第二個時鐘變化沿來采樣數據。內核用CPOL和CPHA的組合來表示當前SPI需要的工作模式:

·CPOL=0,CPHA=1 模式0

·CPOL=0,CPHA=1 模式1

·CPOL=1,CPHA=0 模式2

·CPOL=1,CPHA=1 模式3

軟件架構

在內核的SPI驅動的軟件架構中,進行了合理的分層和抽象,如下圖所示:

圖2.1 SPI驅動的軟件架構

SPI控制器驅動程序

SPI控制器不用關心設備的具體功能,它只負責把上層協議驅動準備好的數據按SPI總線的時序要求發送給SPI設備,同時把從設備收到的數據返回給上層的協議驅動,因此,內核把SPI控制器的驅動程序獨立出來。SPI控制器驅動負責控制具體的控制器硬件,諸如DMA和中斷操作等等,因為多個上層的協議驅動可能會通過控制器請求數據傳輸操作,所以,SPI控制器驅動同時也要負責對這些請求進行隊列管理,保證先進先出的原則。

SPI通用接口封裝層

為了簡化SPI驅動程序的編程工作,同時也為了降低協議驅動程序和控制器驅動程序的耦合程度,內核把控制器驅動和協議驅動的一些通用操作封裝成標準的接口,加上一些通用的邏輯處理操作,組成了SPI通用接口封裝層。這樣的好處是,對于控制器驅動程序,只要實現標準的接口回調API,并把它注冊到通用接口層即可,無需直接和協議層驅動程序進行交互。而對于協議層驅動來說,只需通過通用接口層提供的API即可完成設備和驅動的注冊,并通過通用接口層的API完成數據的傳輸,無需關注SPI控制器驅動的實現細節。

SPI協議驅動程序

上面我們提到,控制器驅動程序并不清楚和關注設備的具體功能,SPI設備的具體功能是由SPI協議驅動程序完成的,SPI協議驅動程序了解設備的功能和通信數據的協議格式。向下,協議驅動通過通用接口層和控制器交換數據,向上,協議驅動通常會根據設備具體的功能和內核的其它子系統進行交互,例如,和MTD層交互以便把SPI接口的存儲設備實現為某個文件系統,和TTY子系統交互把SPI設備實現為一個TTY設備,和網絡子系統交互以便把一個SPI設備實現為一個網絡設備,等等。當然,如果是一個專有的SPI設備,我們也可以按設備的協議要求,實現自己的專有協議驅動。

SPI通用設備驅動程序

有時候,考慮到連接在SPI控制器上的設備的可變性,在內核沒有配備相應的協議驅動程序,對于這種情況,內核為我們準備了通用的SPI設備驅動程序,該通用設備驅動程序向用戶空間提供了控制SPI控制的控制接口,具體的協議控制和數據傳輸工作交由用戶空間根據具體的設備來完成,在這種方式中,只能采用同步的方式和SPI設備進行通信,所以通常用于一些數據量較少的簡單SPI設備。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11469

    瀏覽量

    212902
  • SPI總線
    +關注

    關注

    4

    文章

    104

    瀏覽量

    27959
  • 設備驅動
    +關注

    關注

    0

    文章

    68

    瀏覽量

    11104

原文標題:Linux SPI總線和設備驅動架構你都懂了嗎?

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    GPU架構深度解析

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

    能否提供Linux下USB轉SPI模式的測試程序?

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

    解鎖未來汽車電子技術:軟件定義車輛與區域架構深度解析

    解鎖未來汽車電子技術:軟件定義車輛與區域架構深度解析 ——立即下載白皮書,搶占智能汽車發展先機 *附件:解鎖未來汽車電子技術:軟件定義車輛與區域架構
    的頭像 發表于 04-27 11:58 ?476次閱讀

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-I2C設備驅動Linux下的I2C驅動簡介

    的通信協議,其中一個設備作為主設備控制總線,并與多個從設備通信。在Linux內核中,I2C驅動
    發表于 04-15 10:39

    飛凌嵌入式ElfBoard ELF 1板卡-I2C設備驅動Linux下的I2C驅動簡介

    的通信協議,其中一個設備作為主設備控制總線,并與多個從設備通信。在Linux內核中,I2C驅動
    發表于 04-15 10:19

    對于一款新的BSP如何添加SPI驅動

    介紹SPI總線由開發,是一種,由四個IO口組成:CS、SCLK、MISO、MOSI;通常用于CPU和外設之間進行通信,常見的SPI總線設備
    的頭像 發表于 02-26 19:00 ?420次閱讀
    對于一款新的BSP如何添加<b class='flag-5'>SPI</b><b class='flag-5'>驅動</b>

    SPI通信總線概述和Verilog實現

    SPI = Serial Peripheral Interface,是串行外圍設備接口,是一種高速,全雙工,同步的通信總線
    的頭像 發表于 02-07 14:28 ?1302次閱讀
    <b class='flag-5'>SPI</b>通信<b class='flag-5'>總線</b>概述和Verilog實現

    迅為RK3568開發板驅動指南Linux中通用SPI設備驅動

    迅為RK3568開發板驅動指南Linux中通用SPI設備驅動
    的頭像 發表于 01-23 11:02 ?2564次閱讀
    迅為RK3568開發板<b class='flag-5'>驅動</b>指南<b class='flag-5'>Linux</b>中通用<b class='flag-5'>SPI</b><b class='flag-5'>設備</b><b class='flag-5'>驅動</b>

    【S32K146 RT-thread】之 SPI驅動適配

    概述RT-Thread對SPI總線驅動,抽象出了spibus的設備驅動,我們基于S32K146的硬件學習spibus
    的頭像 發表于 11-01 08:11 ?1213次閱讀
    【S32K146 RT-thread】之 <b class='flag-5'>SPI</b><b class='flag-5'>驅動</b>適配

    自動售貨機MDB總線周邊設備地址中文解析(三)

    自動售貨機MDB協議中文解析(三)MDB總線周邊設備地址
    發表于 09-09 10:43 ?0次下載

    SPI總線的定義和特點

    SPI總線(Serial Peripheral Interface),全稱為串行外圍設備接口,是由Motorola公司提出并定義的一種同步、串行、高速的通信總線
    的頭像 發表于 09-03 14:05 ?2010次閱讀

    linux系統的設備驅動一般分幾類

    Linux系統的設備驅動是操作系統與硬件設備之間的橋梁,負責實現操作系統與硬件設備之間的通信和控制。Li
    的頭像 發表于 08-30 15:13 ?916次閱讀

    Linux設備驅動程序分類有哪些

    Linux設備驅動程序是操作系統與硬件設備之間的橋梁,負責實現硬件設備與操作系統之間的通信和控制。Lin
    的頭像 發表于 08-30 15:11 ?1128次閱讀

    Linux 驅動開發與應用開發,你知道多少?

    一、Linux驅動開發與應用開發的區別開發層次不同:Linux驅動開發主要是針對硬件設備進行編程,處于操作系統內核層,直接與硬件交互,為上層
    的頭像 發表于 08-30 12:16 ?1468次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>驅動</b>開發與應用開發,你知道多少?

    深度神經網絡(DNN)架構解析與優化策略

    堆疊多個隱藏層,逐步提取和轉化輸入數據的特征,最終實現復雜的預測和分類任務。本文將對DNN的架構進行詳細解析,并探討其優化策略,以期為相關研究和應用提供參考。
    的頭像 發表于 07-09 11:00 ?3645次閱讀
    主站蜘蛛池模板: 爽好舒服快受不了了老师 | 天天色影综合网 | 日本不卡在线观看免费v | 久久九九国产精品怡红院 | 免费能看的黄色网址 | 久久影视免费体验区午夜啪啪 | 高黄视频 | 亚洲一区不卡视频 | 天天爱天天插 | 亚洲一区二区三区免费观看 | 全国男人天堂网 | 久久精品乱子伦免费 | 特黄色一级毛片 | aa亚洲| 色综合综合色综合色综合 | www.av天天 | 国产精品夜夜春夜夜爽久久 | avtt加勒比手机版天堂网 | 一级做α爰片久久毛片 | 亚洲精品在线视频 | 同性同男小说肉黄 | 久婷婷| 激情五月婷婷丁香 | 天天天做天天天天爱天天想 | 色婷婷狠狠 | 激情综合网色播五月 | 爽死你个放荡粗暴小淫视频 | 天堂tv亚洲tv日本tv欧美人tv | 欧美黄色免费网站 | 午夜免费视频 | 国模精品一区二区 | 天天草狠狠干 | 永久免费看毛片 | 我被黑人巨大开嫩苞在线观看 | 色噜噜综合网 | 天天射天天拍 | 人人揉揉香蕉大青草 | 亚洲日韩图片专区第1页 | 激情五月婷婷久久 | 老汉影视永久免费视频 | 求网址你懂的手机在线观看网站 |