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.

TMS320f28335 write into flash memory.

Hello,

I want to write 256 uint16 values into flash memory SECTOR_B using Flash2833x_API_ReadWrite() library.

It is possible to write so many values without damaging any code or data.

Until which address I can write on SECTOR_B.

Thanks,

Paul.

  • Hi Paul,

    Here's the flash structure for F28335:

    It is possible to write so many values without damaging any code or data.

    256 uint16 values : for sure, you should be able to write them. Do try and let me know.

    Until which address I can write on SECTOR_B.

    You can utilize the complete range: 0x33 0000 - 0x33 7FFF

    Regards,

    Gautam

  • Hello Gautam,

    I have tried the Flash library with Flash2833x_API_ReadWrite function :

    - First call for deleting Sector_B:

    Flash2833x_API_ReadWrite(SECTOR_B, 0U, FLASH_ERASE , (uint16_T *)Buffer_Data,
    No_data_Lenght[0]);

    - Second call for writing my data into Sector_B:

    Flash2833x_API_ReadWrite(SECTOR_B, 0U, FLASH_WRITE , (uint16_T *)Buffer_Data,
    2* No_data_Lenght[0]);

    For 3,10 values works fine, but for 20 values gets stucked in the erasing part, and I don't n know why. 

    Any suggestion ?

    Best Regards,

    Paul.

  • Hi Paul,

    What is you application or in short what do you want to achieve by writing these variables to a different sector of that of the code sector?

    If storing, updating and retrieving these variables is the only purpose then why not use "Emulating EEPROM" Guide?

    4073.EEPROM Emulation.pdf

    Regards,

    Gautam

  • Hello Gautam,

    I have managed to write 256 values into SECTOR_B with this modifications (bold):

    DINT;

    Flash2833x_API_ReadWrite(SECTOR_B, 0U, FLASH_ERASE , (uint16_T *)Buffer_Data,
    No_data_Lenght[0]);

    Flash2833x_API_ReadWrite(SECTOR_B, 0U, FLASH_WRITE , (uint16_T *)Buffer_Data,

    2* No_data_Lenght[0]);

    EINT;

    I presume it is ok to disable all interrupts during erase/write process...

    Thanks,

    Paul.

  • That's great, Paul. Yup, its fine to disable interrupts while writing but I also hope due to this delay there's no other critical task waiting to get the cpu time!

    Regards,

    Gautam