STM32學習記錄--Day4

今天了解了一下SPI總線:

1.SPI內部結構


??🔌 SPI 四大核心引腳功能詳解??

1. ??MOSI (Master Output Slave Input)??
  • ??功能??:??主機輸出數據線??
  • ??工作流程??:
    • 主機內部發送數據寄存器 (TxDR) 的數據 → 移位寄存器 → ??數據控制單元?? → 通過MOSI引腳輸出至從機。
  • ??關鍵控制??:
    • 數據控制單元受 ??“順序”?? 設置(MSB/LSB優先)和 ??“極性/相位”?? 配置(時鐘邊沿采樣)影響。
  • ??用戶代碼關聯??:
    // 用戶代碼中MOSI配置(PB5)
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; // 復用推挽輸出

2. ??MISO (Master Input Slave Output)??
  • ??功能??:??主機輸入數據線??
  • ??工作流程??:
    • 從機返回的數據 → 通過MISO引腳 → ??接收數據寄存器 (RxDR)??。
  • ??狀態監測??:
    • ??RxNE (Receive Not Empty)?? 標志:當 RxDR 收到新數據時置1,觸發中斷或供CPU讀取。
  • ??用戶代碼關聯??:
    // 用戶代碼中MISO配置(PB4)
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;  // 輸入上拉

3. ??SCK (Serial Clock)??
  • ??功能??:??主機輸出的同步時鐘??
  • ??控制單元??:
    • ??時鐘控制模塊?? 生成SCK信號,受以下參數控制:
      • ??波特率??:時鐘頻率(由PCLK分頻)。
      • ??極性 (CPOL)??:
        • CPOL=0:空閑時SCK為低電平
        • CPOL=1:空閑時SCK為高電平
      • ??相位 (CPHA)??:
        • CPHA=0:數據在時鐘??第一個邊沿??采樣
        • CPHA=1:數據在時鐘??第二個邊沿??采樣
  • ??用戶代碼關聯??:
    SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low;  // CPOL=0
    SPI_InitStruct.SPI_CPHA = SPI_CPHA_1Edge; // CPHA=0

4. ??NSS (Slave Select)?
?
  • ??功能??:??從機片選信號??(低電平有效)
  • ??工作模式??:
    • ??硬件模式??:
      • 由SPI控制器自動控制(圖示中 ??“內部NSS”??)。
    • ??軟件模式??:
      • 用戶通過GPIO手動控制(圖示中 ??“軟/硬NSS”?? 選擇)。
  • ??關鍵場景??:
    • 傳輸開始前:拉低NSS選中從機。
    • 傳輸結束后:拉高NSS釋放從機。
  • ??用戶代碼關聯??:
    // 用戶代碼中使用PA0模擬NSS(軟件控制)
    GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET); // 選中從機(W25Q64)
    SPI_Cmd(SPI1, ENABLE);  // 啟動SPI傳輸

?? ??輔助功能模塊關聯引腳??

  1. ??中斷系統??:

    • ??TxE (Transmit Empty)??:發送寄存器空 → 可寫入新數據。
    • ??RxNE (Receive Not Empty)??:接收寄存器非空 → 可讀取數據。
    • ??OVR (Overrun)??:數據覆蓋錯誤 → 需清除標志。
    // 用戶代碼中輪詢標志位
    while(SPI_I2S_GetFlagStatus(SPIx, SPI_I2S_FLAG_TXE) == RESET); // 等待TxE
  2. ??通信方向選擇??:

    • 支持多模式(圖中紅框區域):
      • ??2線全雙工??:同時使用MOSI和MISO(標準SPI)。
      • ??2線只收??:僅用MISO(從機到主機)。
      • ??單線模式??:半雙工通信(共用單數據線)。
    SPI_InitStruct.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  3. ??主從控制??:

    • ??主/從模式??:決定SCK由誰生成(主機:SCK輸出;從機:SCK輸入)。
    SPI_InitStruct.SPI_Mode = SPI_Mode_Master; // 主機模式

📝 ??引腳功能總結表??

??引腳????方向????核心功能????關鍵關聯模塊??
??MOSI??主機→從機主機輸出數據發送數據寄存器 → 數據控制單元
??MISO??從機→主機主機輸入數據接收數據寄存器 → RxNE中斷
??SCK??主機→從機提供同步時鐘時鐘控制(CPOL/CPHA)
??NSS??主機→從機從機選擇控制(低有效)軟/硬NSS選擇 → 內部控制邏輯

💡 深入理解引腳配置

此處用的PA15上電后默認功能不是普通IO,所以可以改用其它IO口,或重映射。

2.SPI總線電路結構

3.SPI總線通信流程

3.1收發流程

數據傳輸順序有兩種:

3.2時鐘模式

極性與相位:

當SCK開始與結束的電平為低時,極性為低;當SCK開始與結束的電平為高時,極性為高

  • 相位=第1邊沿采集(CPHA=0):數據在SCK的第一個邊沿(即CPOL變化的第一個邊沿)被采樣。
  • 相位=第2邊沿采集(CPHA=1):數據在SCK的第二個邊沿(即CPOL變化的第二個邊沿)被采樣。

3.3通信方向

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917017.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917017.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917017.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【網絡安全】等級保護2.0解決方案

等保2.0(網絡安全等級保護2.0)是我國網絡安全領域的基礎性制度,在1.0版本基礎上擴展了云計算、大數據、物聯網等新興領域,形成覆蓋全場景的安全防護框架。其核心是按信息系統重要程度劃分等級(1-5級)&#…

TypeScript 基礎介紹(二)

引言:從基礎到結構化類型 在《TypeScript 基礎介紹(一)》TypeScript基礎介紹(一)-CSDN博客中,我們探討了 TypeScript 的類型系統基礎、聯合類型、類型斷言和類型守衛等核心特性。這些內容解決了 JavaScript…

【科研繪圖系列】R語言繪制線性相關性

文章目錄 介紹 加載R包 數據下載 導入數據 數據預處理 畫圖 系統信息 參考 介紹 【科研繪圖系列】R語言繪制線性相關性 加載R包 library(tidyverse) library(ggplot2) library(ggsignif) library(RColorBrewer) library(dplyr) library(reshape2

FastAPI的請求-響應周期為何需要后臺任務分離?

url: /posts/c7b54d6b3b6b5041654e69e5610bf3b9/ title: FastAPI的請求-響應周期為何需要后臺任務分離? date: 2025-07-31T06:11:25+08:00 lastmod: 2025-07-31T06:11:25+08:00 author: cmdragon summary: FastAPI 的請求-響應周期遵循 ASGI 協議,類似于餐廳點餐流程。同步處…

多種錄音筆錄音芯片方案推薦

多種錄音筆錄音芯片方案推薦一、引言隨著信息技術的飛速發展,錄音筆作為一種重要的音頻記錄設備,在會議記錄、采訪、學習等眾多場景中得到廣泛應用。其核心的錄音芯片方案直接影響錄音質量、功能特性以及產品成本。唯創知音作為音頻芯片領域的知名廠商&a…

Linux系統編程Day2-- Linux常用操作

一、Linux 基本命令概覽以下是一些常用的Linux命令操作,后續我們會對其每個單獨如何使用進行講解。操作類型常用命令示例文件/目錄操作ls, cd, cp, mv, rm, mkdir, rmdir查看文件內容cat, less, more, head, tail查找操作find, grep, locate, which權限管理chmod, c…

cs336 assignment1 作業環境配置

代碼結構 所有的代碼寫到cs336_basics/* 下面,在adapters.py里調用自己的.py,通過所有的test。 作業資料參考 karpathy視頻倉庫: 視頻 github倉庫 測試項目運行環境 下載uv uv官網倉庫 使用命令: powershell -ExecutionPoli…

YOLOv11來了,使用YOLOv11訓練自己的數據集和推理(附YOLOv11網絡結構圖)

文章目錄前言一、YOLOv11代碼下載地址1.YOLOv11模型結構圖二、數據集準備1.數據集標注軟件2.voc數據集格式轉換3.數據集劃分4.修改yolo的訓練配置文件三、YOLO環境配置教程1.pytorch環境安裝2.其他依賴安裝四、YOLOv11訓練五、YOLOv11推理六、解決訓練過程中斷怎么繼續上次訓練…

20250731在榮品的PRO-RK3566開發板的Android13下跑通敦泰的FT8206觸控芯片

20250731在榮品的PRO-RK3566開發板的Android13下跑通敦泰的FT8206觸控芯片 2025/7/31 17:48緣起:本文前置條件:已經解決FT8206和PRO-RK3566的硬件連接。 通過i2cdect可以掃描到i2c從機地址:0x38。【8位地址為0x70】緣起:本文只分析…

異常檢測:算法分類及經典模型概覽

第一部分:異常檢測的核心概念 在深入算法細節之前,理解異常檢測的“語境”至關重要。 1. 什么是異常檢測? 異常檢測(Anomaly Detection 或 Outlier Detection)旨在通過數據挖掘技術,識別出數據集中與大多數…

技術干貨 | 矢網DTF測量技術:透視線纜、天線與波導內部缺陷的“射頻X光”(二)

無線通信、雷達等領域中,射頻組件與傳輸系統的性能至關重要,其內部微小損傷易導致信號問題甚至系統失效。傳統測試無法精確定位故障點,排查困難。DTF測量,矢網賦予的“透視眼”!它能穿透“黑箱”,精確定位線…

【[CSP-J 2022] 上升點列】

題目 [CSP-J 2022] 上升點列 題目描述 在一個二維平面內,給定 n 個整數點 (x i ,y i? ),此外你還可以自由添加 k 個整數點。 你在自由添加 k 個點后,還需要從 nk 個點中選出若干個整數點并組成一個序列,使得序列中任意相鄰兩點間…

Kong API Gateway的十年進化史

一、技術基因的誕生(2007-2015) 2007年,三位意大利開發者Augusto Marietti、Marco Palladino和Michele Orru在博洛尼亞的一個小車庫中創立了Mashape公司。 最初他們開發了一個名為Mashup的API聚合平臺,試圖通過整合第三方API為開發…

藍牙設備配對:從機發現主機全過程

在藍牙 paging 過程中,從設備(Slave)是通過特定的掃描機制和跳頻方式來發現主設備發送的 ID 包的,具體過程如下:從設備處于特定掃描模式:從設備需要處于 Page Scan 模式,才能夠接收主設備發送的…

聚觀早報 | 三星獲特斯拉AI芯片訂單;小米16首發成安卓最強SOC;iPhone 17 Pro支持8倍光學變焦

聚觀早報每日整理最值得關注的行業重點事件,幫助大家及時了解最新行業動態,每日讀報,就讀聚觀365資訊簡報。整理丨肖羽7月29日消息三星獲特斯拉AI芯片訂單小米16首發成安卓最強SOCiPhone 17 Pro支持8倍光學變焦寧德時代滑板底盤公司啟動首輪融…

Gemini Fullstack LangGraph Quickstart(DeepSeek+Tavily版本)

文章目錄參考資料說明Gemini Fullstack LangGraph QuickstartDeepSeek Fullstack LangGraph Quickstart項目部署完整源碼地址后端部署前端部署參考資料 DeepResearch應用開發實戰網盤課件資料 說明 本文僅供學習和交流使用,感謝賦范社區相關老師的辛苦付出&#…

鋼筋計數誤差↓78%!陌訊多模態融合算法在建筑地產AI質檢的落地實踐

?摘要??針對建筑地產行業鋼筋驗收場景的高誤差痛點,本文解析陌訊視覺算法的多模態融合架構如何實現毫米級精度目標檢測。實測顯示:在Jetson Xavier NX邊緣設備上,鋼筋計數mAP0.5達??92.4%??,較基線模型提升28個百分點&…

負載均衡 LoadBalance

問題引入 我們一個服務可能會進行多機部署,也就說多臺服務器組成的集群共同對外提供一致的服務,那么我們的微服務的代碼就需要拷貝多份,部署到不同的機器上。 我們使用 IDEA 來開啟多個相同的服務 這里以 product-service 為例:…

13. 若依框架中的 Sensitive 敏感字段過濾

若依框架中有Sensitive注解,但代碼中并未使用,但該注解的實現還是比較值的學習的。該注解是一個運行時注解該注解只能應用在字段上JacksonAnnotationsInside 表示當使用Jackson序列化時,Jackson會自動識別該注解下的其他Jackson相關注解&…

git本地倉庫,工作區和暫存區的知識

一 git工作原理 Git 的工作原理基于分布式版本控制,通過管理文件的不同版本狀態,實現代碼的追蹤、協作和回溯。除了常見的工作區(Working Directory) 和暫存區(Staging Area/Index),核心還包括本…