首页
/
每日頭條
/
科技
/
如何确定flash和spi連接
如何确定flash和spi連接
更新时间:2026-05-02 09:36:38

如何确定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
推荐阅读
三防平闆電腦适合什麼行業
三防平闆電腦适合什麼行業
手持10寸工業平闆電腦為什麼貴?10寸三防平闆電腦品牌推薦工業平闆電腦常見有2種産品形态:手持類的平闆電腦、固定安裝類的一體機形式電腦,這兩種形态的電腦都應用于工業等非個人、娛樂等領域,與我們常見的家用場景下見到的平闆電腦有所區别,本文就借...
2026-05-02
modscan掃描出來的數據是問号
modscan掃描出來的數據是問号
GOMScan1安裝固定測頭将GOMScan1從箱子中取出之後可以通過滑動底部的滑槽,将測頭安裝在三腳架上。鎖定撥杆,即可将GOMScan1固定在三腳架上。此外,也可以使用任何其他類型帶有标準1/4-20相機接口的三腳架。連接測頭測頭接線的...
2026-05-02
如何把幾個合并成一個
如何把幾個合并成一個
在我們日常娛樂中,有時候我們刷短視頻的時候看到一些視頻是通過剪輯合并成一個的,我們自己也想制作一些好玩的短視頻的時候,要怎麼将兩段或者多段視頻合并在一塊呢?當然這對于經常進行進行視頻剪輯的人來說一點難度都沒有,但對于一些新手還是不知道從何入...
2026-05-02
如何拆超市封口釘
如何拆超市封口釘
經常去超市買!買!買!裡面的散裝食品和生鮮等等都是用袋裝上,再用封口釘封上的,安全不漏的同時卻很難在打開袋子!很多人習慣用指甲把釘子扣開,想想就覺得疼,所以大部分人都直接把袋子撕爛,然後在找個袋子裝起來,很是浪費!今天小編教大家怎麼樣來打開...
2026-05-02
95版本dnf絕望之塔
95版本dnf絕望之塔
期待90版本的到來也期待相應的副本獎勵的變更特别是守護者祭壇跟領主之塔這兩我想很多人家裡都有庫存材料吧但這次的更新貌似有些坑啊,隻是便利了些别的武器啥的都沒變,TX你這不是在搞笑嗎我們要的是新的魔法石輔助啊,不是可有可無的便利啊尼瑪的魔法石...
2026-05-02
Copyright 2023-2026 - www.tftnews.com All Rights Reserved