93 #ifdef HAL_NAND_MODULE_ENABLED 318 __IO uint32_t data = 0;
319 __IO uint32_t data1 = 0;
320 uint32_t deviceAddress = 0;
340 *(
__IO uint8_t *)((uint32_t)(deviceAddress |
ADDR_AREA)) = 0x00;
346 data = *(
__IO uint32_t *)deviceAddress;
356 data = *(
__IO uint32_t *)deviceAddress;
357 data1 = *((
__IO uint32_t *)deviceAddress + 4);
384 uint32_t deviceAddress = 0;
402 *(
__IO uint8_t *)((uint32_t)(deviceAddress |
CMD_AREA)) = 0xFF;
426 __IO uint32_t index = 0;
427 uint32_t deviceAddress = 0, size = 0, numPagesRead = 0, nandAddress = 0;
456 *(
__IO uint8_t *)((uint32_t)(deviceAddress |
ADDR_AREA)) = 0x00;
478 for(; index < size; index++)
480 *(uint8_t *)pBuffer++ = *(uint8_t *)deviceAddress;
486 for(; index < size; index++)
488 *(uint16_t *)pBuffer++ = *(uint16_t *)deviceAddress;
499 nandAddress = (uint32_t)(nandAddress + (hnand->
Info.
PageSize * 8));
523 __IO uint32_t index = 0;
524 uint32_t deviceAddress = 0, size = 0, numPagesRead = 0, nandAddress = 0;
553 *(
__IO uint8_t *)((uint32_t)(deviceAddress |
ADDR_AREA)) = 0x00;
573 for(; index < size; index++)
575 *(uint16_t *)pBuffer++ = *(uint16_t *)deviceAddress;
585 nandAddress = (uint32_t)(nandAddress + (hnand->
Info.
PageSize * 8));
608 __IO uint32_t index = 0;
609 uint32_t tickstart = 0;
610 uint32_t deviceAddress = 0, size = 0, numPagesWritten = 0, nandAddress = 0;
642 *(
__IO uint8_t *)((uint32_t)(deviceAddress |
ADDR_AREA)) = 0x00;
661 for(; index < size; index++)
663 *(
__IO uint8_t *)deviceAddress = *(uint8_t *)pBuffer++;
670 for(; index < size; index++)
672 *(
__IO uint16_t *)deviceAddress = *(uint16_t *)pBuffer++;
699 nandAddress = (uint32_t)(nandAddress + (hnand->
Info.
PageSize * 8));
722 __IO uint32_t index = 0;
723 uint32_t tickstart = 0;
724 uint32_t deviceAddress = 0, size = 0, numPagesWritten = 0, nandAddress = 0;
756 *(
__IO uint8_t *)((uint32_t)(deviceAddress |
ADDR_AREA)) = 0x00;
773 for(; index < size; index++)
775 *(
__IO uint16_t *)deviceAddress = *(uint16_t *)pBuffer++;
801 nandAddress = (uint32_t)(nandAddress + (hnand->
Info.
PageSize * 8));
824 __IO uint32_t index = 0;
825 uint32_t deviceAddress = 0, size = 0, numSpareAreaRead = 0, nandAddress = 0;
854 *(
__IO uint8_t *)((uint32_t)(deviceAddress |
ADDR_AREA)) = 0x00;
874 for(; index < size; index++)
876 *(uint8_t *)pBuffer++ = *(uint8_t *)deviceAddress;
883 NumSpareAreaToRead--;
909 __IO uint32_t index = 0;
910 uint32_t deviceAddress = 0, size = 0, numSpareAreaRead = 0, nandAddress = 0;
939 *(
__IO uint8_t *)((uint32_t)(deviceAddress |
ADDR_AREA)) = 0x00;
959 for(; index < size; index++)
961 *(uint16_t *)pBuffer++ = *(uint16_t *)deviceAddress;
968 NumSpareAreaToRead--;
994 __IO uint32_t index = 0;
995 uint32_t tickstart = 0;
996 uint32_t deviceAddress = 0, size = 0, numSpareAreaWritten = 0, nandAddress = 0;
1027 *(
__IO uint8_t *)((uint32_t)(deviceAddress |
ADDR_AREA)) = 0x00;
1043 for(; index < size; index++)
1045 *(
__IO uint8_t *)deviceAddress = *(uint8_t *)pBuffer++;
1065 numSpareAreaWritten++;
1068 NumSpareAreaTowrite--;
1071 nandAddress = (uint32_t)(nandAddress + (hnand->
Info.
PageSize));
1094 __IO uint32_t index = 0;
1095 uint32_t tickstart = 0;
1096 uint32_t deviceAddress = 0, size = 0, numSpareAreaWritten = 0, nandAddress = 0;
1127 *(
__IO uint8_t *)((uint32_t)(deviceAddress |
ADDR_AREA)) = 0x00;
1143 for(; index < size; index++)
1145 *(
__IO uint16_t *)deviceAddress = *(uint16_t *)pBuffer++;
1165 numSpareAreaWritten++;
1168 NumSpareAreaTowrite--;
1171 nandAddress = (uint32_t)(nandAddress + (hnand->
Info.
PageSize));
1192 uint32_t DeviceAddress = 0;
1247 uint32_t DeviceAddress = 0;
1256 data = *(
__IO uint8_t *)DeviceAddress;
1295 pAddress->
Block = 0;
1437 return hnand->
State;
FMC NAND Timing parameters structure definition.
#define ADDR_2ND_CYCLE(__ADDRESS__)
FMC_NAND_TypeDef * Instance
#define NAND_WRITE_TIMEOUT
void HAL_NAND_IRQHandler(NAND_HandleTypeDef *hnand)
void HAL_NAND_MspDeInit(NAND_HandleTypeDef *hnand)
HAL_StatusTypeDef FMC_NAND_DeInit(FMC_NAND_TypeDef *Device, uint32_t Bank)
void HAL_NAND_MspInit(NAND_HandleTypeDef *hnand)
#define __FMC_NAND_ENABLE(__INSTANCE__)
Enable the NAND device access.
#define __HAL_UNLOCK(__HANDLE__)
HAL_StatusTypeDef HAL_NAND_Read_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumSpareAreaToRead)
HAL_NAND_StateTypeDef HAL_NAND_GetState(NAND_HandleTypeDef *hnand)
HAL_NAND_StateTypeDef
HAL NAND State structures definition.
HAL_StatusTypeDef HAL_NAND_ECC_Disable(NAND_HandleTypeDef *hnand)
NAND Memory electronic signature Structure definition.
HAL_StatusTypeDef HAL_NAND_Read_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumPageToRead)
HAL_StatusTypeDef HAL_NAND_ECC_Enable(NAND_HandleTypeDef *hnand)
__IO HAL_NAND_StateTypeDef State
#define FMC_FLAG_FALLING_EDGE
#define __FMC_NAND_GET_FLAG(__INSTANCE__, __BANK__, __FLAG__)
Get flag status of the NAND device.
HAL_StatusTypeDef HAL_NAND_Read_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumSpareAreaToRead)
void HAL_NAND_ITCallback(NAND_HandleTypeDef *hnand)
#define __HAL_LOCK(__HANDLE__)
#define __DSB()
Data Synchronization Barrier.
HAL_StatusTypeDef HAL_NAND_Write_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumPageToWrite)
#define ARRAY_ADDRESS(__ADDRESS__, __HANDLE__)
NAND memory address computation.
HAL_StatusTypeDef HAL_NAND_Init(NAND_HandleTypeDef *hnand, FMC_NAND_PCC_TimingTypeDef *ComSpace_Timing, FMC_NAND_PCC_TimingTypeDef *AttSpace_Timing)
#define NAND_CMD_WRITE_TRUE1
HAL_StatusTypeDef HAL_NAND_Read_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumPageToRead)
uint32_t HAL_NAND_Read_Status(NAND_HandleTypeDef *hnand)
NAND Memory address Structure definition.
#define ADDR_4TH_CYCLE(__ADDRESS__)
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef HAL_NAND_Write_SpareArea_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumSpareAreaTowrite)
uint32_t HAL_NAND_Address_Inc(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress)
#define FMC_NAND_MEM_BUS_WIDTH_8
NAND handle Structure definition.
HAL_StatusTypeDef FMC_NAND_AttributeSpace_Timing_Init(FMC_NAND_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank)
HAL_StatusTypeDef FMC_NAND_GetECC(FMC_NAND_TypeDef *Device, uint32_t *ECCval, uint32_t Bank, uint32_t Timeout)
HAL_StatusTypeDef FMC_NAND_ECC_Enable(FMC_NAND_TypeDef *Device, uint32_t Bank)
FMC_NAND_InitTypeDef Init
HAL_StatusTypeDef HAL_NAND_DeInit(NAND_HandleTypeDef *hnand)
#define __FMC_NAND_CLEAR_FLAG(__INSTANCE__, __FLAG__)
Clear flag status of the NAND device.
HAL_StatusTypeDef FMC_NAND_ECC_Disable(FMC_NAND_TypeDef *Device, uint32_t Bank)
HAL_StatusTypeDef HAL_NAND_Erase_Block(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress)
HAL_StatusTypeDef HAL_NAND_Read_ID(NAND_HandleTypeDef *hnand, NAND_IDTypeDef *pNAND_ID)
#define ADDR_3RD_CYCLE(__ADDRESS__)
HAL_StatusTypeDef HAL_NAND_Write_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pBuffer, uint32_t NumPageToWrite)
#define FMC_FLAG_RISING_EDGE
HAL_StatusTypeDef FMC_NAND_CommonSpace_Timing_Init(FMC_NAND_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank)
#define NAND_INVALID_ADDRESS
HAL_StatusTypeDef HAL_NAND_Reset(NAND_HandleTypeDef *hnand)
HAL_StatusTypeDef
HAL Status structures definition.
HAL_StatusTypeDef HAL_NAND_Write_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pBuffer, uint32_t NumSpareAreaTowrite)
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
HAL_StatusTypeDef FMC_NAND_Init(FMC_NAND_TypeDef *Device, FMC_NAND_InitTypeDef *Init)
#define ADDR_1ST_CYCLE(__ADDRESS__)
NAND memory address cycling.
#define NAND_CMD_AREA_TRUE1
HAL_StatusTypeDef HAL_NAND_GetECC(NAND_HandleTypeDef *hnand, uint32_t *ECCval, uint32_t Timeout)
#define NAND_VALID_ADDRESS