96 #ifdef HAL_NOR_MODULE_ENABLED 106 #define NOR_CMD_ADDRESS_FIRST (uint16_t)0x0555 107 #define NOR_CMD_ADDRESS_FIRST_CFI (uint16_t)0x0055 108 #define NOR_CMD_ADDRESS_SECOND (uint16_t)0x02AA 109 #define NOR_CMD_ADDRESS_THIRD (uint16_t)0x0555 110 #define NOR_CMD_ADDRESS_FOURTH (uint16_t)0x0555 111 #define NOR_CMD_ADDRESS_FIFTH (uint16_t)0x02AA 112 #define NOR_CMD_ADDRESS_SIXTH (uint16_t)0x0555 115 #define NOR_CMD_DATA_READ_RESET (uint16_t)0x00F0 116 #define NOR_CMD_DATA_FIRST (uint16_t)0x00AA 117 #define NOR_CMD_DATA_SECOND (uint16_t)0x0055 118 #define NOR_CMD_DATA_AUTO_SELECT (uint16_t)0x0090 119 #define NOR_CMD_DATA_PROGRAM (uint16_t)0x00A0 120 #define NOR_CMD_DATA_CHIP_BLOCK_ERASE_THIRD (uint16_t)0x0080 121 #define NOR_CMD_DATA_CHIP_BLOCK_ERASE_FOURTH (uint16_t)0x00AA 122 #define NOR_CMD_DATA_CHIP_BLOCK_ERASE_FIFTH (uint16_t)0x0055 123 #define NOR_CMD_DATA_CHIP_ERASE (uint16_t)0x0010 124 #define NOR_CMD_DATA_CFI (uint16_t)0x0098 126 #define NOR_CMD_DATA_BUFFER_AND_PROG (uint8_t)0x25 127 #define NOR_CMD_DATA_BUFFER_AND_PROG_CONFIRM (uint8_t)0x29 128 #define NOR_CMD_DATA_BLOCK_ERASE (uint8_t)0x30 131 #define NOR_MASK_STATUS_DQ5 (uint16_t)0x0020 132 #define NOR_MASK_STATUS_DQ6 (uint16_t)0x0040 323 uint32_t deviceaddress = 0;
358 NOR_WRITE(
NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_AUTO_SELECT);
383 uint32_t deviceaddress = 0;
412 NOR_WRITE(deviceaddress, NOR_CMD_DATA_READ_RESET);
433 uint32_t deviceaddress = 0;
468 NOR_WRITE(
NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_READ_RESET);
471 *pData = *(
__IO uint32_t *)(uint32_t)pAddress;
492 uint32_t deviceaddress = 0;
552 uint32_t deviceaddress = 0;
587 NOR_WRITE(
NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_READ_RESET);
590 while( uwBufferSize > 0)
592 *pData++ = *(
__IO uint16_t *)uwAddress;
617 uint16_t * p_currentaddress = (uint16_t *)
NULL;
618 uint16_t * p_endaddress = (uint16_t *)
NULL;
619 uint32_t lastloadedaddress = 0, deviceaddress = 0;
652 p_currentaddress = (uint16_t*)((uint32_t)(uwAddress));
653 p_endaddress = p_currentaddress + (uwBufferSize-1);
654 lastloadedaddress = (uint32_t)(uwAddress);
665 while(p_currentaddress <= p_endaddress)
668 lastloadedaddress = (uint32_t)p_currentaddress;
675 NOR_WRITE((uint32_t)(lastloadedaddress), NOR_CMD_DATA_BUFFER_AND_PROG_CONFIRM);
697 uint32_t deviceaddress = 0;
732 NOR_WRITE(
NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_CHIP_BLOCK_ERASE_THIRD);
733 NOR_WRITE(
NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FOURTH), NOR_CMD_DATA_CHIP_BLOCK_ERASE_FOURTH);
734 NOR_WRITE(
NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIFTH), NOR_CMD_DATA_CHIP_BLOCK_ERASE_FIFTH);
735 NOR_WRITE((uint32_t)(BlockAddress + Address), NOR_CMD_DATA_BLOCK_ERASE);
756 uint32_t deviceaddress = 0;
791 NOR_WRITE(
NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_THIRD), NOR_CMD_DATA_CHIP_BLOCK_ERASE_THIRD);
792 NOR_WRITE(
NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FOURTH), NOR_CMD_DATA_CHIP_BLOCK_ERASE_FOURTH);
793 NOR_WRITE(
NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_FIFTH), NOR_CMD_DATA_CHIP_BLOCK_ERASE_FIFTH);
794 NOR_WRITE(
NOR_ADDR_SHIFT(deviceaddress, uwNORMemoryDataWidth, NOR_CMD_ADDRESS_SIXTH), NOR_CMD_DATA_CHIP_ERASE);
814 uint32_t deviceaddress = 0;
974 uint16_t tmpSR1 = 0, tmpSR2 = 0;
975 uint32_t tickstart = 0;
989 if((Timeout == 0)||((
HAL_GetTick() - tickstart ) > Timeout))
996 tmpSR1 = *(
__IO uint16_t *)Address;
997 tmpSR2 = *(
__IO uint16_t *)Address;
1000 if((tmpSR1 & NOR_MASK_STATUS_DQ6) == (tmpSR2 & NOR_MASK_STATUS_DQ6))
1005 if((tmpSR1 & NOR_MASK_STATUS_DQ5) == NOR_MASK_STATUS_DQ5)
1010 tmpSR1 = *(
__IO uint16_t *)Address;
1011 tmpSR2 = *(
__IO uint16_t *)Address;
1014 if((tmpSR1 & NOR_MASK_STATUS_DQ6) == (tmpSR2 & NOR_MASK_STATUS_DQ6))
1018 if((tmpSR1 & NOR_MASK_STATUS_DQ5) == NOR_MASK_STATUS_DQ5)
HAL_StatusTypeDef FMC_NORSRAM_Init(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_InitTypeDef *Init)
#define FMC_NORSRAM_BANK1
#define NOR_MEMORY_ADRESS1
HAL_StatusTypeDef HAL_NOR_Erase_Block(NOR_HandleTypeDef *hnor, uint32_t BlockAddress, uint32_t Address)
#define __FMC_NORSRAM_ENABLE(__INSTANCE__, __BANK__)
Enable the NORSRAM device access.
HAL_StatusTypeDef HAL_NOR_ProgramBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData, uint32_t uwBufferSize)
#define __HAL_UNLOCK(__HANDLE__)
HAL_NOR_StatusTypeDef HAL_NOR_GetStatus(NOR_HandleTypeDef *hnor, uint32_t Address, uint32_t Timeout)
NOR handle Structure definition.
HAL_NOR_StatusTypeDef
FMC NOR Status typedef.
HAL_StatusTypeDef HAL_NOR_Init(NOR_HandleTypeDef *hnor, FMC_NORSRAM_TimingTypeDef *Timing, FMC_NORSRAM_TimingTypeDef *ExtTiming)
HAL_StatusTypeDef HAL_NOR_Read_CFI(NOR_HandleTypeDef *hnor, NOR_CFITypeDef *pNOR_CFI)
HAL_StatusTypeDef HAL_NOR_Read(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData)
#define NOR_WRITE(__ADDRESS__, __DATA__)
NOR memory write data to specified address.
void HAL_NOR_MspWait(NOR_HandleTypeDef *hnor, uint32_t Timeout)
#define NOR_MEMORY_ADRESS4
#define NOR_MEMORY_ADRESS3
FMC NORSRAM Timing parameters structure definition.
FMC_NORSRAM_EXTENDED_TypeDef * Extended
#define __HAL_LOCK(__HANDLE__)
__IO HAL_NOR_StateTypeDef State
FMC_NORSRAM_InitTypeDef Init
HAL_StatusTypeDef HAL_NOR_WriteOperation_Disable(NOR_HandleTypeDef *hnor)
HAL_StatusTypeDef FMC_NORSRAM_Timing_Init(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank)
#define DEVICE_CODE3_ADDR
#define DEVICE_CODE2_ADDR
This file contains all the functions prototypes for the HAL module driver.
#define NOR_MEMORY_ADRESS2
HAL_StatusTypeDef FMC_NORSRAM_WriteOperation_Disable(FMC_NORSRAM_TypeDef *Device, uint32_t Bank)
HAL_StatusTypeDef HAL_NOR_Erase_Chip(NOR_HandleTypeDef *hnor, uint32_t Address)
HAL_NOR_StateTypeDef
HAL SRAM State structures definition.
#define DEVICE_CODE1_ADDR
#define FMC_NORSRAM_BANK3
#define FMC_NORSRAM_BANK2
HAL_StatusTypeDef HAL_NOR_WriteOperation_Enable(NOR_HandleTypeDef *hnor)
HAL_StatusTypeDef HAL_NOR_DeInit(NOR_HandleTypeDef *hnor)
HAL_StatusTypeDef HAL_NOR_ReadBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData, uint32_t uwBufferSize)
HAL_StatusTypeDef HAL_NOR_ReturnToReadMode(NOR_HandleTypeDef *hnor)
HAL_StatusTypeDef FMC_NORSRAM_WriteOperation_Enable(FMC_NORSRAM_TypeDef *Device, uint32_t Bank)
HAL_StatusTypeDef FMC_NORSRAM_Extended_Timing_Init(FMC_NORSRAM_EXTENDED_TypeDef *Device, FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank, uint32_t ExtendedMode)
HAL_StatusTypeDef HAL_NOR_Read_ID(NOR_HandleTypeDef *hnor, NOR_IDTypeDef *pNOR_ID)
HAL_StatusTypeDef FMC_NORSRAM_DeInit(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank)
HAL_StatusTypeDef HAL_NOR_Program(NOR_HandleTypeDef *hnor, uint32_t *pAddress, uint16_t *pData)
void HAL_NOR_MspDeInit(NOR_HandleTypeDef *hnor)
#define FMC_NORSRAM_MEM_BUS_WIDTH_8
FMC_NORSRAM_TypeDef * Instance
HAL_StatusTypeDef
HAL Status structures definition.
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define NOR_ADDR_SHIFT(__NOR_ADDRESS, __NOR_MEMORY_WIDTH_, __ADDRESS__)
NOR memory address shifting.
uint16_t Manufacturer_Code
HAL_NOR_StateTypeDef HAL_NOR_GetState(NOR_HandleTypeDef *hnor)
void HAL_NOR_MspInit(NOR_HandleTypeDef *hnor)