91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2023-07-19
  • 語言: 其他
  • 標簽: W25N01G??

資源簡介

uint8_t Program_verify(uint8_t* buff1, uint8_t* buff2, uint32_t count); void WB_Serial_NAND_Pageprogram_Pattern(uint8_t addh, uint8_t addl, uint8_t* program_buffer, uint32_t count); void WB_Serial_NAND_Program_Excute(uint8_t addh, uint8_t addl); /* status check */ uint8_t WB_Check_Embedded_ECC(); uint8_t WB_Check_Program_Erase_Fail_Flag(); uint8_t WB_Read_Serial_NAND_StatusRegister(uint8_t sr_sel); void WB_Serial_NAND_ReadyBusy_Check(); uint32_t WB_NAND_Read_JEDEC_ID(); uint8_t WB_Serial_NAND_bad_block_check(uint32_t page_address); void WB_Serial_NAND_LUT_Read(uint16_t* LBA, uint16_t* PBA); /* Stack function for W25M series */ void WB_Die_Select(uint8_t select_die); /* status set */ void WB_Enable_Embedded_ECC(); void WB_Disable_Embedded_ECC(); void WB_Enable_Buffer_mode(); void WB_Disable_Buffer_mode(); void WB_Serial_NAND_StatusRegister_Write_SR1(uint8_t SR1); void WB_Serial_NAND_StatusRegister_Write_SR2(uint8_t SR2); void WB_Serial_NAND_StatusRegister_Write_SR3(uint8_t SR3); void WB_NAND_Reset(); void WB_Protect(); void WB_Unprotect(); void WB_Serial_NAND_LUT_Set(uint16_t LBA, uint16_t PBA); /* erase function */ void WB_Serial_NAND_BlockErase(uint8_t PA_H, uint8_t PA_L); /* read function */ void WB_Serial_NAND_PageDataRead(uint8_t PA_H, uint8_t PA_L); void WB_Serial_NAND_Normal_Read(uint8_t addh, uint8_t addl, uint8_t* buff, uint32_t count); void WB_Serial_NAND_Continuous_Normal_Read(uint8_t* buff, uint32_t count);

資源截圖

代碼片段和文件信息

/**
??******************************************************************************
??*?@file????/WB_SerialNAND_Sample_Code_LLD.c
??*?@author??Winbond?FAE?Steam?Lin
??*?@version?V1.0.4
??*?@date????9-March-2016
??*?@brief???This?code?provide?the?basic?Serial?NAND?Flash?application?cover?ONFI?NAND?Flash?working?behavior?based?on?STM32F205?
??*????????????
??*?COPYRIGHT?2015?Winbond.
*/?

#include?
#include?“WB_SerialNAND_Sample_Code_LLD.h“

#define?Page_size?0x800 //?2048?bytes?per?page
#define?Spare_size?0x40 //?64?bytes?per?page?spare?area
#define?Block_size?0x40 //?64?pages per?block
#define?Block_count?0x400 //?1024?blocks?per?1G?NAND
#define?status_ok?0x00
#define?ID_error?0x01
#define?Read_error?0x02
#define?Erase_error?0x03
#define?Program_error?0x04
#define?Bad_block_count_over?0x05

uint32_t?Chip_size?=?Page_size*Block_size*Block_count;

//?Address?data?mapping?follow?W25N01GV?datasheet?user?could?modify?according?to?the?controller?memory?mapping?method

#define?ADDR_Col_CA15_CA8(ADD) (uint8_t)(((ADD)?&?0x0F00)?>>?8)
#define?ADDR_Col_CA7_CA0(ADD) (uint8_t)((ADD)?&?0xFF)
#define?ADDR_Row_PA15_PA8(ADD) (uint8_t)(((ADD)?&?0xFF00000)?>>?20)
#define?ADDR_Row_PA7_PA0(ADD) (uint8_t)(((ADD)?&?0xFF000)?>>?12)

void?main(){
Initial_Serial_NAND();
Check_JEDEC_ID();
Check_Serial_NAND_Read_Write();
}

void?Die_Select_Sample(){
WB_Die_Select(0x00); //?Select?default?die
WB_Die_Select(0x01); //?Select?the?other?1G?NAND?Flash?die
}

void?Continuous_Read_Sample(){
uint8_t?read_buf[Chip_size]; //?read?whole?Flash?data
WB_Disable_Buffer_mode();?//?Enter?continuous?read?mode
WB_Serial_NAND_PageDataRead(0x00?0x00); //?Load?paga?data?address?at?0x00
WB_Serial_NAND_Continuous_Normal_Read(read_buf?Chip_size);
}

void?Initial_Serial_NAND(){
PCB_SPI_Bus_Init();? //?Initial?MOSI?MISO?and?CLK?
PCB_SPI_IO_Init(); //?Initial?CS?WP?CLK
PCB_Power_on(); //?Flash?power?on?function?prototype
WB_NAND_Reset(); //?Reset?instruction?Serial?NAND?enter?in?buffer?mode
//WB_Disable_embedded_ECC(); //?After?power?on?Winbond?Serial?NAND?ECC-E?default?=?1.?Set?ECC-E?=?0?to?disable?embedded?ECC
}

uint8_t?Check_JEDEC_ID(){
uint32_t?JEDEC_ID;
JEDEC_ID?=?WB_NAND_Read_JEDEC_ID(); //?Read?JEDEC_ID
if(JEDEC_ID?!=?0xEFAA21){
return?ID_error;
}
else{
return?status_ok;
}
}

uint8_t?Check_Serial_NAND_Read_Write(){
uint32_t?memory_offset?=?0;? //?Flash?Address?to?access
uint8_t?read_buffer[Page_size];
uint8_t?program_buffer[Page_size];
uint8_t?EPR_status; //?Check?Erase?program?read?status
uint32_t?i;

/*Do?un-protect?*/
WB_Unprotect();

/*Winbond?Serial?NAND?Flash?default?ECC-enable
//WB_Enable_embedded_ECC();
//WB_Disable_embedded_ECC();

/*Do?block?erase*/
//WB_Serial_NAND_BlockErase(?ADDR_Row_PA15_PA8(memory_offset)?ADDR_Row_PA7_PA0(memory_offset)?);?//?Do?Erase
WB_Serial_NAND_BlockErase(0?0);?//?

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2117??2016-03-09?10:39??Read_me.txt
?????文件????????5979??2016-03-09?10:38??WB_SerialNAND_Sample_Code_APP.c
?????文件???????15195??2016-03-09?09:42??WB_SerialNAND_Sample_Code_LLD.c
?????文件????????2089??2016-03-09?09:43??WB_SerialNAND_Sample_Code_LLD.h

評論

共有 條評論