首页
/
每日頭條
/
科技
/
如何确定flash和spi連接
如何确定flash和spi連接
更新时间:2025-04-18 15:49:28

如何确定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
推荐阅读
手機有哪些功能
手機有哪些功能
1、基本通訊功能,打電話、發短信。這些是手機的基礎功能此項功能必須實現,否則就不是手機了。2、娛樂功能。包含了相機、收音機、媒體播放器、遊戲等主要豐富我們的日常生活。為什麼收音機不是通訊功能,因為它隻是一個接受過程,不包含發送功能。3、智能機最大的進步是它結合了手機、音視頻播放及其它個人數據處理的幾乎所有的服務。智能手機的出現使得大多數用戶不用再帶很多其它的設備就可以完成想做的事情。4、智能手機的
2025-04-18
大疆靈眸Osmo手機雲台2如何連接手機
大疆靈眸Osmo手機雲台2如何連接手機
1、首先在手機上打開DJIGOAPP,然後将手機夾持在靈眸Osmo手機雲台2上,并打開手機藍牙。2、長按靈眸Osmo手機雲台2操作面闆上的M鍵,啟動靈眸Osmo手機雲台2。3、打開手機的藍牙菜單,找到靈眸Osmo手機雲台2的藍牙設備并連接。4、打開DJIGOAPP,向右滑動主界面,将所選設備切換到靈眸Osmo手機雲台2,并點擊連接設備。5、在藍牙設備列表中找到自己的靈眸Osmo手機雲台2,并點擊連
2025-04-18
中國象棋起源于什麼時期
中國象棋起源于什麼時期
我國象棋具有悠久的曆史。戰國時期,已經有了關于象棋的正式記載,如《楚辭·招魂》中有蓖蔽象棋,有六簿些;曹并進,遒相迫些;成袅而牟,呼五白些。《說苑》載雍門子周以琴見孟嘗君,說足下千乘之君也,燕則鬥象棋而舞鄭女。由此可見,遠在戰國時期,象棋已在貴族階層中流行開來了。據上述情況及象棋的形制推斷,象棋當在周代建朝前後産生于我國南部的氏族地區。早期的象棋,棋制由棋、著、局等三種器具組成。兩方
2025-04-18
藍牙耳機隻能連接一台手機嗎
藍牙耳機隻能連接一台手機嗎
演示機型:Iphone12&&華為p40&&小米11&&airpods系統版本:iOS14.4藍牙耳機一次隻能連接一台手機,但可以和不同手機配對。每部手機内部集成了一個藍牙模塊,這個模塊隻能控制一個藍牙設備或者傳輸中也隻能點對點傳輸。一個藍牙模塊最多隻能連接一個設備,不能同時連接2個藍牙。出現不可用的現象可能是手機與藍牙耳機連接時間過長導緻,重新嘗試即可。此方法适用于蘋果、小米、華為手機。連接時藍
2025-04-18
帶寶寶出行必備物品清單
帶寶寶出行必備物品清單
第一、小瓶罐。小瓶罐的形狀,大小有很多種。可以裝藥膏或乳液,以備不時之需。戴的稍微大的盒子還可以裝葡萄幹、南瓜子等零食。十分方便。第二、毛巾攜帶筒。可以帶自己的毛巾和洗漱用品,比外面的洗漱用品好用幹淨得多。第三、故事書和小玩具。寶寶出外時難免會覺得無聊,故事書和小玩具就成了寶寶很好的消遣的工具。而且也可以避免讓寶寶吵鬧。第四、輕便的雨衣,可準備一兩件,以備不時之需。臨時遇到下雨天氣,就給寶寶穿上,
2025-04-18
Copyright 2023-2025 - www.tftnews.com All Rights Reserved