首页
/
每日頭條
/
科技
/
如何确定flash和spi連接
如何确定flash和spi連接
更新时间:2026-10-13 16:58:14

如何确定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
推荐阅读
榮耀手機忘記鎖屏密碼會被停用嗎
榮耀手機忘記鎖屏密碼會被停用嗎
注:問題都是來源于“興趣部落”數碼愛好者發的帖子,我并沒有黑什麼手機,請知悉。手機行業已經蜂擁而起,以至于導緻很多人都開始慢慢追求一部很完美的手機當然這一切還是要有口袋裡有多少資金來決定,但是随着手機行業的發展,好多愛好者開始對自己的隐私有...
2026-10-13
蘋果現在最新芯片
蘋果現在最新芯片
就在今天淩晨蘋果公司又又又一次地舉行新品發布會,這一次發布的是MAC系列電腦。并且首次亮相的是全球首款5nm制程的電腦芯片,分别預裝在這三款電腦當中,那麼到底哪款更适合入手呢?此次發布會最先亮相的5nm制程的M1處理器,但從發布會的現場視頻...
2026-10-13
硬盤和内存是什麼
硬盤和内存是什麼
内存是電腦存儲器的重要部分,用來存儲程序和數據的部件。對于電腦來說,有了存儲器才有記憶功能,才能保證電腦正常工作平時使用的程序,如windows操作系統,打字軟件,遊戲軟件等等,一般都是安裝在硬盤等外部存儲器上。但需要使用這些軟件的時候,必...
2026-10-13
手機有屏蔽更新怎麼還可以更新
手機有屏蔽更新怎麼還可以更新
現在的手機經常會出現更新提示,這讓很多用戶都會很困惑,到底應不應該更新手機系統呢?這個問題我們今天一起來讨論一下,來感受下現在的手機系統更新的理由。手機廠商更新手機系統的主要理由——1.為了不斷的提升用戶使用手機的體驗。我們知道現在的手機用...
2026-10-13
手機怎麼收到殘疾證一卡通短信息
手機怎麼收到殘疾證一卡通短信息
點擊上方北京殘聯訂閱我吧殘疾人一卡通好消息!殘疾人朋友一卡通延期激活可以不出家門、不用電腦直接在手機APP上完成啦!這是腫麼肥四?為方便殘疾人持卡享受服務北京市殘聯與市政交通一卡通合作在“北京一卡通”APP上提供了手機延期激活服務功能呢!但...
2026-10-13
Copyright 2023-2026 - www.tftnews.com All Rights Reserved