377 lines
16 KiB
C
377 lines
16 KiB
C
//###########################################################################
|
|
//
|
|
// FILE: F2837xD_flash.h
|
|
//
|
|
// TITLE: FLASH Register Definitions.
|
|
//
|
|
//###########################################################################
|
|
// $TI Release: F2837xD Support Library v3.05.00.00 $
|
|
// $Release Date: Tue Jun 26 03:15:23 CDT 2018 $
|
|
// $Copyright:
|
|
// Copyright (C) 2013-2018 Texas Instruments Incorporated - http://www.ti.com/
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions
|
|
// are met:
|
|
//
|
|
// Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
//
|
|
// Redistributions in binary form must reproduce the above copyright
|
|
// notice, this list of conditions and the following disclaimer in the
|
|
// documentation and/or other materials provided with the
|
|
// distribution.
|
|
//
|
|
// Neither the name of Texas Instruments Incorporated nor the names of
|
|
// its contributors may be used to endorse or promote products derived
|
|
// from this software without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
// $
|
|
//###########################################################################
|
|
|
|
#ifndef __F2837xD_FLASH_H__
|
|
#define __F2837xD_FLASH_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// FLASH Individual Register Bit Definitions:
|
|
|
|
struct FRDCNTL_BITS { // bits description
|
|
Uint16 rsvd1:8; // 7:0 Reserved
|
|
Uint16 RWAIT:4; // 11:8 Random Read Waitstate
|
|
Uint16 rsvd2:4; // 15:12 Reserved
|
|
Uint16 rsvd3:16; // 31:16 Reserved
|
|
};
|
|
|
|
union FRDCNTL_REG {
|
|
Uint32 all;
|
|
struct FRDCNTL_BITS bit;
|
|
};
|
|
|
|
struct FBAC_BITS { // bits description
|
|
Uint16 VREADST:8; // 7:0 VREAD Setup Time Count
|
|
Uint16 rsvd1:8; // 15:8 Reserved
|
|
Uint16 rsvd2:16; // 31:16 Reserved
|
|
};
|
|
|
|
union FBAC_REG {
|
|
Uint32 all;
|
|
struct FBAC_BITS bit;
|
|
};
|
|
|
|
struct FBFALLBACK_BITS { // bits description
|
|
Uint16 BNKPWR0:2; // 1:0 Bank Power Mode
|
|
Uint16 rsvd1:14; // 15:2 Reserved
|
|
Uint16 rsvd2:16; // 31:16 Reserved
|
|
};
|
|
|
|
union FBFALLBACK_REG {
|
|
Uint32 all;
|
|
struct FBFALLBACK_BITS bit;
|
|
};
|
|
|
|
struct FBPRDY_BITS { // bits description
|
|
Uint16 BANKRDY:1; // 0 Flash Bank Active Power State
|
|
Uint16 rsvd1:14; // 14:1 Reserved
|
|
Uint16 PUMPRDY:1; // 15 Flash Pump Active Power Mode
|
|
Uint16 rsvd2:16; // 31:16 Reserved
|
|
};
|
|
|
|
union FBPRDY_REG {
|
|
Uint32 all;
|
|
struct FBPRDY_BITS bit;
|
|
};
|
|
|
|
struct FPAC1_BITS { // bits description
|
|
Uint16 PMPPWR:1; // 0 Charge Pump Fallback Power Mode
|
|
Uint16 rsvd1:15; // 15:1 Reserved
|
|
Uint16 PSLEEP:12; // 27:16 Pump Sleep Down Count
|
|
Uint16 rsvd2:4; // 31:28 Reserved
|
|
};
|
|
|
|
union FPAC1_REG {
|
|
Uint32 all;
|
|
struct FPAC1_BITS bit;
|
|
};
|
|
|
|
struct FMSTAT_BITS { // bits description
|
|
Uint16 rsvd1:1; // 0 Reserved
|
|
Uint16 rsvd2:1; // 1 Reserved
|
|
Uint16 rsvd3:1; // 2 Reserved
|
|
Uint16 VOLTSTAT:1; // 3 Flash Pump Power Status
|
|
Uint16 CSTAT:1; // 4 Command Fail Status
|
|
Uint16 INVDAT:1; // 5 Invalid Data
|
|
Uint16 PGM:1; // 6 Program Operation Status
|
|
Uint16 ERS:1; // 7 Erase Operation Status
|
|
Uint16 BUSY:1; // 8 Busy Bit
|
|
Uint16 rsvd4:1; // 9 Reserved
|
|
Uint16 EV:1; // 10 Erase Verify Status
|
|
Uint16 rsvd5:1; // 11 Reserved
|
|
Uint16 PGV:1; // 12 Programming Verify Status
|
|
Uint16 rsvd6:1; // 13 Reserved
|
|
Uint16 rsvd7:1; // 14 Reserved
|
|
Uint16 rsvd8:1; // 15 Reserved
|
|
Uint16 rsvd9:1; // 16 Reserved
|
|
Uint16 rsvd10:1; // 17 Reserved
|
|
Uint16 rsvd11:14; // 31:18 Reserved
|
|
};
|
|
|
|
union FMSTAT_REG {
|
|
Uint32 all;
|
|
struct FMSTAT_BITS bit;
|
|
};
|
|
|
|
struct FRD_INTF_CTRL_BITS { // bits description
|
|
Uint16 PREFETCH_EN:1; // 0 Prefetch Enable
|
|
Uint16 DATA_CACHE_EN:1; // 1 Data Cache Enable
|
|
Uint16 rsvd1:14; // 15:2 Reserved
|
|
Uint16 rsvd2:16; // 31:16 Reserved
|
|
};
|
|
|
|
union FRD_INTF_CTRL_REG {
|
|
Uint32 all;
|
|
struct FRD_INTF_CTRL_BITS bit;
|
|
};
|
|
|
|
struct FLASH_CTRL_REGS {
|
|
union FRDCNTL_REG FRDCNTL; // Flash Read Control Register
|
|
Uint16 rsvd1[28]; // Reserved
|
|
union FBAC_REG FBAC; // Flash Bank Access Control Register
|
|
union FBFALLBACK_REG FBFALLBACK; // Flash Bank Fallback Power Register
|
|
union FBPRDY_REG FBPRDY; // Flash Bank Pump Ready Register
|
|
union FPAC1_REG FPAC1; // Flash Pump Access Control Register 1
|
|
Uint16 rsvd2[4]; // Reserved
|
|
union FMSTAT_REG FMSTAT; // Flash Module Status Register
|
|
Uint16 rsvd3[340]; // Reserved
|
|
union FRD_INTF_CTRL_REG FRD_INTF_CTRL; // Flash Read Interface Control Register
|
|
};
|
|
|
|
struct ECC_ENABLE_BITS { // bits description
|
|
Uint16 ENABLE:4; // 3:0 Enable ECC
|
|
Uint16 rsvd1:12; // 15:4 Reserved
|
|
Uint16 rsvd2:16; // 31:16 Reserved
|
|
};
|
|
|
|
union ECC_ENABLE_REG {
|
|
Uint32 all;
|
|
struct ECC_ENABLE_BITS bit;
|
|
};
|
|
|
|
struct ERR_STATUS_BITS { // bits description
|
|
Uint16 FAIL_0_L:1; // 0 Lower 64bits Single Bit Error Corrected Value 0
|
|
Uint16 FAIL_1_L:1; // 1 Lower 64bits Single Bit Error Corrected Value 1
|
|
Uint16 UNC_ERR_L:1; // 2 Lower 64 bits Uncorrectable error occurred
|
|
Uint16 rsvd1:13; // 15:3 Reserved
|
|
Uint16 FAIL_0_H:1; // 16 Upper 64bits Single Bit Error Corrected Value 0
|
|
Uint16 FAIL_1_H:1; // 17 Upper 64bits Single Bit Error Corrected Value 1
|
|
Uint16 UNC_ERR_H:1; // 18 Upper 64 bits Uncorrectable error occurred
|
|
Uint16 rsvd2:13; // 31:19 Reserved
|
|
};
|
|
|
|
union ERR_STATUS_REG {
|
|
Uint32 all;
|
|
struct ERR_STATUS_BITS bit;
|
|
};
|
|
|
|
struct ERR_POS_BITS { // bits description
|
|
Uint16 ERR_POS_L:6; // 5:0 Bit Position of Single bit Error in lower 64 bits
|
|
Uint16 rsvd1:2; // 7:6 Reserved
|
|
Uint16 ERR_TYPE_L:1; // 8 Error Type in lower 64 bits
|
|
Uint16 rsvd2:7; // 15:9 Reserved
|
|
Uint16 ERR_POS_H:6; // 21:16 Bit Position of Single bit Error in upper 64 bits
|
|
Uint16 rsvd3:2; // 23:22 Reserved
|
|
Uint16 ERR_TYPE_H:1; // 24 Error Type in upper 64 bits
|
|
Uint16 rsvd4:7; // 31:25 Reserved
|
|
};
|
|
|
|
union ERR_POS_REG {
|
|
Uint32 all;
|
|
struct ERR_POS_BITS bit;
|
|
};
|
|
|
|
struct ERR_STATUS_CLR_BITS { // bits description
|
|
Uint16 FAIL_0_L_CLR:1; // 0 Lower 64bits Single Bit Error Corrected Value 0 Clear
|
|
Uint16 FAIL_1_L_CLR:1; // 1 Lower 64bits Single Bit Error Corrected Value 1 Clear
|
|
Uint16 UNC_ERR_L_CLR:1; // 2 Lower 64 bits Uncorrectable error occurred Clear
|
|
Uint16 rsvd1:13; // 15:3 Reserved
|
|
Uint16 FAIL_0_H_CLR:1; // 16 Upper 64bits Single Bit Error Corrected Value 0 Clear
|
|
Uint16 FAIL_1_H_CLR:1; // 17 Upper 64bits Single Bit Error Corrected Value 1 Clear
|
|
Uint16 UNC_ERR_H_CLR:1; // 18 Upper 64 bits Uncorrectable error occurred Clear
|
|
Uint16 rsvd2:13; // 31:19 Reserved
|
|
};
|
|
|
|
union ERR_STATUS_CLR_REG {
|
|
Uint32 all;
|
|
struct ERR_STATUS_CLR_BITS bit;
|
|
};
|
|
|
|
struct ERR_CNT_BITS { // bits description
|
|
Uint16 ERR_CNT:16; // 15:0 Error counter
|
|
Uint16 rsvd1:16; // 31:16 Reserved
|
|
};
|
|
|
|
union ERR_CNT_REG {
|
|
Uint32 all;
|
|
struct ERR_CNT_BITS bit;
|
|
};
|
|
|
|
struct ERR_THRESHOLD_BITS { // bits description
|
|
Uint16 ERR_THRESHOLD:16; // 15:0 Error Threshold
|
|
Uint16 rsvd1:16; // 31:16 Reserved
|
|
};
|
|
|
|
union ERR_THRESHOLD_REG {
|
|
Uint32 all;
|
|
struct ERR_THRESHOLD_BITS bit;
|
|
};
|
|
|
|
struct ERR_INTFLG_BITS { // bits description
|
|
Uint16 SINGLE_ERR_INTFLG:1; // 0 Single Error Interrupt Flag
|
|
Uint16 UNC_ERR_INTFLG:1; // 1 Uncorrectable Interrupt Flag
|
|
Uint16 rsvd1:14; // 15:2 Reserved
|
|
Uint16 rsvd2:16; // 31:16 Reserved
|
|
};
|
|
|
|
union ERR_INTFLG_REG {
|
|
Uint32 all;
|
|
struct ERR_INTFLG_BITS bit;
|
|
};
|
|
|
|
struct ERR_INTCLR_BITS { // bits description
|
|
Uint16 SINGLE_ERR_INTCLR:1; // 0 Single Error Interrupt Flag Clear
|
|
Uint16 UNC_ERR_INTCLR:1; // 1 Uncorrectable Interrupt Flag Clear
|
|
Uint16 rsvd1:14; // 15:2 Reserved
|
|
Uint16 rsvd2:16; // 31:16 Reserved
|
|
};
|
|
|
|
union ERR_INTCLR_REG {
|
|
Uint32 all;
|
|
struct ERR_INTCLR_BITS bit;
|
|
};
|
|
|
|
struct FADDR_TEST_BITS { // bits description
|
|
Uint16 rsvd1:3; // 2:0 Reserved
|
|
Uint16 ADDRL:13; // 15:3 ECC Address Low
|
|
Uint16 ADDRH:6; // 21:16 ECC Address High
|
|
Uint16 rsvd2:10; // 31:22 Reserved
|
|
};
|
|
|
|
union FADDR_TEST_REG {
|
|
Uint32 all;
|
|
struct FADDR_TEST_BITS bit;
|
|
};
|
|
|
|
struct FECC_TEST_BITS { // bits description
|
|
Uint16 ECC:8; // 7:0 ECC Control Bits
|
|
Uint16 rsvd1:8; // 15:8 Reserved
|
|
Uint16 rsvd2:16; // 31:16 Reserved
|
|
};
|
|
|
|
union FECC_TEST_REG {
|
|
Uint32 all;
|
|
struct FECC_TEST_BITS bit;
|
|
};
|
|
|
|
struct FECC_CTRL_BITS { // bits description
|
|
Uint16 ECC_TEST_EN:1; // 0 Enable ECC Test Logic
|
|
Uint16 ECC_SELECT:1; // 1 ECC Bit Select
|
|
Uint16 DO_ECC_CALC:1; // 2 Enable ECC Calculation
|
|
Uint16 rsvd1:13; // 15:3 Reserved
|
|
Uint16 rsvd2:16; // 31:16 Reserved
|
|
};
|
|
|
|
union FECC_CTRL_REG {
|
|
Uint32 all;
|
|
struct FECC_CTRL_BITS bit;
|
|
};
|
|
|
|
struct FECC_STATUS_BITS { // bits description
|
|
Uint16 SINGLE_ERR:1; // 0 Test Result is Single Bit Error
|
|
Uint16 UNC_ERR:1; // 1 Test Result is Uncorrectable Error
|
|
Uint16 DATA_ERR_POS:6; // 7:2 Holds Bit Position of Error
|
|
Uint16 ERR_TYPE:1; // 8 Holds Bit Position of 8 Check Bits of Error
|
|
Uint16 rsvd1:7; // 15:9 Reserved
|
|
Uint16 rsvd2:16; // 31:16 Reserved
|
|
};
|
|
|
|
union FECC_STATUS_REG {
|
|
Uint32 all;
|
|
struct FECC_STATUS_BITS bit;
|
|
};
|
|
|
|
struct FLASH_ECC_REGS {
|
|
union ECC_ENABLE_REG ECC_ENABLE; // ECC Enable
|
|
Uint32 SINGLE_ERR_ADDR_LOW; // Single Error Address Low
|
|
Uint32 SINGLE_ERR_ADDR_HIGH; // Single Error Address High
|
|
Uint32 UNC_ERR_ADDR_LOW; // Uncorrectable Error Address Low
|
|
Uint32 UNC_ERR_ADDR_HIGH; // Uncorrectable Error Address High
|
|
union ERR_STATUS_REG ERR_STATUS; // Error Status
|
|
union ERR_POS_REG ERR_POS; // Error Position
|
|
union ERR_STATUS_CLR_REG ERR_STATUS_CLR; // Error Status Clear
|
|
union ERR_CNT_REG ERR_CNT; // Error Control
|
|
union ERR_THRESHOLD_REG ERR_THRESHOLD; // Error Threshold
|
|
union ERR_INTFLG_REG ERR_INTFLG; // Error Interrupt Flag
|
|
union ERR_INTCLR_REG ERR_INTCLR; // Error Interrupt Flag Clear
|
|
Uint32 FDATAH_TEST; // Data High Test
|
|
Uint32 FDATAL_TEST; // Data Low Test
|
|
union FADDR_TEST_REG FADDR_TEST; // ECC Test Address
|
|
union FECC_TEST_REG FECC_TEST; // ECC Test Address
|
|
union FECC_CTRL_REG FECC_CTRL; // ECC Control
|
|
Uint32 FOUTH_TEST; // Test Data Out High
|
|
Uint32 FOUTL_TEST; // Test Data Out Low
|
|
union FECC_STATUS_REG FECC_STATUS; // ECC Status
|
|
};
|
|
|
|
struct PUMPREQUEST_BITS { // bits description
|
|
Uint16 PUMP_OWNERSHIP:2; // 1:0 Flash Pump Request Semaphore between CPU1 and CPU2
|
|
Uint16 rsvd1:14; // 15:2 Reserved
|
|
Uint16 KEY:16; // 31:16 Key Qualifier for writes to this register
|
|
};
|
|
|
|
union PUMPREQUEST_REG {
|
|
Uint32 all;
|
|
struct PUMPREQUEST_BITS bit;
|
|
};
|
|
|
|
struct FLASH_PUMP_SEMAPHORE_REGS {
|
|
union PUMPREQUEST_REG PUMPREQUEST; // Flash programming semaphore PUMP request register
|
|
};
|
|
|
|
//---------------------------------------------------------------------------
|
|
// FLASH External References & Function Declarations:
|
|
//
|
|
#ifdef CPU1
|
|
extern volatile struct FLASH_PUMP_SEMAPHORE_REGS FlashPumpSemaphoreRegs;
|
|
extern volatile struct FLASH_CTRL_REGS Flash0CtrlRegs;
|
|
extern volatile struct FLASH_ECC_REGS Flash0EccRegs;
|
|
#endif
|
|
#ifdef CPU2
|
|
extern volatile struct FLASH_PUMP_SEMAPHORE_REGS FlashPumpSemaphoreRegs;
|
|
extern volatile struct FLASH_CTRL_REGS Flash0CtrlRegs;
|
|
extern volatile struct FLASH_ECC_REGS Flash0EccRegs;
|
|
#endif
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* extern "C" */
|
|
|
|
#endif
|
|
|
|
//===========================================================================
|
|
// End of file.
|
|
//===========================================================================
|