91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

探秘 SPI 總線

KiCad ? 來源:KiCad ? 作者:KiCad ? 2025-03-25 11:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

詳解串行外設接口及其與存儲器、顯示屏、Wi-Fi模塊和SD卡的通信應用。

wKgZO2fiH7aATIdwAAG5L5i7K3I122.png

在先前文章中,我探討了現代 OLED 顯示屏與裸機微控制器對接的驚人便捷性。我的觀點很簡單:多數嵌入式應用中,采用完整 Linux SoC 平臺(如樹莓派)不僅冗余,反而會引發更多待解難題。

可能會有人反駁:OLED 模塊或許是個特例。比如為 MCU 添加無線連接或外部閃存模塊,工程復雜度必定陡增。

雖無普適答案,但我認為 OLED 相關的練習比大多數練習都要更難。在無需千兆級傳輸速率的場景中,嵌入式外設多采用串行外設接口(SPI):這種極其簡單的全雙工總線輕松實現超 50 Mbps 傳輸速率,且通常規避了 OLED 內存排序邏輯等異常設計。

SPI 的基本原理和操作方式很容易理解:由 MCU 主導通信流程。當需傳輸數據時,MCU 將對應外設的「片選」(CS-)引腳拉低,并向總線 SCK(串行時鐘)線輸出時鐘信號。MCU 通過 MOSI(主出從入)逐位發送數據(通常在時鐘上升沿觸發),外設則通過 MISO(主入從出)并行回應。

wKgZO2fiH7aAfD3tAAB8Hwr_jBg107.jpg 常用(“模式 0”)的 SPI 協議要點

時鐘信號在傳輸單個字節或其整數倍后自動停止。當 MCU 需單向接收數據時,可通過 MOSI 發送虛擬字節以激活總線時鐘,同時讀取 MISO 數據;同理,外設亦可借此機制保持通信同步。

盡管從某種角度來說,為 SPI 總線提供硬件驅動可能并不是絕對必要的,但很多微控制器還是會提供一個針對 SPI 總線的硬件驅動。以 ATmega328P 為例,其 SPI 數據寄存器(SPDR)具備自動收發功能:當向該寄存器寫入字節時,系統自動執行 SPI 總線傳輸,發送數據的同時,該寄存器還會被來自 MISO(Master In Slave Out)的數據替換。傳輸完成時,微控制器就會在 SPI 狀態寄存器(SPSR)中設置“SPI 完成”(SPIF)標志位。

假設我需要將 ATmega328P 與一款 128kB SRAM模塊(型號23LC1024)對接。該模塊僅有 8 個引腳:2 個電源引腳(支持 2.5-5.5V 輸入),4 個基礎 SPI 接口引腳,以及 2 個無需連接的冗余引腳。具體連接時,需將模塊的"串行輸入"(SI)引腳接至 MCU 的 MOSI 線路,"串行輸出"(SO)引腳接至 MISO 線路,SCK(時鐘)線需互聯。最后的"片選"(CS-)引腳可接至 MCU任意輸出線,本例將采用端口B的第 0 位。

完成硬件連接后,需返回微控制器進行配置:通過 DDRB 寄存器的位映射設置 MOSI 和 SCK 引腳為輸出模式,MISO 為輸入模式(如先前所述)。接著在 SPI 配置寄存器(SPCR)中激活兩個標志位:"SPI 使能"(SPE)與"主控模式"(MSTR):

DDRB=0b11101111;SPCR= (1<< SPE) | (1?<< MSTR);
除基本配置外,SPCR 寄存器還支持總線速率分頻設置(如SPI2X、SPR1/SPR0位),但實驗階段默認速率(通常為系統時鐘的1/4)已能滿足需求。完成寄存器初始化后,可通過以下函數實現與存儲控制器的單字節雙向通信:

uint8_tspi_rxtx_byte(uint8_tval){ SPDR = val;while(!(SPSR & (1<< SPIF)));??return?SPDR;}
應用層協議也很簡單,寫入流程如下:

發送寫指令碼 0x02

發送 3 個字節的寫入地址

連續發送待寫入數據流

拉高 CS- 引腳結束操作

wKgZO2fiH7aAFEk3AAK4pY1Ro4k108.png

雖然圖表看似復雜,但實現這一功能的代碼卻簡單而貼心:

voidwrite_ext_ram_bytes(uint32_taddr,constuint8_t* ptr,uint16_tlen){ PORTB &= ~1;/* CS- down */spi_rxtx_byte(0x02);spi_rxtx_byte(addr >>16);spi_rxtx_byte(addr >>8);spi_rxtx_byte(ext_addr);while(len--)spi_rxtx_byte(*(ptr++)); PORTB |=1;/* CS- up */}
讀取存儲器的工作原理大致相同,MCU 會發送一條 “讀取 ”命令 (0x03),然后不斷發送虛字節,同時保存從存儲器芯片收到的響應:

voidread_ext_ram_bytes(uint32_taddr,uint8_t* ptr,uint16_tlen){ PORTB &= ~1;/* -CS down */spi_rxtx_byte(0x03);spi_rxtx_byte(addr >>16);spi_rxtx_byte(addr >>8);spi_rxtx_byte(addr);while(len--) *(ptr++) =spi_rxtx_byte(0); PORTB |=1;/* -CS up */}
無論是與SRAM芯片通信、對接非易失性閃存控制器、驅動SD存儲卡,還是操作樂鑫(Espressif)等廠商推出的低成本WiFi+TCP/IP模組,SPI總線協議棧的核心交互邏輯均高度統一。
值得關注的是,當前主流WiFi模組的應用層協議竟沿用了1980年代Hayes調制解調器的指令體系(經適度現代化改造)。例如,開發者仍可通過經典"AT"指令集發起HTTP請求——這種將復古命令行與現代物聯網技術深度融合的設計,堪稱嵌入式領域的"復古科技彩蛋"。

原文轉載自:https://lcamtuf.substack.com/p/mcu-land-part-2-mysteries-of-the,經過翻譯及校驗

注意:如果想第一時間收到 KiCad 內容推送,請點擊下方的名片,按關注,再設為星標。

常用合集匯總:

和 Dr Peter 一起學 KiCad

KiCad 8 探秘合集

KiCad 使用經驗分享

KiCad 設計項目(Made with KiCad)

常見問題與解決方法

KiCad 開發筆記

插件應用

發布記錄

審核編輯 黃宇

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

    關注

    38

    文章

    7649

    瀏覽量

    167322
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1804

    瀏覽量

    95886
  • 總線
    +關注

    關注

    10

    文章

    2959

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    第十七章 SPI——讀寫串行FLASH

    本章介紹SPI協議,其為高速全雙工通信總線,含物理層、協議層內容,還講解W55MH32的SPI特性、初始化及DMA相關配置。
    的頭像 發表于 06-19 17:06 ?528次閱讀
    第十七章 <b class='flag-5'>SPI</b>——讀寫串行FLASH

    探秘EtherCAT總線協議轉換網關

    EtherCAT總線協議轉換網關介紹 捷米特EtherCAT總線協議網關介紹 EtherCAT協議概述 ? EtherCAT協議 是一種基于以太網的工業實時通信協議,于2003年正式推出。作為工業
    的頭像 發表于 04-09 10:05 ?2381次閱讀
    <b class='flag-5'>探秘</b>EtherCAT<b class='flag-5'>總線</b>協議轉換網關

    探秘Profibus現場總線協議轉換網關模塊

    關于Profibus協議介紹 Profibus(ProcessFieldbus)是一種用于工業自動化領域的現場總線標準,在工廠自動化和過程自動化中發揮著重要作用,以下是關于Profibus協議的詳細
    的頭像 發表于 03-31 10:11 ?332次閱讀
    <b class='flag-5'>探秘</b>Profibus現場<b class='flag-5'>總線</b>協議轉換網關模塊

    看完這篇,SPI其實也很簡單嘛(可下載)

    首先我們來簡單介紹一下SPISPI是串行外設接口(SerialPeripheralInterface)簡單來講就是它一種高速的,全雙工,同步的通信總線被各種總線搞的暈頭轉向的人來說就
    發表于 03-26 14:29 ?2次下載

    探秘新能源行業利器:多串保護板測試儀的革新應用

    探秘新能源行業利器:多串保護板測試儀的革新應用
    的頭像 發表于 03-05 15:09 ?432次閱讀

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

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

    SPI通信總線概述和Verilog實現

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

    I2C總線SPI總線的比較

    在現代電子系統中,微控制器與各種外設之間的通信是必不可少的。I2C和SPI是兩種流行的串行通信協議,它們各自具有獨特的特點和應用場景。 I2C總線 I2C是一種多主機、多從機的同步通信協議,廣泛應用
    的頭像 發表于 01-17 15:08 ?933次閱讀

    LMP91200評估板上的兩組spi可以掛在同一spi總線上嗎?

    評估板上的兩組spi可以掛在同一spi總線上嗎?ADC部分沒有mosi,怎么搞?我把兩個掛在了同一spi上,進行片選,adc只接了miso,在采集ADC數據時,
    發表于 12-31 06:20

    ADS1292R讀取spi總線,有延時會讀取數據出錯,怎么回事?

    ADS1292R讀取spi總線,當有延時讀取數據出錯 (1)ADS1292R 2mS 定時采樣中斷一次,通知主控去讀取數據 (2)當主控去SPI讀取數據有延時,如500uS,讀出來的數據有會出現錯誤
    發表于 11-29 14:46

    通信協議之SPI總線硬件篇

    SPI:Serial Peripheral Interface,串行外圍設備接口。 是由摩托羅拉在20世紀80年代中期開發的同步串行總線接口規范(帶有時鐘信號,通過時鐘極性和時鐘相位來控制采樣
    的頭像 發表于 11-25 17:56 ?2317次閱讀
    通信協議之<b class='flag-5'>SPI</b><b class='flag-5'>總線</b>硬件篇

    請問DAC80508M的SPI總線支持三線模式嗎?如果SPI總線上面只掛了一個DAC80508M,CS腳可以直接接地嗎?

    1. 請問DAC80508M的SPI總線支持三線模式嗎?如果SPI總線上面只掛了一個DAC80508M,CS腳可以直接接地嗎? 1. BRDCAST-DATA[15:0]寄存器無法寫
    發表于 11-20 06:00

    瀚海微SD NAND之SD 協議(37)SPI總線保護和讀寫

    總線傳輸保護 總線上傳輸的每條SD卡命令都受到CRC位的保護。在SPI模式下,SD存儲卡提供了CRC ON模式,使具有可靠數據鏈路的系統能夠排除實現CRC生成和驗證功能所需的硬件或固件。在CRC
    的頭像 發表于 10-09 10:29 ?757次閱讀
    瀚海微SD NAND之SD 協議(37)<b class='flag-5'>SPI</b><b class='flag-5'>總線</b>保護和讀寫

    SPI總線的定義和特點

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

    探秘LED顯示屏背后的秘密:數字信號與數字電路的奇妙世界

    探秘LED顯示屏背后的秘密:數字信號與數字電路的奇妙世界
    的頭像 發表于 08-02 02:36 ?810次閱讀
    主站蜘蛛池模板: 国产乱辈通伦影片在线播放 | 日本不卡1 | 四虎永久在线免费观看 | 李丽莎尤物福利视频 | 四虎国产精品永久在线网址 | 男人操女人的网站 | 午夜视频www | 日本免费在线 | 天天做夜夜做 | 靓装爱神12丝袜在线播放 | 最新sss华人 | 欧美性aaa | 2o18国产大陆天天弄 | 四虎永久在线精品网址 | 老熟女一级毛片 | 夜夜网站 | 亚洲国产网址 | 久久久久久久久综合 | 亚洲第一区第二区 | 国产成人精品怡红院 | 69japanese日本100 69ww免费视频播放器 | xxx日本69| 美女扒开尿口给男人捅 | 色综合久久综合欧美综合图片 | 女人张开双腿让男人桶完整 | 上海一级毛片 | 婷婷色九月 | 狠狠干成人 | 69xxxxx日本护士 | 国产婷婷色一区二区三区 | 免费网站日本永久免费观看 | 狠狠尻| 在线播放国产不卡免费视频 | 手机视频在线播放 | 国产毛片毛片精品天天看 | 插插插叉叉叉 | 亚洲成在人线久久综合 | 美女被免费网站在线视频九色 | 欧洲综合网 | 日本黄色免费大片 | 91大神精品长腿在线观看网站 |