首页
/
每日頭條
/
科技
/
如何确定flash和spi連接
如何确定flash和spi連接
更新时间:2025-07-19 06:13:06

如何确定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
推荐阅读
微信朋友圈最多發多長時間視頻
微信朋友圈最多發多長時間視頻
本期圖文教程是由iphone11,系統ios14,微信7.0.18制作。在微信朋友圈發視頻隻能發15秒,使用第三方軟件微視可延長至30秒。還可利用微信收藏筆記進行發送長視頻。1、點擊微信“我的-收藏”。2、點擊右上角的加号。3、點擊底下圖片标志,選擇相冊一個要發朋友圈的超長視頻。4、輸入想要在視頻上...
2025-07-19
路由器雙核和四核有什麼區别
路由器雙核和四核有什麼區别
區别一:硬件上處理器數量不同。雙核就是CPU中有兩個核心,就是将兩個物理核心融合進一個CPU之中。四核裡面是由兩個雙核組成,整個CPU之中有四個運算核心。區别二:加載速度不同。處理多任務時四核CPU的加載速度是要比雙核CPU要快很多。區别三:處理大量數據運算的能力不同。四核CPU處理大量數據的能力要...
2025-07-19
wps怎麼插圖片進入格子裡
wps怎麼插圖片進入格子裡
以Windows7、WPS2019為例。第一步:打開一個需要插入圖片的wps表格。第二步:拖動表格的行和列,把要插入圖片的單元格調大。第三步:在菜單欄“插入”中選擇“圖片”。第四步:選擇需要插入到單元格中的圖片并打開。第五步:拖動圖片周圍的0個圓圈,将圖片調整至與單元格差不多大小。第六步:單擊表格中的其他區域,退出圖片編輯狀态,完成操作。
2025-07-19
word文檔怎麼橫向排版其中一頁
word文檔怎麼橫向排版其中一頁
以Windows10、Word2019為例。先打開電腦,然後打開一個word文檔,之後将輸入符放在第二頁第一個字前面;然後點擊布局;之後點擊紙張方向,然後點擊橫向;之後将輸入符放在第三頁的第一個字前面;之後點擊分隔符,然後點擊分頁符中的下一頁;之後點擊紙張方向,然後點擊縱向;最終結果如圖所示,這樣我...
2025-07-19
華為手機忘記密碼怎麼解鎖
華為手機忘記密碼怎麼解鎖
1、我們首先需要知道華為手機忘記鎖屏密碼,無法解鎖,可以通過強制恢複出廠設置來解決,需要注意的是會删...
2025-07-19
Copyright 2023-2025 - www.tftnews.com All Rights Reserved