首页
/
每日頭條
/
科技
/
如何确定flash和spi連接
如何确定flash和spi連接
更新时间:2026-06-22 20:53:33

如何确定flash和spi連接?來源:百問網_嵌入式Linux wiki_jz2440 新1期視頻維基教程 (視頻文字版),我來為大家科普一下關于如何确定flash和spi連接?下面希望有你要的答案,我們一起來看看吧!

如何确定flash和spi連接(SPIFLASH編程讀ID)1

如何确定flash和spi連接

來源:百問網_嵌入式Linux wiki_jz2440 新1期視頻維基教程 (視頻文字版)

作者:韋東山

本文字數:1277,閱讀時長:1.5分鐘

這節講解如何使用SPI操作Flash,我們在上節課的代碼上進行修改,添加一個文件 spi_flash.c 和其頭文件 spi_flash.h 。

我們先做一個最簡單的spi操作,讀取Flash的ID, SPIFlashID() 。

Flash的ID有廠家ID和設備ID,分别用pMID和pDID來保存。

根據Flash的芯片手冊 W25Q16DV.pdf 可以知道需要先發出一個指令0x90,再發送24位的地址0,再讀取數據前8位是設備ID,然後是8位設備ID。進行操作前必須要片選SPI Flash,片選完還是釋放SPI Flash:

void SPIFlashReadID(int *pMID, int *pDID) { SPIFlash_Set_CS(0); /* 選中SPI FLASH */ SPISendByte(0x90); SPIFlashSendAddr(0); *pMID = SPIRecvByte(); *pDID = SPIRecvByte(); SPIFlash_Set_CS(1); }

把其中的發送24地址封裝成了一個函數 SPIFlashSendAddr() :

static void SPIFlashSendAddr(unsigned int addr) { SPISendByte(addr >> 16); SPISendByte(addr >> 8); SPISendByte(addr & 0xff); }

依次完成上面的子函數,先是SPI片選,上一節的原理圖可以看到SPI Flash的片選是GPG2:

static void SPIFlash_Set_CS(char val) { if (val) GPGDAT |= (1<<2); else GPGDAT &= ~(1<<2); }

SPISendByte() 和前面OLED的是一樣的,就不用寫了,因此就隻剩下 SPIRecvByte() ,放在 gpio_spi.c 裡面實現:

unsigned char SPIRecvByte(void) { int i; unsigned char val = 0; for (i = 0; i < 8; i ) { val <<= 1; SPI_Set_CLK(0); if (SPI_Get_DI()) val |= 1; SPI_Set_CLK(1); } return val; }

在每個時鐘周期讀取DI引腳上的值,對于SOC就是MISO引腳:

static char SPI_Get_DI(void) { if (GPGDAT & (1<<5)) return 1; else return 0; }

至此,讀取Flash的ID基本實現,最後在主函數裡調用打印,分别在串口和OLED上顯示:

SPIFlashReadID(&mid, &pid); printf("SPI Flash : MID = 0xx, PID = 0xx\n\r", mid, pid); sprintf(str, "SPI : x, x", mid, pid); OLEDPrint(4,0,str);

Makefile記得加上新生成的 spi_flash.o 。

「新品首發」STM32MP157開發闆火爆預售!首批僅300套

Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
33歲男子緻肺栓塞
33歲男子緻肺栓塞
在日常工作和生活中,很多人都習慣久坐。長時間保持一個姿勢,似乎很舒适,但這樣其實容易引發血栓。10月25日,22歲的段宇(化名)剛從陸軍軍醫大學新橋醫院出院回家,十多天前,他因為長期“宅”在家裡久坐玩手機緻肺栓塞引發生命危險,幸虧搶救及時才...
2026-06-22
王者榮耀19賽季角色可以遷移嗎
王者榮耀19賽季角色可以遷移嗎
在手遊市場,無論是數據榜單表現還是話題熱度,《王者榮耀》都處于領跑的姿态。究其原因,能滿足用戶訴求的設計很大程度上是它步入第5個年頭仍長生不老的根本。最近,《王者榮耀》又基于用戶訴求,經過技術打磨展開了一次新的叠代。從現在起,你也可以跨系統...
2026-06-22
籃球比賽的規則和方法
籃球比賽的規則和方法
今天抽時間把籃球規則說明一下,讓大家打球的時候明白這些規則,以免出現不必要的失誤。籃球比賽由兩個隊參加,每隊出場5名隊員。每隊目标是在對方球籃得分,并阻止對方隊在本方球籃得分。1、比賽方法每隊首發,替補球員最多七人。比賽分上下半場,每半場各...
2026-06-22
快手的短怎麼上熱門推廣
快手的短怎麼上熱門推廣
拍好的快手短視頻到底該什麼時候發布才更容易上熱門呢?本次我們将會為大家解密,助力您的優質視頻成為爆款~一、官方統計根據快手後台數據統計,快手APP确實每天有兩個流量高峰,分别在中午的11:00~13:00,以及晚上的20:00~22:00。...
2026-06-22
迷你世界超級厲害的黑科技
迷你世界超級厲害的黑科技
大家好,我是你們的好朋友小雯。在迷你世界中,有許多新穎的事物發生,比如一些從未見過的人物皮膚,常見有玩家身穿各式各樣的皮膚,蠟筆小新、幻音等皮膚;比如常出現有些怪異的生物,本是乖巧、呆萌的生物,總是會被玩家們制作出颠覆常人的想法;比如一些你...
2026-06-22
Copyright 2023-2026 - www.tftnews.com All Rights Reserved