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

如何确定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-04-24
捷安特漢特改裝案例
捷安特漢特改裝案例
現代庫斯途是那種一眼就能看出是家用的車型,它的外觀并不會給人驚喜,但其内飾和座椅的設置卻很适合帶寶寶的家庭出行,在十來萬的MPV車型中具有很高的性價比。為了讓出行更加愉快,車主想要進行一次音響改裝,在泉州海林選擇了詩芬尼音響套餐。改裝車型—...
2026-04-24
局域網一鍵共享工具使用方法
局域網一鍵共享工具使用方法
昨天給大家分享了一款個人網盤工具,今天給大家分享一款局域網共享工具,這款工具是迅雷出的,綠色無需安裝直接運行,很方便,在局域網分享東西非常方便,軟件名字就叫做局域網共享。軟件打開,界面非常簡單明了,沒有廣告,如果要創建共享,打開添加共享,選...
2026-04-24
目前這4部手機值得買
目前這4部手機值得買
今天給大家介紹4款可以放心選的手機,覆蓋中、高、低三檔,可以根據自己的預算選擇!榮耀Magic4榮耀Magic4定位是旗艦機,相比上一代更有誠意,不僅在處理器、屏幕這兩大核心部件上與榮耀Magic4Pro基本一緻,還補上了同價位旗艦機比較罕...
2026-04-24
pvc廣告闆原材料
pvc廣告闆原材料
廣告行業中常見的三種闆材:KT闆、超卡闆、PVC闆,三者到底有哪些區别?在廣告行業中分别有哪些應用?一起跟印小妹看看吧~KT闆KT闆是一種由聚苯乙烯(Polystyrene,縮寫PS)PS顆粒經過發泡生成闆芯,經過表面覆膜壓合而成的一種新型...
2026-04-24
Copyright 2023-2026 - www.tftnews.com All Rights Reserved