This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

RM48L952: F021 Flash Module Controller Register inconsistency

Part Number: RM48L952

Hello Ti,

the RM48 has 3 banks (Flash bank 0, Flash bank 1 and Flash bank 7 (Eeprom)). I wanted to check the content  of Flash Bank Access Control Register (= FFF8 703Ch) in conjunction with the Flash Bank Sector Enable Register (= FFF8 7034h)

According to the TRM, the "FBSE provides one enable bit per sector for up to 16 sectors per bank. Each bank in the Flash module has one FBSE register. The bank is selected via the BANK[2:0] bits of the FMAC register. As only one bank at a time can be selected by FMAC, only the register for the bank selected appears at this address." The current content of FBSE is "0x800" which is sector 11. According to the TRM, a "1" means that the "corresponding numbered sector is enabled for program or erase access". As the TRM clearly says I need to evaluate Flash Module Access Control Register (FMAC) as well, I took a look into the current content of the FMAC Register which is = 0xF. So it tellls me that Bank 7 (Eeprom) is active and sector 11 is enabled for earase/program. At least for the EEPROM is was expecting to have a value range of 4 bits as the EEPROM has only 4 sectors. 

How can I map sector 11 to the Eeprom or in other words what is the meaning of FMAC-Register having the value (=0xF) and FBSE-Register having the following content (=0x800)? How can I interpret this setup?

  • Hello Mux,

    Please use F021 Flash API to enable flash bank and sector.

    Fapi_setActiveFlashBank((Fapi_FlashBankType)i);
    Fapi_enableMainBankSectors(0xFFFF);

  • Hello QJ Wang,

    thanks for your reply. Our  bootloader is already utilizing TI F021 API in order to write into the flash bank 0 and flash bank 1 which running fine so far. The Eeprom has been integrated (TI Fee Driver) newly to store some temperature data in it and it is used during runtime. But my findings and your statement are a little bit contradictional as I thought everything regarding the Eeprom is initialized with the TI_Fee_Init() call. In general, it seems to be somehow inconsistent to have bank7 active (eeprom) (FMAC-Register (=0xF)) and FBSE-Register (=0x800) during runtime, as the flash bank 7 only have 4 sectors.

    What is goining wrong here ?

    Can you please tell me if I have missed some steps or if the Ti_Fee_Main is insufficient to initialize the EEPROM ?

  • Hello Mux,

    The default values of FBSE (0x34) and FMAC (0x50) after reset are zero. No sector is enabled for program/erase at default. The user has to program those registers correctly before doing program/erase operation to those sectors.

    If you want to use EEPROM (bank 7):

    1. Program FMAC with 0x7

    2. Program FBSE with 0x4

    To intialize the FEE, please use TI_Fee_Init()

  • Hello QJ Wang,

    Where is step 1 and step 2 located?

    Do you treat those steps independently before calling TI_Fee_Init() or does TI_Fee_Init() covers the steps you have mentioned above?

  • Hello,

    Step 1 and Step 2 are embedded in F021 Flash APIs:  Fapi_setActiveFlashBank(..), and Fapi_enableMainBankSectors(..).

    Those two APIs are also called in TI_Fee_Init() to enable the bank 7 and sectors of bank 7.