0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

外置FLASH讀寫實(shí)驗(yàn)

汽車電子技術(shù) ? 來(lái)源:滑小稽筆記 ? 作者:電子技術(shù)園地 ? 2023-03-01 14:56 ? 次閱讀

15.1 FLASH

Flash,全名叫做Flash EEPROM Memory,即平時(shí)所說(shuō)的“閃存”,它結(jié)合了ROM和RAM的長(zhǎng)處,不僅可以反復(fù)擦除,還可以快速讀取數(shù)據(jù),STM32運(yùn)行的程序其實(shí)就是存放在Flash當(dāng)中,但是由于STM32的Flash一般1M左右,只能存儲(chǔ)程序大小的數(shù)據(jù),所以往往需要外擴(kuò)Flash來(lái)存儲(chǔ)數(shù)據(jù),比如LCD界面當(dāng)中的漢字字庫(kù),以及文件系統(tǒng)中讀取的文件內(nèi)容。

但是一般Flash的擦除次數(shù)有限制,STM32F1系列最新的文檔指出,片內(nèi)的FLASH擦寫次數(shù)大約在1W次左右,所以一般Flash用于擦除次數(shù)不多,但是數(shù)據(jù)量很大的場(chǎng)合。

這個(gè)Flash讀寫實(shí)驗(yàn)我們用到的芯片是W25Q128,這是一款采用SPI協(xié)議進(jìn)行讀寫的Flash芯片,存儲(chǔ)容量為128Mbit,合計(jì)16Mbyte,工作電壓2.7V~3.6V。這個(gè)實(shí)驗(yàn)我們采用STM32內(nèi)置的SPI模塊來(lái)進(jìn)行對(duì)芯片的讀寫操作,STM32F1的SPI功能很強(qiáng)大,SPI時(shí)鐘最高可以到18MHz,支持DMA,可以配置為SPI協(xié)議或者I2S協(xié)議。

15.2 硬件SPI模塊

通過(guò)之前51單片機(jī)開發(fā)我們可以知道,SPI協(xié)議一共需要四根線來(lái)完成數(shù)據(jù)通信,即片選CS,總線時(shí)鐘SCK,主機(jī)輸入從機(jī)輸出MISO和主機(jī)輸出從機(jī)輸入MOSI四根數(shù)據(jù)線。STM32的內(nèi)部SPI模塊結(jié)構(gòu)框,硬件SPI的優(yōu)勢(shì)就在于開發(fā)者不需要考慮SPI的詳細(xì)參數(shù)以及時(shí)序,只需要配置內(nèi)部的寄存器,設(shè)置速率,電平就可以實(shí)現(xiàn)SPI通信。

15.3 相關(guān)寄存器

15.3.1 SPI控制寄存器1:SPIx_CR1

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BIDIMODE BIDIOE CRCEN CRCNEXT DFF RXONLY SSM SSI LSBFIRST SPE BR[2:0] MSTR CPOL CPHA

Bit 15:雙向數(shù)據(jù)模式使能

0:選擇雙線雙向模式

1:選擇單線雙向模式

Bit 14:雙向模式下的輸出使能

0:輸出禁止(只收模式)

1:輸出使能(只發(fā)模式)

Bit 13:硬件CRC校驗(yàn)使能

0:禁止CRC計(jì)算

1:?jiǎn)?dòng)CRC計(jì)算

Bit 12:下一個(gè)發(fā)送CRC

0:下一個(gè)發(fā)送的值來(lái)自發(fā)送緩沖區(qū)

1:下一個(gè)發(fā)送的值來(lái)自發(fā)送CRC寄存器

Bit 11:數(shù)據(jù)幀格式

0:使用8位數(shù)據(jù)幀格式進(jìn)行發(fā)送/接收

1:使用16位數(shù)據(jù)幀格式進(jìn)行發(fā)送/接收

Bit 10:只接收

0:全雙工(發(fā)送和接收)

1:禁止輸出(只接收模式)

Bit 9:軟件從設(shè)備管理

0:禁止軟件從設(shè)備管理

1:?jiǎn)⒂密浖脑O(shè)備管理

Bit 8:內(nèi)部從設(shè)備選擇

注:該位只在SSM位為1時(shí)有意義。它決定了NSS上的電平,在NSS引腳上的I/O操作無(wú)效

Bit 7:幀格式

0:先發(fā)送MSB

1:先發(fā)送LSB

Bit 6:SPI使能

0:禁止SPI設(shè)備

1:開啟SPI設(shè)備

Bit 5~Bit 3:波特率控制

000:f PCLK /2

001:f PCLK /4

010:f PCLK /8

011:f PCLK /16

100:f PCLK /32

101:f PCLK /64

110:f PCLK /128

111:f PCLK /256

Bit 2:主設(shè)備選擇

0:配置為從設(shè)備

1:配置為主設(shè)備

Bit 1:時(shí)鐘極性

0:空閑狀態(tài)時(shí),SCK保持低電平

1:空閑狀態(tài)時(shí),SCK保持高電平

Bit 0:時(shí)鐘相位

0:數(shù)據(jù)采樣從第一個(gè)時(shí)鐘邊沿開始

1:數(shù)據(jù)采樣從第二個(gè)時(shí)鐘邊沿開始

15.3.2 SPI狀態(tài)寄存器:SPIx_SR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- BSY OVR MODF CRCERR UDR CHSIDE TXE RXNE

Bit 7:忙標(biāo)志

0:SPI不忙

1:SPI正忙于通信,或者發(fā)送緩沖非空

Bit 6:溢出標(biāo)志

0:沒有出現(xiàn)溢出錯(cuò)誤

1:出現(xiàn)溢出錯(cuò)誤

Bit 5:模式錯(cuò)誤(在SPI模式下不使用)

0:沒有出現(xiàn)模式錯(cuò)誤

1:出現(xiàn)模式錯(cuò)誤

Bit 4:CRC錯(cuò)誤標(biāo)志(在SPI模式下不使用)

0:收到的CRC值和SPI_RXCRCR寄存器中的值匹配

1:收到的CRC值和SPI_RXCRCR寄存器中的值不匹配

Bit 3:下溢標(biāo)志位(在SPI模式下不使用)

0:未發(fā)生下溢

1:發(fā)生下溢

Bit 2:聲道(在SPI模式下不使用)

0:需要傳輸或者接收左聲道

1:需要傳輸或者接收右聲道

Bit 1:發(fā)送緩沖為空

0:發(fā)送緩沖非空

1:發(fā)送緩沖為空

Bit 0:接收緩沖非空

0:接收緩沖為空

1:接收緩沖非空

15.4 實(shí)驗(yàn)例程

功能:在Flash中寫入一段字符串,而后讀出來(lái)并顯示在TFTLCD上。

(1)創(chuàng)建w25q128.h并輸入以下代碼。

/*********************************************************************************************************
                FLASH    驅(qū)    動(dòng)    文    件
*********************************************************************************************************/
#ifndef _W25Q128_H_
#define _W25Q128_H_


#include "sys.h"
/*********************************************************************************************************
                  端    口    定    義
*********************************************************************************************************/
#define  W25QXX_CS  PBout( 12 )                                      //W25QXX的片選信號(hào)
/*********************************************************************************************************
                  數(shù)    據(jù)    定    義
*********************************************************************************************************/
//SPI總線速度設(shè)置
#define SPI_SPEED_2       0
#define SPI_SPEED_4       1
#define SPI_SPEED_8       2
#define SPI_SPEED_16      3
#define SPI_SPEED_32     4
#define SPI_SPEED_64     5
#define SPI_SPEED_128     6
#define SPI_SPEED_256     7
//指令表
#define W25X_WriteEnable    0x06
#define W25X_WriteDisable    0x04
#define W25X_ReadStatusReg    0x05
#define W25X_WriteStatusReg    0x01
#define W25X_ReadData      0x03
#define W25X_FastReadData    0x0B
#define W25X_FastReadDual    0x3B
#define W25X_PageProgram    0x02
#define W25X_BlockErase      0xD8
#define W25X_SectorErase    0x20
#define W25X_ChipErase      0xC7
#define W25X_PowerDown      0xB9
#define W25X_ReleasePowerDown  0xAB
#define W25X_DeviceID      0xAB
#define W25X_ManufactDeviceID  0x90
#define W25X_JedecDeviceID    0x9F
/*********************************************************************************************************
                  函    數(shù)    列    表
*********************************************************************************************************/
void W25QXX_Init( void ) ;                                        //初始化Flash
void W25QXX_Read( u8* pBuffer, u32 Address, u16 Len ) ;                          //讀取Flash
void W25QXX_Write( u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite ) ;                  //寫入Flash
void W25QXX_Erase_Chip( void ) ;                                    //整片擦除
void W25QXX_Erase_Sector( u32 Dst_Addr ) ;                                //扇區(qū)擦除


#endif

(2)創(chuàng)建w25q128.c并輸入以下代碼。

/*********************************************************************************************************
                FLASH    驅(qū)    動(dòng)    程    序
*********************************************************************************************************/
#include "w25q128.h" 
#include "delay.h"
/***************************************************
Name    :SPI2_SetSpeed
Function  :SPI2速度設(shè)置函數(shù)
Paramater  :
      SpeedSet:0~7
Return    :None
***************************************************/
void SPI2_SetSpeed( u8 SpeedSet )
{
  SpeedSet &= 0x07 ;                                          //限制范圍
  SPI2->CR1 &= 0xFFC7 ;
  SPI2->CR1 |= SpeedSet<<3 ;                                      //設(shè)置SPI2速度
  SPI2->CR1 |= 1<<6 ;                                          //SPI設(shè)備使能
}
/***************************************************
Name    :SPI2_ReadWriteByte
Function  :SPI2讀寫一個(gè)字節(jié)
Paramater  :
      TxData:要寫入的字節(jié)
Return    :讀取到的字節(jié)
***************************************************/
u8 SPI2_ReadWriteByte( u8 TxData )
{
  u16 retry=0;
  //等待發(fā)送區(qū)空
  while( ( SPI2->SR&0x02 )==0 )
  {
    retry ++ ;
    //超時(shí)退出
    if( retry>=0xFFFE )
      return 0 ;
  }
  SPI2->DR = TxData ;                                          //發(fā)送一個(gè)byte
  //等待接收完一個(gè)byte
  retry = 0 ;
  while( ( SPI2->SR&0x01 )==0 )
  {
    retry ++ ;
    //超時(shí)退出
    if( retry>=0xFFFE )
      return 0 ;
  }
  return SPI2->DR ;                                          //返回收到的數(shù)據(jù)
}
/***************************************************
Name    :W25QXX_Init
Function  :初始化W25Q128芯片
Paramater  :None
Return    :None
***************************************************/
void W25QXX_Init()
{ 
  RCC->APB2ENR |= 1<<3 ;                                        //PORTB時(shí)鐘使能     
  GPIOB->CRH &= 0x0000FFFF ;
  GPIOB->CRH |= 0xBBB30000 ;                                      //PB12推挽輸出+PB13/14/15復(fù)用
  GPIOB->ODR |= 0x7<<13 ;                                        //PB13/14/15上拉
  W25QXX_CS = 1 ;                                            //SPI FLASH不選中
  //初始化SPI
  RCC->APB1ENR |= 1<<14 ;                                        //SPI2時(shí)鐘使能
  SPI2->CR1 |= 0<<10 ;                                        //全雙工模式
  SPI2->CR1 |= 1<<9 ;                                          //軟件nss管理
  SPI2->CR1 |= 1<<8 ;
  SPI2->CR1 |= 1<<2 ;                                          //SPI主機(jī)
  SPI2->CR1 |= 0<<11 ;                                        //8bit數(shù)據(jù)格式
  SPI2->CR1 |= 1<<1 ;                                          //空閑模式下SCK為1 CPOL=1
  SPI2->CR1 |= 1<<0 ;                                          //數(shù)據(jù)采樣從第二個(gè)時(shí)間邊沿開始,CPHA=1
  //對(duì)SPI2屬于APB1的外設(shè).時(shí)鐘頻率最大為36M
  SPI2->CR1 |= 3<<3 ;                                          //Fsck=Fpclk1/256
  SPI2->CR1 |= 0<<7 ;                                          //MSBfirst
  SPI2->CR1 |= 1<<6 ;                                          //SPI設(shè)備使能
  SPI2_ReadWriteByte( 0xFF ) ;                                    //啟動(dòng)傳輸
  SPI2_SetSpeed( SPI_SPEED_2 ) ;                                    //設(shè)置為18M時(shí)鐘,高速模式
}
/***************************************************
Name    :W25QXX_Wait_Busy
Function  :等待空閑
Paramater  :None
Return    :None
***************************************************/
void W25QXX_Wait_Busy()   
{
  u8 byte=0 ;
  // 等待BUSY位清空
  do
  {
    W25QXX_CS = 0 ;                                          //使能器件
    SPI2_ReadWriteByte( W25X_ReadStatusReg ) ;                            //發(fā)送讀取狀態(tài)寄存器命令
    byte = SPI2_ReadWriteByte( 0xFF ) ;                                //讀取一個(gè)字節(jié)
    W25QXX_CS = 1 ;                                          //取消片選
  }while( ( byte&0x01 )==0x01 ) ;
}
/***************************************************
Name    :W25QXX_Erase_Chip
Function  :擦除整個(gè)芯片
Paramater  :None
Return    :None
***************************************************/
void W25QXX_Erase_Chip()
{
    W25QXX_CS = 0 ;                                            //使能器件
    SPI2_ReadWriteByte( W25X_WriteEnable ) ;                              //發(fā)送寫使能
  W25QXX_CS = 1 ;                                            //取消片選
    W25QXX_Wait_Busy() ;   
    W25QXX_CS=0 ;                                            //使能器件   
    SPI2_ReadWriteByte( W25X_ChipErase ) ;                                //發(fā)送片擦除命令  
  W25QXX_CS = 1 ;                                            //取消片選             
  W25QXX_Wait_Busy() ;                                        //等待芯片擦除結(jié)束
}
/***************************************************
Name    :W25QXX_Erase_Sector
Function  :擦除一個(gè)扇區(qū)
Paramater  :
      Address:扇區(qū)地址
Return    :None
***************************************************/
void W25QXX_Erase_Sector( u32 Address )
{
   Address *= 4096 ;
    W25QXX_CS = 0 ;                                            //使能器件
    SPI2_ReadWriteByte( W25X_WriteEnable ) ;                              //發(fā)送寫使能
  W25QXX_CS = 1 ;                                            //取消片選
    W25QXX_Wait_Busy();   
    W25QXX_CS = 0 ;                                            //使能器件
    SPI2_ReadWriteByte( W25X_SectorErase ) ;                              //發(fā)送扇區(qū)擦除指令
    SPI2_ReadWriteByte( ( u8 )( Address>>16 ) ) ;                            //發(fā)送24bit地址
    SPI2_ReadWriteByte( ( u8 )( Address>>8 ) ) ;
    SPI2_ReadWriteByte( ( u8 )Address ) ;
  W25QXX_CS = 1 ;                                            //取消片選
    W25QXX_Wait_Busy() ;                                        //等待擦除完成
}
/***************************************************
Name    :W25QXX_Read
Function  :在指定地址開始讀取指定長(zhǎng)度的數(shù)據(jù)
Paramater  :
      pBuffer:數(shù)據(jù)存儲(chǔ)區(qū)
      Address:開始讀取的地址
      Len:要讀取的字節(jié)數(shù)
Return    :None
***************************************************/
void W25QXX_Read( u8 *pBuffer, u32 Address, u16 Len )
{ 
   u16 i ;                           
  W25QXX_CS = 0 ;                                            //使能器件
    SPI2_ReadWriteByte( W25X_ReadData ) ;                                //發(fā)送讀取命令
    SPI2_ReadWriteByte( ( u8 )( Address>>16 ) ) ;                            //發(fā)送24bit地址
    SPI2_ReadWriteByte( ( u8 )( Address>>8 ) ) ;
    SPI2_ReadWriteByte( ( u8 )Address );
    for( i=0; i>16 ) ) ;                            //發(fā)送24bit地址
    SPI2_ReadWriteByte( ( u8 )( Address>>8 ) ) ;
    SPI2_ReadWriteByte( ( u8 )Address ) ;
    for( i=0; ipageremain
     else
    {
      pBuffer += pageremain ;
      Address += pageremain ;
      Len -= pageremain ;                                      //減去已經(jīng)寫入了的字節(jié)數(shù)
      //一次可以寫入256個(gè)字節(jié)
      if( Len>256 )
        pageremain = 256 ;
      //不夠256個(gè)字節(jié)了
      else
        pageremain = Len ;
    }
  }
}
/***************************************************
Name    :W25QXX_Write_NoCheck
Function  :在指定地址開始寫入指定長(zhǎng)度的數(shù)據(jù)
Paramater  :
      pBuffer:數(shù)據(jù)存儲(chǔ)區(qū)
      Address:開始寫入的地址
      Len:要寫入的字節(jié)數(shù)
Return    :None
***************************************************/
u8 W25QXX_BUFFER[ 4096 ] ;
void W25QXX_Write( u8 *pBuffer, u32 Address, u16 Len )
{
  u32 secpos ;
  u16 secoff ;
  u16 secremain ;
   u16 i ;
  u8 *W25QXX_BUF ;
     W25QXX_BUF = W25QXX_BUFFER ;
   secpos = Address/4096 ;                                        //扇區(qū)地址
  secoff = Address%4096 ;                                        //在扇區(qū)內(nèi)的偏移
  secremain = 4096-secoff ;                                      //扇區(qū)剩余空間大小
  //不大于4096個(gè)字節(jié)
   if( Len<=secremain )
    secremain = Len ;
  while( 1 )
  {
    W25QXX_Read( W25QXX_BUF, secpos*4096, 4096 ) ;                          //讀出整個(gè)扇區(qū)的內(nèi)容
    //校驗(yàn)數(shù)據(jù)
    for( i=0; i4096 )
        secremain = 4096 ;
      //下一個(gè)扇區(qū)可以寫完了
      else
        secremain = Len ;
    }
  }
}

(3)在1.c文件中輸入以下代碼。

#include "sys.h"
#include "delay.h"
#include "usart1.h"
#include "lcd.h"
#include "w25q128.h"


const u8 TEXT_Buffer[] = { "WarShip STM32F1 SPI TEST" } ;
#define SIZE sizeof( TEXT_Buffer )


int main()
{
  u8 datatemp[ SIZE ] ;
  u32 FLASH_SIZE ;
  STM32_Clock_Init( 9 ) ;                                        //STM32時(shí)鐘初始化
  SysTick_Init( 72 ) ;                                        //SysTick初始化
  USART1_Init( 72, 115200 ) ;                                      //初始化串口1波特率115200
  LCD_Init() ;                                            //LCD初始化
  W25QXX_Init() ;                                            //W25QXX初始化
   POINT_COLOR = RED ;                                          //設(shè)置字體為紅色
  FLASH_SIZE = 128*1024*1024 ;                                    //FLASH 大小為16M字節(jié)
  W25QXX_Write( (u8*)TEXT_Buffer, FLASH_SIZE-100, SIZE ) ;                      //從倒數(shù)第100個(gè)地址處開始,寫入SIZE長(zhǎng)度的數(shù)據(jù)
  W25QXX_Read( datatemp, FLASH_SIZE-100, SIZE ) ;                            //從倒數(shù)第100個(gè)地址處開始,讀出SIZE個(gè)字節(jié)
  LCD_ShowString( 0, 0, datatemp ) ;                                  //顯示讀到的字符串
  while( 1 )
  {

  }
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1598

    瀏覽量

    147331
  • STM32
    +關(guān)注

    關(guān)注

    2257

    文章

    10828

    瀏覽量

    352432
  • 文件系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    278

    瀏覽量

    19830
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【紫光同創(chuàng)國(guó)產(chǎn)FPGA教程】【第八章】SD卡讀寫實(shí)驗(yàn)

    SD卡是現(xiàn)在嵌入式設(shè)備重要的存儲(chǔ)模塊,內(nèi)部集成了nand flash控制器,方便了主機(jī)的的管理。本實(shí)驗(yàn)主要是練習(xí)對(duì)sd卡的扇區(qū)進(jìn)行讀寫,通常sd卡都有文件系統(tǒng),可以按照文件名和目錄路徑來(lái)讀寫
    的頭像 發(fā)表于 02-05 11:35 ?8144次閱讀
    【紫光同創(chuàng)國(guó)產(chǎn)FPGA教程】【第八章】SD卡<b class='flag-5'>讀寫實(shí)驗(yàn)</b>

    STM32入門學(xué)習(xí)筆記之外置FLASH讀寫實(shí)驗(yàn)(上)

    Flash,全名叫做Flash EEPROM Memory,即平時(shí)所說(shuō)的“閃存”,它結(jié)合了ROM和RAM的長(zhǎng)處,不僅可以反復(fù)擦除,還可以快速讀取數(shù)據(jù),STM32運(yùn)行的程序其實(shí)就是存放在Flash當(dāng)中
    的頭像 發(fā)表于 02-16 14:10 ?8545次閱讀
    STM32入門學(xué)習(xí)筆記之<b class='flag-5'>外置</b><b class='flag-5'>FLASH</b><b class='flag-5'>讀寫實(shí)驗(yàn)</b>(上)

    STM32入門學(xué)習(xí)筆記之外置FLASH讀寫實(shí)驗(yàn)(下)

    Flash,全名叫做Flash EEPROM Memory,即平時(shí)所說(shuō)的“閃存”,它結(jié)合了ROM和RAM的長(zhǎng)處,不僅可以反復(fù)擦除,還可以快速讀取數(shù)據(jù),STM32運(yùn)行的程序其實(shí)就是存放在Flash當(dāng)中
    的頭像 發(fā)表于 02-16 14:13 ?1378次閱讀

    【GD32F470紫藤派開發(fā)板使用手冊(cè)】第十二講 SDIO-SD卡讀寫實(shí)驗(yàn)

    通過(guò)本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: ?SDIO操作原理 ?SD卡讀寫實(shí)現(xiàn)
    的頭像 發(fā)表于 05-18 09:36 ?1057次閱讀
    【GD32F470紫藤派開發(fā)板使用手冊(cè)】第十二講 SDIO-SD卡<b class='flag-5'>讀寫實(shí)驗(yàn)</b>

    如何對(duì)擴(kuò)展存儲(chǔ)器進(jìn)行讀寫實(shí)驗(yàn)?

    擴(kuò)展存儲(chǔ)器讀寫實(shí)驗(yàn)的目的是什么?怎樣去設(shè)計(jì)一種擴(kuò)展存儲(chǔ)器讀寫的電路?擴(kuò)展存儲(chǔ)器讀寫實(shí)驗(yàn)的流程有哪些?
    發(fā)表于 07-14 07:04

    如何通過(guò)對(duì)flash讀寫實(shí)現(xiàn)stm32的編程操作?

    如何通過(guò)對(duì)flash讀寫實(shí)現(xiàn)stm32的編程操作?
    發(fā)表于 10-29 06:19

    基于單片機(jī)的存儲(chǔ)器讀寫實(shí)驗(yàn)

    存儲(chǔ)器讀寫實(shí)驗(yàn):對(duì)RAM的30H、31H單元分別賦值BCD碼75H、35H,試將兩個(gè)數(shù)相加,其BCD的差送32H單元。(說(shuō)明):因?yàn)镸CS-51的十進(jìn)制調(diào)整指令不適合減法,因此可以把減法變成加法
    發(fā)表于 12-02 06:11

    如何讀寫flash

    前言前面的博客描述了如何讀寫flash,可能還對(duì)讀寫flash思路還是不是那么的清晰,首先我們用的是外置
    發(fā)表于 02-16 07:40

    基于STM32F407利用HAL庫(kù)使用SPI對(duì)W25Q128進(jìn)行讀寫實(shí)驗(yàn)

    基于STM32F407利用HAL庫(kù)使用SPI對(duì)W25Q128進(jìn)行讀寫實(shí)驗(yàn)。
    發(fā)表于 02-17 06:31

    接觸式IC卡讀寫實(shí)驗(yàn)

    接觸式IC卡讀寫實(shí)驗(yàn) 一. 實(shí)驗(yàn)目的了解接觸式IC 卡的知識(shí),
    發(fā)表于 09-22 17:20 ?4598次閱讀
    接觸式IC卡<b class='flag-5'>讀寫實(shí)驗(yàn)</b>

    AVR內(nèi)部EEPROM讀寫實(shí)驗(yàn)

    片內(nèi)EEPROM讀寫實(shí)險(xiǎn)。?1、用內(nèi)部EEPROM記錄CPU啟動(dòng)次數(shù),并在PB口上顯示出來(lái)。?2、內(nèi)部1 M晶振,程序采用單任務(wù)方式,軟件延時(shí)。?3、進(jìn)行此實(shí)驗(yàn)請(qǐng)
    發(fā)表于 06-30 11:25 ?2499次閱讀

    PIC單片機(jī)的EEPROM讀寫實(shí)

    PIC單片機(jī)的EEPROM讀寫實(shí)例及說(shuō)明,本內(nèi)容提供了詳細(xì)程序?qū)嵗?/div>
    發(fā)表于 06-27 16:30 ?8202次閱讀

    使用DSP進(jìn)行靜態(tài)隨機(jī)存取存儲(chǔ)器SRAM的讀寫實(shí)驗(yàn)報(bào)告書免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用DSP進(jìn)行靜態(tài)隨機(jī)存取存儲(chǔ)器SRAM的讀寫實(shí)驗(yàn)報(bào)告書免費(fèi)下載。
    發(fā)表于 08-02 17:39 ?4次下載
    使用DSP進(jìn)行靜態(tài)隨機(jī)存取存儲(chǔ)器SRAM的<b class='flag-5'>讀寫實(shí)驗(yàn)</b>報(bào)告書免費(fèi)下載

    單片機(jī)實(shí)驗(yàn)匯編--擴(kuò)展存儲(chǔ)器讀寫實(shí)驗(yàn)

    擴(kuò)展存儲(chǔ)器讀寫實(shí)驗(yàn)一.實(shí)驗(yàn)要求編制簡(jiǎn)單程序,對(duì)實(shí)驗(yàn)板上提供的外部存貯器(62256)進(jìn)行讀寫操作。二.實(shí)驗(yàn)目的1.學(xué)習(xí)片外存儲(chǔ)器擴(kuò)展方法。2
    發(fā)表于 11-23 09:51 ?19次下載
    單片機(jī)<b class='flag-5'>實(shí)驗(yàn)</b>匯編--擴(kuò)展存儲(chǔ)器<b class='flag-5'>讀寫實(shí)驗(yàn)</b>

    【GD32F303紅楓派開發(fā)板使用手冊(cè)】第二十三講 SDIO-SD卡讀寫實(shí)驗(yàn)

    通過(guò)本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: ?SDIO操作原理 ?SD卡讀寫實(shí)現(xiàn)
    的頭像 發(fā)表于 06-23 10:49 ?384次閱讀
    【GD32F303紅楓派開發(fā)板使用手冊(cè)】第二十三講 SDIO-SD卡<b class='flag-5'>讀寫實(shí)驗(yàn)</b>