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

如何确定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-06-29
安裝空調要注意防火方法
安裝空調要注意防火方法
安裝空調要注意防火方法安裝空調要注意防火方法随着人民生活水平的提高,空調越不越多地進入了尋常百姓家。目前,正是裝空調火爆的時候。家庭安裝空調要注意防火問題:1、安裝空調前要檢查入戶電源線及電表,以防過載。一般家用空調的耗電功率為1-3千瓦,其電源線路的安裝和連接必須符合額定電流不低于5-15安的要求...
2026-06-29
鈉燈與金鹵燈的區别-鈉燈應用于什麼?
鈉燈與金鹵燈的區别-鈉燈應用于什麼?
鈉燈與金鹵燈的區别-鈉燈應用于什麼?鈉燈的應用鈉燈利用鈉蒸氣放電産生可見光的電光源。鈉燈又分低壓鈉燈和高壓鈉燈。低壓鈉燈是太陽能路燈照明系統的最佳光源,低壓鈉燈發射波長是為589.0nm和589.6nm的單色光,這兩條黃色譜線的位置靠近人眼最靈敏的波長為555.0nm的綠色譜線,既具有高的發光效率,...
2026-06-29
中央熱水器的工作原理
中央熱水器的工作原理
中央熱水器的工作原理中央熱水器的工作原理燃氣熱水器通過燃燒可燃氣體加熱熱水,同時排放大量的二氧化碳,二氧化硫等有害廢氣。家用中央節能熱水器隻是将周圍空氣中的熱量轉移到水中,完全做到零排放,對環境幾乎不産生影響,是真正的環保熱水器。一台完整的家用中央節能熱水器包含2個主要部分,水箱部分和加熱熱水部分。...
2026-06-29
單控開關的選購技巧-單控開關的主要參數
單控開關的選購技巧-單控開關的主要參數
單控開關的選購技巧-單控開關的主要參數單控開關的選購技巧1、開關的材質是否合格。好的面闆采用優質工程塑料,硬度、韌度及光潔度較好,使用壽命都在10年以上。2、開關面闆的導體材料。最好的開關面闆導體是錫磷青銅,其具有導電性好、彈性佳、抗疲勞、抗氧化性良好等諸多優點。3、開關的按鍵質量。好的按鍵聲音清脆...
2026-06-29
Copyright 2023-2026 - www.tftnews.com All Rights Reserved