STM32之SPI——外部FLASH和RFID

一、SPI協議的原理與應用

  • 基本概念

串行外設接口SPI(Serial Peripheral Interface)是由美國摩托羅拉公司最先推出的一種同步串行傳輸規范,也是一種單片機外設芯片串行外設擴展接口。該接口是一種高速、全雙工、同步的通信總線,并且在芯片的管腳上只占用四根線,節約了芯片的管腳,為PCB的布局上節省空間。

  • 應用場景

SPI接口主要應用在訪問高速設備,如spi flash、2.4G無線傳輸、lcd設備顯示、電阻屏觸控IC等。

  1. 2.4GHZ無線傳輸

  1. LCD顯示設備

  1. 墨水屏設備

  1. 串行Flash存儲IC

  1. RFID射頻模塊

  • 內部結構

SPI接口采用主從結構,SPI由一個主設備和一個或多個從設備組成,主設備啟動一個與從設備的同步通訊,從而完成數據的交換。SPI接口由MOSI(串行數據輸出)、MISO(串行數據輸入)、SCLK(串行移位時鐘)、/SS(從設備使能信號,/SS亦可為NSS)四種信號構成。

  • 工作模式

由于SPI接口采用同步通信,必須在SCK時鐘線生成的脈沖信號期間完成數據的傳輸,對于SPI接口而言采用的是邊沿同步的方式,所以就需要清楚時鐘線SCK到底是哪個邊沿進行同步。

MCU作為主機可以選擇四種工作模式中的任何一種,但是選擇工作模式的時候要以從機支持的模式為主,從機支持的工作模式必須要閱讀從機的數據手冊(大多數都是支持模式0)。

  1. 串行Flash存儲IC的原理與應用
  • 基本概念

由于STM32F407ZET6這顆MCU內部只有512KB的Flash閃存容量,這512KB需要用于存儲固件,剩余的空間可能不足以讓用戶使用了,所以需要額外的拓展存儲IC,在GEC-M4開發板中集成了一顆串行Flash芯片,型號是W25Q128,容量是128Mbit,該存儲IC采用SPI接口進行通信。

  • 內存分布

W25Q128是容量為128Mbit的SPI接口NOR Flash的器件,內部是按照Page、Sector、Block的結構來劃分的,一個Page為256個Byte,一個Sector為16個Page也就是4KB,一個Block為16個Sector也就是64KB。相較于EEPROM而言,SPI Flash的存儲空間更大,存取速度更快,廣泛應用于嵌入式系統中數據、代碼的固化。

  • 引腳說明

  • 工作模式

  • 指令分析

  • 程序設計

  1. 讀取廠商/設備ID

  1. 寫使能

  1. 讀狀態寄存器

  1. 寫失能

  1. 擦除扇區

  1. 讀數據

  1. 頁編程

  • 驗證結果

  • 時序模擬

如果想要提高程序的實時性以及程序的可移植性,則可以選擇使用MCU的某些IO口生成SPI通信所需要的時序,從而擺脫硬件資源的限制。

用戶只需要找到4個IO口作為SPI通信的SCK、MISO、MOSI、CS,可以設置SCK引腳為輸出模式、MISO引腳為輸入模式、MOSI引腳為輸出模式、CS片選為輸出模式即可。

作業:把模式3的時序設計出來,并進行測試,要求把IO口模擬模式0和模式3的函數背下來!

三、RFID射頻模塊的原理與應用

  • 基本概念

RFID技術也簡稱為射頻識別技術,是20世紀40年代開始出現的一種自動識別技術。RFID通過無線射頻信號獲取物體的相關數據,并對物體加以識別,RFID技術不需要和被識別物體進行直接接觸就可以完成物體信息的處理,也不需要人工干預,可以實現無接觸式信息傳遞,能應用在各種較為惡劣的環境中。所以說RFID技術是一種快速、高效的采集和處理物體信息的自動識別技術。

隨著計算機和互聯網的發展,物聯網的概念也被提出,而物聯網想要實現的是“萬物互聯”物聯網的核心思想是為全球每一個物品提供唯一的電子標簽,而RFID可以實現無接觸式的信息傳遞達到識別物體的目的。所以RFID技術也是實現物聯網的關鍵技術之一。

  • 結構組成

RFID技術的實現離不開軟件與硬件的支持,硬件一般包含應答器、天線和閱讀器。軟件一般包含數據管理系統。

電子標簽也叫作應答器,一般是由集成電路芯片和內置天線組成的,芯片用來存儲物體相關數據,內置天線用來收發無線電波。電子標簽一般附著在物體上用來標識物體,每個標簽具有唯一的電子編碼。電子標簽的種類有很多,比如低頻標簽、高頻標簽等,并且電子標簽的樣式也有多種,比如條型、卡片型、環型、紐扣型等。

而對于識讀器而言,也稱為閱讀器或者讀寫器,是對電子標簽信息讀取和寫入的設備。閱讀器可以和計算機進行聯網,作用一般是作為數據交換的媒介,閱讀器一般由射頻模塊、控制模塊和天線組成。也可以把閱讀器理解為一個特殊的無線通信模塊,它可以和電子標簽通過天線進行無線通信。閱讀器可以工作在一個或多個工作頻段,也可以讀寫一種或多種電子標簽,閱讀器的種類有很多,比如手持式的、固定式的,使用起來非常方便。

  • 識別原理

  • 通信接口

本次使用的RFID模塊采用的驅動IC型號是MFRC522,對于該芯片支持多種通信接口,比如支持UART、SPI、IIC.....,本次使用SPI接口進行通信。

  • 工作模式

可以知道,MFRC522和MCU使用SPI接口通信的時候,采用的SPI工作模式是模式0,所以主機就需要使用模式0。

  • 硬件接線

由于打算采用IO口模擬SPI時序的方案實現RFID模塊的控制,所以從MCU中挑選4個引腳來作為SPI通信引腳。

  • 程序移植
  1. 獲取源碼

  1. 分析源碼

  1. 拷貝文件

  1. 添加文件

  1. 修改源碼

提示:一般移植傳感器的程序時,只需要修改底層代碼(和IO口相關的、和時序相關的),不需要修改應用層代碼。

  1. 編譯源碼
  1. 下載源碼
  1. 查看效果
  • 驗證結果

作業:根據SPI的時序完成RFID模塊的程序移植,并實現卡的選卡、讀卡、寫卡的相關功能。

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

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

相關文章

51c視覺~3D~合集3

我自己的原文哦~ https://blog.51cto.com/whaosoft/13954440 #SceneTracker 在4D時空中追蹤萬物!國防科大提出首個長時場景流估計方法 本篇分享 TPAMI 2025 論文??SceneTracker: Long-term Scene Flow Estimation Network??,國防科大提出首…

cf2059B

原題鏈接:https://codeforces.com/contest/2059/problem/B 題目背景: 將一個長度為 n 的數組 a 劃分為 k 個數組,再將所有偶數索引的數組合并成 b 數組,定義代價為 的最小索引 i ,可得到的最小代價為多少。 思路&am…

爬蟲到智能數據分析:Bright Data × Kimi 智能洞察亞馬遜電商產品銷售潛力

前言 電商數據分析在現代商業中具有重要的戰略價值,通過對消費者行為、銷售趨勢、商品價格、庫存等數據的深入分析,企業能夠獲得對市場動態的精準洞察,優化運營決策,預測市場趨勢、優化廣告投放、提升供應鏈效率,并通…

從解決一個分享圖片生成的歷史bug出發,詳解LayoutInflater和View.post的工作原理

問題背景 最近在項目中遇到一個問題:在檔口分享功能中,需要動態生成一個分享圖片。代碼是這樣寫的: // 項目中的代碼 val shareView LayoutInflater.from(thisStallMainActivityV1).inflate(R.layout.share_header_stall_main_layout, nul…

2.linux目錄切換命令:cd與pwd以及路徑與路徑符

cd 切換當前工作目錄 cd [linux路徑0] cd沒有選項,直接執行,只有參數.如果沒有參數,表示回到用戶的home目錄 pwd 無參,無選項,直接打印當前工作目錄的絕對路徑 路徑 相對路徑 以當前目錄為起點,路徑描述無需使用/開頭 # cd Desktop 絕對路徑 路徑描述需要以/開頭 cd…

摩爾條紋 原理以及matlab 實現

一、簡介 莫爾條紋的形成原理-CSDN博客 “莫爾”一詞源于法文“Moire”,其原本的含義是“波動”或者“起波紋的”。早在古代時期,人們便偶然發現,當把兩塊薄的絲綢織物相互疊加放置時,能夠看到一種呈現不規則形態的花紋。此后&a…

【海康USB相機被HALCON助手連接過后,MVS顯示無法連接故障。】

在Halcon里使用助手調用海康USB相機時,如果這個界面點擊了【是】 那么恭喜你,相機只能被HALCON調用使用,使用MVS或者海康開發庫,將查找不到相機 解決方式: 右鍵桌面【此電腦】圖標 ->選擇【管理】 ->選擇【設備…

數據治理是什么意思?數據治理平臺有哪些?

目錄 一、數據治理的概念 1. 數據治理的定義 2. 數據治理的目標 二、數據治理的實施流程 1. 規劃階段 2. 評估階段 3. 執行階段 4. 監控與評估階段 三、常見的數據治理平臺 1. FineDataLink 2. IBM InfoSphere Information Governance Catalog 四、總結 隨著企業業…

高效工具-tldr

喜歡使用命令操作的小伙伴,肯定會遇到一個問題,查看命令如何使用時,會列出一堆,特別是英文,看的直發懵。前段時間我也是研究git命令,也遇到了類似的問題。好在有大數據,幫我普及相關的知識。 在…

安卓添加設備節點權限和selinux訪問權限

# 1 修改設備節點權限及配置屬性設置節點值 ## 1.1 修改設備節點權限 ### 1.1.1 不會手動卸載的節點 在system/core/rootdir/init.rc中添加節點權限 在on boot下面添加 chown system system /sys/kernel/usb/host chmod 0664 /sys/kernel/usb/host ### 1.1.2 支持熱插拔的…

ssm學習筆記(尚硅谷) day1

創建新項目 maven的聚合 1. 標記父類項目 標簽<packaging>pom</packaging>表示將該項目標記為父類項目&#xff0c;必須添加。 以下是標簽<packing>的常見取值 groupId在pom.xml中&#xff0c;可以從pom.xml直接修改。 2. 通過<modules>添加子項目…

基于Java,SpringBoot,Vue,UniAPP醫院預約掛號買藥就診病例微信小程序系統設計

摘要 隨著醫療信息化的不斷推進以及“互聯網醫療”模式的廣泛普及&#xff0c;傳統醫院掛號流程中存在的排隊時間長、資源分配不均等問題日益凸顯&#xff0c;急需通過數字化手段加以解決。本研究設計并實現了一套基于Java、SpringBoot、Vue與UniAPP技術棧的醫院預約掛號微信小…

Axure項目實戰:運輸統計頁引入echarts實現高保真設計(JS代碼ctrl+c ctrl+v懂得來)

親愛的小伙伴,在您瀏覽之前,煩請關注一下,在此深表感謝!如有幫助請訂閱專欄! Axure產品經理精品視頻課已登錄CSDN可點擊學習https://edu.csdn.net/course/detail/40420 案例視頻: 數據統計引入echarts示例演示 課程主題:運輸統計頁引入echarts實現高保真設計 主要內容…

python打卡day39

圖像數據與顯存 知識點回顧 圖像數據的格式&#xff1a;灰度和彩色數據模型的定義顯存占用的4種地方 模型參數梯度參數優化器參數數據批量所占顯存神經元輸出中間狀態 batchisize和訓練的關系 作業&#xff1a;今日代碼較少&#xff0c;理解內容即可 在 PyTorch 中&#xff0c;…

15.1 【基礎項目】使用 HTML、CSS 和 TypeScript 構建的簡單計數器應用

一個簡單的計數器應用是學習如何集成 HTML、CSS 和 TypeScript 的絕佳項目。該應用允許用戶對計數值進行增加、減少和重置&#xff0c;展示了 TypeScript 中基本的 DOM 操作和事件處理。 我們將構建的內容 我們將創建一個具有以下功能的計數器應用&#xff1a; 增加計數值減…

RT-Thread源碼閱讀(3)——內核對象管理

_object_container對象容器數組 在RT-Thread操作系統中&#xff0c;_object_container數組的作用是按類型分類管理內核對象&#xff0c;提供高效的類型檢查、資源管理和統計功能 struct rt_list_node {struct rt_list_node *next; /**< point to…

《智能醫學》征稿通知:7天可見刊,專科及以上可發表

香港科學出版社(Hong Kong Scientific Publishers Journals)是一家全球獨立高質量的學術出版機構&#xff0c;遵循國際開放獲取的出版(OA)原則。現已與科檢易學術攜手共同征集高質量文章。目前可出版來自高等學校、科研院所和企業的先進科技成果。包括理、工、農、醫、經、管、…

如何利用categraf的exec插件實現對Linux主機系統用戶及密碼有效期進行監控及告警?

需求描述 Categraf作為夜鶯監控平臺的數據采集工具&#xff0c;為了保障Linux主機的安全&#xff0c;需要實現對系統用戶密碼有效期的監控&#xff0c;并在密碼即將到期時及時告警&#xff0c;以提醒運維人員更改密碼。本章將詳細介紹如何利用Categraf的exec插件來實現這一功能…

RV1126-OPENCV 交叉編譯

一.下載opencv-3.4.16.zip到自己想裝的目錄下 二.解壓并且打開 opencv 目錄 先用 unzip opencv-3.4.16.zip 來解壓 opencv 的壓縮包&#xff0c;并且進入 opencv 目錄(cd opencv-3.4.16) 三. 修改 opencv 的 cmake 腳本的內容 先 cd platforms/linux 然后修改 arm-gnueabi.to…