娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

GD32F303固件庫開發(fā)(16)----移植兆易創(chuàng)新SPI Nor Flash之GD25Q64Flash

發(fā)布者:superstar11最新更新時間:2024-12-05 來源: elecfans關(guān)鍵字:GD32F303  固件庫開發(fā)  SPI  Nor  Flash 手機看文章 掃描二維碼
隨時隨地手機看文章

spi概述

SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,越來越多的芯片集成了這種通信協(xié)議,比如 EEPROM,F(xiàn)LASH,實時時鐘,AD轉(zhuǎn)換器。 W25Q64 是一款SPI接口的Flash芯片,其存儲空間為 64Mbit,相當(dāng)于8M字節(jié)。W25Q64可以支持 SPI 的模式 0 和模式 3,也就是 CPOL=0/CPHA=0 和CPOL=1/CPHA=1 這兩種模式。 
在這里插入圖片描述

視頻教程

https://www.bilibili.com/video/BV16W4y147R1/


樣品申請

https://www.wjx.top/vm/wFGhGPF.aspx#

csdn課程

課程更加詳細。
https://download.csdn.net/course/detail/37144

生成例程

這里準備了自己繪制的開發(fā)板進行驗證。
在這里插入圖片描述

SPI配置

在開發(fā)板中有arduino接口,配置這幾個接口為spi。
在這里插入圖片描述
本次實驗使用的SPI與Flash通信,配置如下。 SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設(shè)備和一個或多個從設(shè)備,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基于SPI的設(shè)備共有的,它們是MISO(主設(shè)備數(shù)據(jù)輸入)、MOSI(主設(shè)備數(shù)據(jù)輸出)、SCLK(時鐘)、CS(片選)。 (1)MISO– Master Input Slave Output,主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出; (2)MOSI– Master Output Slave Input,主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入; (3)SCLK – Serial Clock,時鐘信號,由主設(shè)備產(chǎn)生; (4)CS – Chip Select,從設(shè)備使能信號,由主設(shè)備控制。

在這里插入圖片描述

負責(zé)通訊的3根線了。通訊是通過數(shù)據(jù)交換完成的,這里先要知道SPI是串行通訊協(xié)議,也就是說數(shù)據(jù)是一位一位的傳輸?shù)摹_@就是SCLK時鐘線存在的原因,由SCLK提供時鐘脈沖,SDI,SDO則基于此脈沖完成數(shù)據(jù)傳輸。數(shù)據(jù)輸出通過 SDO線,數(shù)據(jù)在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位數(shù)據(jù)傳輸,輸入也使用同樣原理。因此,至少需要8次時鐘信號的改變(上沿和下沿為一次),才能完成8位數(shù)據(jù)的傳輸。 時鐘信號線SCLK只能由主設(shè)備控制,從設(shè)備不能控制。同樣,在一個基于SPI的設(shè)備中,至少有一個主設(shè)備。這樣的傳輸方式有一個優(yōu)點,在數(shù)據(jù)位的傳輸過程中可以暫停,也就是時鐘的周期可以為不等寬,因為時鐘線由主設(shè)備控制,當(dāng)沒有時鐘跳變時,從設(shè)備不采集或傳送數(shù)據(jù)。SPI還是一個數(shù)據(jù)交換協(xié)議:因為SPI的數(shù)據(jù)輸入和輸出線獨立,所以允許同時完成數(shù)據(jù)的輸入和輸出。芯片集成的SPI串行同步時鐘極性和相位可以通過寄存器配置,IO模擬的SPI串行同步時鐘需要根據(jù)從設(shè)備支持的時鐘極性和相位來通訊。 最后,SPI接口的一個缺點:沒有指定的流控制,沒有應(yīng)答機制確認是否接收到數(shù)據(jù)。

NOR Flash

NOR Flash是一種非易失閃存技術(shù),是Intel在1988年創(chuàng)建。是市場上兩種主要的非易失閃存技術(shù)之一。 以GD25Q64E為例,該 Flash為64M-bit大小,即8192K-Byte。

在這里插入圖片描述

W25Q64將8M的容量分為127個塊(Block),每個塊大小為64K字節(jié),每個塊又分為16個扇區(qū)(Sector),每個扇區(qū)4K個字節(jié)。W25Q64的最小擦除單位為一個扇區(qū),也就是每次必須擦除4K個字節(jié)。 即4K16128=8192K=8M

在這里插入圖片描述

W25Q64的原理及應(yīng)用

復(fù)位初始化

對于復(fù)位,需要發(fā)送0x66和0x99

在這里插入圖片描述

代碼中的初始化。


/* Reset Operations */

#define RESET_ENABLE_CMD                     0x66

#define RESET_MEMORY_CMD                     0x99

/**

  * @brief  Initializes the W25Q128FV interface.

  * @retval None

  */

uint8_t BSP_W25Qx_Init(void)

    /* Reset W25Qxxx */

    BSP_W25Qx_Reset();


    return BSP_W25Qx_GetStatus();

}


/**

  * @brief  This function reset the W25Qx.

  * @retval None

  */

static void    BSP_W25Qx_Reset(void)

{

    uint8_t cmd[2] = {RESET_ENABLE_CMD,RESET_MEMORY_CMD};    

    W25Qx_Enable();

    /* Send the reset command */    

    for(int i=0;i< 2;i++){

    spi_SendRcvByte(SPI0,cmd[i]);

}        

//    HAL_SPI_Transmit(&hspi1, cmd, 2, W25Qx_TIMEOUT_VALUE);    

    W25Qx_Disable();

}


在這里插入圖片描述

ID

對于兆易創(chuàng)新W25Q64,主要有三種查詢ID方式。

在這里插入圖片描述

可以使用90H查詢設(shè)備ID,以判斷是否是W25Q64設(shè)備。

在這里插入圖片描述

/* Identification Operations */

#define READ_ID_CMD                          0x9F

/**

  * @brief  Read Manufacture/Device ID.

    * @param  return value address

  * @retval None

  */

void BSP_W25Qx_Read_ID(uint8_t *ID)

{

    uint8_t cmd[4] = {READ_ID_CMD,0x00,0x00,0x00};


    W25Qx_Enable();

    /* Send the read ID command */    

//    HAL_SPI_Transmit(&hspi1, cmd, 4, W25Qx_TIMEOUT_VALUE);    

    /* Reception of the data */

//    HAL_SPI_Receive(&hspi1,ID, 2, W25Qx_TIMEOUT_VALUE);

    for(int i=0;i< 4;i++)

        spi_SendRcvByte(SPI0,cmd[i]);

    for(int i=0;i< 2;i++)

    {

        ID[i]=spi_SendRcvByte(SPI0,0x00);

}

    W25Qx_Disable();        

}


在這里插入圖片描述

讀取數(shù)據(jù)

對于兆易創(chuàng)新W25Q64,讀取數(shù)據(jù)使用0x03指令,后面添加需要讀取的數(shù)據(jù)地址。 數(shù)據(jù)可以一直進行讀取,當(dāng)不需要讀取數(shù)據(jù)時候?qū)⑵xCS拉高,關(guān)閉時鐘SCLK即可。

在這里插入圖片描述

#define READ_CMD                             0x03


/**

  * @brief  Reads an amount of data from the QSPI memory.

  * @param  pData: Pointer to data to be read

  * @param  ReadAddr: Read start address

  * @param  Size: Size of data to read    

  * @retval QSPI memory status

  */

uint8_t BSP_W25Qx_Read(uint8_t* pData, uint32_t ReadAddr, uint32_t Size)

{

    uint8_t cmd[4];

    uint8_t status;

    /* Configure the command */

    cmd[0] = READ_CMD;

    cmd[1] = (uint8_t)(ReadAddr > > 16);

    cmd[2] = (uint8_t)(ReadAddr > > 8);

    cmd[3] = (uint8_t)(ReadAddr);


    W25Qx_Enable();

    /* Send the read ID command */

//    HAL_SPI_Transmit(&hspi1, cmd, 4, W25Qx_TIMEOUT_VALUE);    

    for(int i= 0;i< 4;i++)

        spi_SendRcvByte(SPI0,cmd[i]);

    /* Reception of the data */

//    if (HAL_SPI_Receive(&hspi1, pData,Size,W25Qx_TIMEOUT_VALUE) != HAL_OK)

//  {

//    return W25Qx_ERROR;

//  }

    for(int i= 0;i< Size;i++)

        pData[i]=spi_SendRcvByte(SPI0,0x00);

    if (status != 0x00)

  {

    return W25Qx_ERROR;

  }

    W25Qx_Disable();

    return W25Qx_OK;

}

以讀取10個數(shù)據(jù)為例子,波形如下所示。


BSP_W25Qx_Read(rData2,0x1000,0x00a);


在這里插入圖片描述

擦除扇區(qū)

最小的擦除單位是扇區(qū),擦除指令為0x20和3字節(jié)的地址。

在這里插入圖片描述


#define SECTOR_ERASE_CMD                     0x20

/**

  * @brief  Erases the specified block of the QSPI memory. 

  * @param  BlockAddress: Block address to erase  

  * @retval QSPI memory status

  */

uint8_t BSP_W25Qx_Erase_Block(uint32_t Address)

{

    uint8_t cmd[4];

    uint32_t tickstart=0 ;

    cmd[0] = SECTOR_ERASE_CMD;

    cmd[1] = (uint8_t)(Address > > 16);

    cmd[2] = (uint8_t)(Address > > 8);

    cmd[3] = (uint8_t)(Address);


    /* Enable write operations */

    BSP_W25Qx_WriteEnable();


    /*Select the FLASH: Chip Select low */

    W25Qx_Enable();

    /* Send the read ID command */

//    HAL_SPI_Transmit(&hspi1, cmd, 4, W25Qx_TIMEOUT_VALUE);    

    for(int i =0;i< 4;i++)

        spi_SendRcvByte(SPI0,cmd[i]);

    /*Deselect the FLASH: Chip Select high */

    W25Qx_Disable();

delay_1ms(1);

    /* Wait the end of Flash writing */

    while(BSP_W25Qx_GetStatus() == W25Qx_BUSY)

    {

    tickstart++;

        /* Check for the Timeout */

    if(tickstart > W25Q128FV_SECTOR_ERASE_MAX_TIME)

    {        

            return W25Qx_TIMEOUT;

    }

    }

    return W25Qx_OK;

}


在這里插入圖片描述

寫數(shù)據(jù)

對于寫數(shù)據(jù)到flash中,使用0x02指令進行寫數(shù)據(jù),后面還需要指定24位地址,才能進行寫數(shù)據(jù)。

在這里插入圖片描述

#define PAGE_PROG_CMD                        0x02

/**

  * @brief  Writes an amount of data to the QSPI memory.

  * @param  pData: Pointer to data to be written

  * @param  WriteAddr: Write start address

  * @param  Size: Size of data to write,No more than 256byte.    

  * @retval QSPI memory status

  */

uint8_t BSP_W25Qx_Write(uint8_t* pData, uint32_t WriteAddr, uint32_t Size)

{

    uint8_t cmd[4];

    uint32_t end_addr, current_size, current_addr;

    uint32_t tickstart =0;


    /* Calculation of the size between the write address and the end of the page */

  current_addr = 0;


  while (current_addr <= WriteAddr)//判斷地址屬于哪一扇區(qū)開始

  {

    current_addr += W25Q128FV_PAGE_SIZE;//0x100- > 256 bytes

  }

  current_size = current_addr - WriteAddr;


  /* Check if the size of the data is less than the remaining place in the page */

  if (current_size > Size)

  {

    current_size = Size;

  }


  /* Initialize the adress variables *///寫入地址大小范圍

  current_addr = WriteAddr;

  end_addr = WriteAddr + Size;


  /* Perform the write page by page */

  do

  {

        /* Configure the command */

        cmd[0] = PAGE_PROG_CMD;

        cmd[1] = (uint8_t)(current_addr > > 16);

        cmd[2] = (uint8_t)(current_addr > > 8);

        cmd[3] = (uint8_t)(current_addr);


        /* Enable write operations */

        BSP_W25Qx_WriteEnable();


        W25Qx_Enable();

    /* Send the command */

//    if (HAL_SPI_Transmit(&hspi1,cmd, 4, W25Qx_TIMEOUT_VALUE) != HAL_OK)

//    {

//      return W25Qx_ERROR;

//    }

        for(int i=0;i< 4;i++)

            spi_SendRcvByte(SPI0,cmd[i]);


    /* Transmission of the data */

//    if (HAL_SPI_Transmit(&hspi1, pData,current_size, W25Qx_TIMEOUT_VALUE) != HAL_OK)

//    {

//      return W25Qx_ERROR;

//    }

        for(int i=0;i< current_size;i++)

            spi_SendRcvByte(SPI0,pData[i]);


            W25Qx_Disable();

        /* Wait the end of Flash writing */

        while(BSP_W25Qx_GetStatus() == W25Qx_BUSY)

        {

            tickstart++;

            /* Check for the Timeout */

            if(tickstart > W25Qx_TIMEOUT_VALUE)

            {        

                return W25Qx_TIMEOUT;

            }

        }


    /* Update the address and size variables for next page programming */

    current_addr += current_size;

[1] [2] [3] [4] [5] [6]
關(guān)鍵字:GD32F303  固件庫開發(fā)  SPI  Nor  Flash 引用地址:GD32F303固件庫開發(fā)(16)----移植兆易創(chuàng)新SPI Nor Flash之GD25Q64Flash

上一篇:基于GD32E503主控芯片實現(xiàn)直流數(shù)控電源的設(shè)計
下一篇:STM32CUBEMX開發(fā)GD32F303(2)----讀保護與寫保護

0

推薦閱讀最新更新時間:2025-04-17 20:12

兆易創(chuàng)新推出GD25NE系列SPI NOR Flash:專為1.2V SoC打造,雙電壓供電助力讀功耗減半
兆易創(chuàng)新推出GD25NE系列SPI NOR Flash:專為1.2V SoC打造,雙電壓供電助力讀功耗減半 中國北京(2025年3月12日)—— 業(yè)界領(lǐng)先的半導(dǎo)體器件供應(yīng)商兆易創(chuàng)新GigaDevice宣布推出專為1.2V SoC應(yīng)用打造的雙電壓供電SPI NOR Flash產(chǎn)品——GD25NE系列。 該系列產(chǎn)品無需借助外部升壓電路即可與下一代1.2V SoC實現(xiàn)無縫兼容,此產(chǎn)品的面世將進一步強化兆易創(chuàng)新在雙電壓供電閃存解決方案領(lǐng)域的戰(zhàn)略布局。憑借更高的性能和更低的功耗,GD25NE系列可充分滿足市場對于先進嵌入式存儲解決方案日益增長的需求,成為智能可穿戴設(shè)備、醫(yī)療健康、物聯(lián)網(wǎng)、數(shù)據(jù)中心及邊緣人工智能應(yīng)用的理想選擇。 G
[嵌入式]
兆易創(chuàng)新推出GD25NE系列<font color='red'>SPI</font> <font color='red'>NOR</font> <font color='red'>Flash</font>:專為1.2V SoC打造,雙電壓供電助力讀功耗減半
兆易創(chuàng)新GD25/55全系列車規(guī)級SPI NOR Flash榮獲ISO 26262 ASIL D功能安全認證證書
中國北京(2024年11月22日)—— 業(yè)界領(lǐng)先的半導(dǎo)體器件供應(yīng)商兆易創(chuàng)新GigaDevice宣布,旗下GD25/55全系列車規(guī)級SPI NOR Flash獲得由國際公認的測試、檢驗和認證機構(gòu)SGS授予的ISO 26262:2018 ASIL D汽車功能安全認證證書。 這一成就不僅有力印證了GD25/55全系列車規(guī)級SPI NOR Flash在嚴苛汽車應(yīng)用場景中的卓越安全性能和可靠性,也進一步鞏固了公司在SPI NOR Flash領(lǐng)域的領(lǐng)導(dǎo)地位。 隨著汽車電子電氣組件數(shù)量的指數(shù)級增長,其安全性需求日益凸顯。ISO 26262作為國際權(quán)威汽車功能安全標(biāo)準,其核心目標(biāo)是降低汽車電子電氣系統(tǒng)可能導(dǎo)致的風(fēng)險,確保車輛的安全性能
[汽車電子]
兆易創(chuàng)新GD25/55全系列車規(guī)級<font color='red'>SPI</font> <font color='red'>NOR</font> <font color='red'>Flash</font>榮獲ISO 26262 ASIL D功能安全認證證書
臺媒:明年上半年NOR Flash漲幅將達到5%-10%
據(jù)鉅亨網(wǎng)報道,外資近期的報告顯示,NOR Flash明年上半年單季的漲幅將達5%,不過相關(guān)廠商透露,漲幅將高于5%,甚至達到10%。 對于NOR Flash漲價的原因,鉅亨網(wǎng)指出一方面是TWS耳機市場規(guī)模擴大,OLED屏智能手機滲透率提升催生NOR Flash芯片需求,另一方面是中芯國際邏輯芯片客戶需求強勁,造成NOR Flash產(chǎn)能不足,市場供不應(yīng)求。 具體而言,Sony、BOSE、Beats及手機廠商蘋果、三星、華為,紛紛推出自家TWS耳機,且新一代TWS耳機支持藍牙5.0及主動降噪功能,每支耳機都需搭載 NOR Flash芯片協(xié)助計算。另外,各大智能手機廠商紛紛導(dǎo)入OLED屏幕,蘋果今年推出的iPhone 12系列新
[手機便攜]
在單片機開發(fā)NOR_FLASH的應(yīng)用
在單片機開發(fā)中,NOR_FLASH常用的有4M和8M的大小: 4M的FLASH在程序中可以這樣表示:Ptr 0x220000 8M的FLASH在程序中可以這樣表示:Ptr 0x400000(最大只能讀到0x3fffff) 有了這個關(guān)系,在判斷NOR_FLASH好壞的方法上我們可以采用計算checksum的方式來校驗。 在程序中,我們一般把地址的指針定義為unsigned short *ptr 類型。然后通過指針不斷的往后移動可以簡引用獲取到FLASH中的每一個byte,如果此時定義成unsigned short類型,那么用一個temp變量來接收的話,一次是可以接收到2個byte的數(shù)據(jù),如果此時定義成unsign
[單片機]
在單片機<font color='red'>開發(fā)</font>中<font color='red'>NOR</font>_<font color='red'>FLASH</font>的應(yīng)用
使用jlink直接燒norflash或者nandflash不借助uboot的猜想
由于喜歡折騰,我是在linux下使用jlink的,既然JLinkExe可以進行內(nèi)存讀寫操作,loadbin等操作,并且通過指定命令文件支持批量指令輸入,那么首先jlink是可以直接訪問內(nèi)部存儲器的,包括它的RAM和各種Soc上外設(shè)如存儲控制器,串口配置寄存器等,但是不能直接訪問外部存儲器,如Norflash。這樣一來,先關(guān)狗,設(shè)好時鐘,然后通過wmem32一系列命令,操作存儲控制器,這樣就可以訪問SRAM,然后loadbin到內(nèi)存,再寫回到norflash,或者nandflash,其中nandflash應(yīng)該略復(fù)雜,需要設(shè)置好flash控制器,然后還要額外寫一個操作nandflash的bin,并將它也loadbin至內(nèi)存,setpc
[單片機]
Nordic Semiconductor 為 MWC 上海 2024 帶來全面的無線物聯(lián)網(wǎng)連接解決方案
無線專家團隊將在該地區(qū)最重要的連接活動上展示蜂窩物聯(lián)網(wǎng)、Wi-Fi、藍牙 LE、nRF Cloud定位、安全和設(shè)備管理服務(wù)、Matter、DECT NR+、LE 音頻和 PMIC 解決方案 挪威奧斯陸 – 2024年6月11日 – Nordic Semiconductor 將于本月在亞洲最大、最具影響力的互聯(lián)盛會MWC上海2024(6月26日至28日在上海新國際博覽中心舉行)上舉辦一系列先進、前沿的物聯(lián)網(wǎng)展示活動。Nordic將在此次盛會上展示其全套低功耗無線連接解決方案,包括蜂窩物聯(lián)網(wǎng)、Wi-Fi、藍牙? LE、Matter和DECT NR+物聯(lián)網(wǎng)技術(shù)。 展示Nordic技術(shù) Nordic 工程師將在其展臺
[物聯(lián)網(wǎng)]
<font color='red'>Nor</font>dic Semiconductor 為 MWC 上海 2024 帶來全面的無線物聯(lián)網(wǎng)連接解決方案
Nordic Semiconductor推出多功能nPM1300電源管理IC
Nordic Semiconductor推出多功能nPM1300電源管理IC,自帶獨特的系統(tǒng)管理功能以及相關(guān)的評測套件 nPM1300 PMIC將基本功能集成到緊湊型封裝中,從而簡化了電源管理系統(tǒng)設(shè)計。其搭配的評測套件在與nPM PowerUP PC應(yīng)用一起使用時,無需編碼,則簡化了評測和實施工作。 挪威奧斯陸 – 2023年7月3日 – Nordic Semiconductor 宣布推出nPM1300?電源管理集成電路(PMIC),該產(chǎn)品具有兩個超高效降壓轉(zhuǎn)換器、兩個負載開關(guān)/低壓差電壓轉(zhuǎn)換器(LDOs)并集成了電池充電功能,適用于電池驅(qū)動的應(yīng)用 。nPM1300將通常需要五個或更多分立元件的電路組合到單個芯片中,從而
[電源管理]
<font color='red'>Nor</font>dic Semiconductor推出多功能nPM1300電源管理IC
一加 Nord CE 2 Lite 渲染圖曝光:搭驍龍 695
一加Nord CE 2 Lite的配置信息此前已經(jīng)曝光,而現(xiàn)在91mobiles又曝光了新機的渲染圖。 報道稱,匿名業(yè)內(nèi)人士說,這不是最終的設(shè)計,所以在Nord CE 2 Lite發(fā)布前可能會有一些小的改動。不過肯定的是,這款手機將使用打孔屏,后置相機模塊采用巨大矩形設(shè)計,側(cè)邊框則采用人體工程學(xué)設(shè)計。 據(jù)悉,機身框架將是金屬材質(zhì),側(cè)邊框?qū)⑹腔⌒蔚模敳亢偷撞渴瞧降摹?cè)面有SIM卡插槽、指紋識別器,頂部還有3.5毫米音頻插孔。不過,沒有三段式滑塊,證實了之前的報道。 Nord CE 2 Lite將是首款預(yù)裝Android 12系統(tǒng)的Nord品牌手機,根據(jù)此前消息,這款手機將搭載驍龍695芯片組,6.59英寸FHD + 屏幕,5
[手機便攜]
添点儿料...
无论热点新闻、行业分析、技术干货……
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 景谷| 建德市| 磐安县| 武胜县| 彭州市| 莱芜市| 铜川市| 怀宁县| 慈溪市| 库车县| 盈江县| 九寨沟县| 南木林县| 桦南县| 张家川| 喜德县| 石狮市| 屯留县| 双鸭山市| 上高县| 微博| 九寨沟县| 福安市| 屯留县| 郑州市| 方山县| 太白县| 临泉县| 澄城县| 平湖市| 江津市| 东平县| 长治市| 筠连县| 宁河县| 格尔木市| 遂宁市| 乌兰县| 荔浦县| 丹阳市| 岑巩县|