首页
/
每日頭條
/
科技
/
如何确定flash和spi連接
如何确定flash和spi連接
更新时间:2026-08-04 03:07:56

如何确定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
推荐阅读
豐田自動駕駛新服務
豐田自動駕駛新服務
豐田自動駕駛新服務?,我來為大家科普一下關于豐田自動駕駛新服務?下面希望有你要的答案,我們一起來看看吧!豐田自動駕駛新服務在CES2019上,豐田研究院展示了全新的ToyotaGuardian自動安全駕駛系統。新系統以一輛雷克薩斯LS為基礎...
2026-08-04
為什麼蘋果的id登錄會閃退
為什麼蘋果的id登錄會閃退
蘋果有時候下載軟件,總是閃退,或者提示輸入輸出id,如下圖今天教大家一個辦法,可以完美解決這個問題。點擊修複應用彈窗提示修複完成即可最後跟大家說句對不起,因為今天小編實在是忙,所以文字有限。希望分享的這些文章能夠幫助各位小夥伴。點一波關注和...
2026-08-04
網絡直播帶貨侵權案例
網絡直播帶貨侵權案例
【TechWeb報道】10月13日消息,北京市海澱區人民法院就搜狐視頻(以下簡稱“原告”)訴北京小蟻互動網絡科技有限公司經營的聚合軟件“電視粉”(以下簡稱“被告”)不正當競争糾紛一案做出一審判決,判決被告賠償原告經濟損失及合理支出共計330...
2026-08-04
物理圖像作圖軟件
物理圖像作圖軟件
今天小編為大家推薦一款物理作圖工具-金排物理畫闆,利用該軟件可以方便地在WORD中直接繪制物理圖形,非常的方便。第一步:下載安裝運行軟件金排物理畫闆運行界面第二步:點擊内部素材按鈕,将各種素材直接添加到WORD窗口即可。内部素材窗口添加方法...
2026-08-04
麥當勞的早餐粥幾點可以點
麥當勞的早餐粥幾點可以點
麥當勞6元早餐的套餐裡事實上隻有四個單品:脆薯餅、黃金饅頭、豆漿和谷物雞肉麥鮮粥這四者兩兩組合就成了三個6元的套餐昨天說了薯餅今天就來說一下谷物雞肉麥鮮粥看起來這個粥的水比較多而且煮的不那麼好,上面是湯下面是米飯快吃完啦這個粥其實在我看來更...
2026-08-04
Copyright 2023-2026 - www.tftnews.com All Rights Reserved