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

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

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

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

探秘 SPI 總線

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

掃碼添加小助手

加入工程師交流群

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

wKgZO2fiH7aATIdwAAG5L5i7K3I122.png

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

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

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

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

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

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

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

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

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

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

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

發(fā)送寫指令碼 0x02

發(fā)送 3 個字節(jié)的寫入地址

連續(xù)發(fā)送待寫入數(shù)據(jù)流

拉高 CS- 引腳結(jié)束操作

wKgZO2fiH7aAFEk3AAK4pY1Ro4k108.png

雖然圖表看似復(fù)雜,但實現(xiàn)這一功能的代碼卻簡單而貼心:

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 會發(fā)送一條 “讀取 ”命令 (0x03),然后不斷發(fā)送虛字節(jié),同時保存從存儲器芯片收到的響應(yīng):

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芯片通信、對接非易失性閃存控制器、驅(qū)動SD存儲卡,還是操作樂鑫(Espressif)等廠商推出的低成本W(wǎng)iFi+TCP/IP模組,SPI總線協(xié)議棧的核心交互邏輯均高度統(tǒng)一。
值得關(guān)注的是,當(dāng)前主流WiFi模組的應(yīng)用層協(xié)議竟沿用了1980年代Hayes調(diào)制解調(diào)器的指令體系(經(jīng)適度現(xiàn)代化改造)。例如,開發(fā)者仍可通過經(jīng)典"AT"指令集發(fā)起HTTP請求——這種將復(fù)古命令行與現(xiàn)代物聯(lián)網(wǎng)技術(shù)深度融合的設(shè)計,堪稱嵌入式領(lǐng)域的"復(fù)古科技彩蛋"。

原文轉(zhuǎn)載自:https://lcamtuf.substack.com/p/mcu-land-part-2-mysteries-of-the,經(jīng)過翻譯及校驗

注意:如果想第一時間收到 KiCad 內(nèi)容推送,請點擊下方的名片,按關(guān)注,再設(shè)為星標(biāo)。

常用合集匯總:

和 Dr Peter 一起學(xué) KiCad

KiCad 8 探秘合集

KiCad 使用經(jīng)驗分享

KiCad 設(shè)計項目(Made with KiCad)

常見問題與解決方法

KiCad 開發(fā)筆記

插件應(yīng)用

發(fā)布記錄

審核編輯 黃宇

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

    關(guān)注

    39

    文章

    7739

    瀏覽量

    171680
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1885

    瀏覽量

    101262
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    3040

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    探秘MAX16550B:12V總線集成保護IC的卓越之選

    探秘MAX16550A/MAX16550B:12V總線集成保護IC的卓越之選 在電子工程師的日常工作中,對12V電源總線的保護、控制和監(jiān)測是一項至關(guān)重要的任務(wù)。今天,我們就來深入了解一下Maxim
    的頭像 發(fā)表于 02-06 16:45 ?888次閱讀

    使用PicoScope示波器解碼SPI總線信號

    串行外設(shè)接口(SPI, Serial Peripheral Interface)總線最早由 Motorola 開發(fā),用于其微控制器產(chǎn)品。由于其結(jié)構(gòu)簡單、實現(xiàn)直接,隨后被其它廠商廣泛采用,目前已在嵌入式系統(tǒng)領(lǐng)域的各類器件中得到普及。
    的頭像 發(fā)表于 02-04 09:49 ?7190次閱讀
    使用PicoScope示波器解碼<b class='flag-5'>SPI</b><b class='flag-5'>總線</b>信號

    瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南之SPI通訊協(xié)議的物理層和協(xié)議層簡介

    RA芯片的SPI分為簡單SPI和普通SPI,簡單SPI就是SCI模塊(Serial Communications Interface)中的SPI
    的頭像 發(fā)表于 02-04 08:23 ?1.1w次閱讀
    瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南之<b class='flag-5'>SPI</b>通訊協(xié)議的物理層和協(xié)議層簡介

    探秘 SN74CB3T1G125-Q1 單 FET 總線開關(guān):低功耗與高性能的完美融合

    探秘 SN74CB3T1G125-Q1 單 FET 總線開關(guān):低功耗與高性能的完美融合 在電子工程領(lǐng)域,對于高性能、低功耗總線開關(guān)的需求日益增長。Texas Instruments
    的頭像 發(fā)表于 01-14 11:10 ?523次閱讀

    瑞芯微(EASY EAI)RV1126B SPI使用

    1.SPI簡介SPI是串行外設(shè)接口(SerialPeripheralInterface)的縮寫,是Motorola公司推出的一種同步串行接口技術(shù),是一種高速、全雙工、同步的通信總線在用戶空間
    的頭像 發(fā)表于 01-03 14:00 ?1740次閱讀
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>SPI</b>使用

    探秘SN65HVD23x:3.3V CAN總線收發(fā)器的卓越性能與應(yīng)用

    探秘SN65HVD23x:3.3V CAN總線收發(fā)器的卓越性能與應(yīng)用 在工業(yè)自動化、汽車電子等領(lǐng)域,CAN總線憑借其高可靠性、實時性和多主通信能力,成為了數(shù)據(jù)傳輸?shù)闹匾x擇。而SN65HVD23x
    的頭像 發(fā)表于 12-30 17:00 ?807次閱讀

    探秘SN65HVD23x 3.3-V CAN總線收發(fā)器:特性、應(yīng)用與設(shè)計要點

    探秘SN65HVD23x 3.3-V CAN總線收發(fā)器:特性、應(yīng)用與設(shè)計要點 在工業(yè)自動化、汽車電子等領(lǐng)域,CAN總線憑借其高可靠性和抗干擾能力,成為了數(shù)據(jù)傳輸?shù)闹匾绞?。而SN65HVD233
    的頭像 發(fā)表于 12-30 10:40 ?496次閱讀

    深入解析AT25SF2561C/AT25QF2561C:高性能SPI串行閃存的技術(shù)探秘

    深入解析AT25SF2561C/AT25QF2561C:高性能SPI串行閃存的技術(shù)探秘 在電子設(shè)備的世界里,閃存作為數(shù)據(jù)存儲的關(guān)鍵組件,其性能和功能直接影響著設(shè)備的運行效率和穩(wěn)定性。今天,我們將深入
    的頭像 發(fā)表于 12-26 17:45 ?684次閱讀

    PCA9958HN - ARD評估板:24通道SPI總線LED驅(qū)動評估利器

    PCA9958HN - ARD評估板:24通道SPI總線LED驅(qū)動評估利器 在電子設(shè)計領(lǐng)域,LED驅(qū)動的評估和設(shè)計是一個重要的環(huán)節(jié)。NXP的PCA9958HN - ARD評估板為工程師們提供了一個
    的頭像 發(fā)表于 12-24 11:50 ?623次閱讀

    SPI的多機通信

    SPI支持多機通信模式。在該模式下,主機的從機選擇 CS 引腳應(yīng)配置為輸入,與其他主機的總線申請信號相連,用于檢測 SPI 總線是否發(fā)生沖突。如果某一主機的從機選擇 CS 引腳被拉為低
    發(fā)表于 12-08 06:47

    搞不定示波器SPI解碼?這幾步就行!

    SPI總線是為芯片間的數(shù)據(jù)通信而設(shè)計的,因此,在大多數(shù)情況下,由于傳輸數(shù)據(jù)的不同使得信號并非周期性信號。這就要求在對該總線進行測試時,要能準(zhǔn)確地觸發(fā)到數(shù)據(jù)幀的“頭”,并將其“穩(wěn)定”顯示在儀器上,便于
    的頭像 發(fā)表于 11-19 17:32 ?910次閱讀
    搞不定示波器<b class='flag-5'>SPI</b>解碼?這幾步就行!

    深入剖析SPI協(xié)議

    SPI,全稱(Serial Peripheral interface)是由摩托羅拉公司首先定義的協(xié)議,中文名為串型外圍設(shè)備接口。SPI是一種高速全雙工的總線協(xié)議。
    的頭像 發(fā)表于 08-21 15:04 ?4066次閱讀
    深入剖析<b class='flag-5'>SPI</b>協(xié)議

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

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

    探秘EtherCAT總線協(xié)議轉(zhuǎn)換網(wǎng)關(guān)

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

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

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