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

如何确定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
推荐阅读
安卓手機怎樣投屏到電腦win10
安卓手機怎樣投屏到電腦win10
我們有時候需要把手機的畫面實時的投屏顯示在電腦上,今天我們分享一下如何在windows10系統下,用安卓系統手機實時投屏顯示在電腦上。注意:安卓手機和電腦需要在同一局域網下。教程開始:1.打開windows10系統桌面任務欄右下角的通知中心...
2026-08-11
erp生産操作
erp生産操作
erp生産操作?衆所周知,我國作為比較大的生産制造國之一,模切廠家是非常多的但是,模切廠日常管理中都會涉及到物料複雜多樣、替代料繁多并且變更頻繁、物料以及半成品和産品追蹤過程涉及部門較大多、物品和物料之間單位換算核算費時費力、生産排程安排不...
2026-08-11
比亞迪漢ev駕駛模式使用感受
比亞迪漢ev駕駛模式使用感受
新能源車所引領的時代變化絕對不是電動化這麼簡單,伴随汽車電氣化的發展,許多燃油車很難實現的智能化進程都可在純電車型上變成現實,同時國内自主品牌由于率先布局,已經對部分合資品牌實現了彎道超車,而其中比亞迪是絕對的先鋒,今天我們就以比亞迪漢EV...
2026-08-11
相宜本草紅景天精華乳好用嗎
相宜本草紅景天精華乳好用嗎
不知不覺間,秋天就到了。作為一個輕微幹敏皮的姑娘,北京的秋天真的讓人心碎。天氣幹燥、時冷時熱,紫外線還特别強烈。這才剛幾天啊,我的臉上就出現了泛紅、暗沉的情況,仔細看還有幾條幹紋,每天早起上妝都不服貼了,真是急死人了。還好前兩天朋友拿了她的...
2026-08-11
網站難做嗎
網站難做嗎
現如今,網站兩個字人們已經不再陌生,即使是互聯網已經發展到移動互聯網的時代,網站也是其中必不可少的組成部分。對于大多數人來說,網站就是點開浏覽器,輸入域名,打開頁面。企業可以通過網站宣傳自己,個人可以通過網站展現自己的才能,而網站隻是我們表...
2026-08-11
Copyright 2023-2026 - www.tftnews.com All Rights Reserved