我们有两种方式可以操作Flash,第一种可以使用ROM中的Flash API,第二种可以使用底层驱动库。
(1)ROM中的Flash API:
- NVM_STATUS _NvmErase (uint32_t * PageAddr)
- NVM_STATUS _NvmProgVerify(uint32_t * DataAddr, uint32_t *FlashAddr)
_NvmErase()的地址位于0x00000100,功能是擦除一页。
_NvmProgVerify()的地址位于0x00000104,功能是先擦除(如有必要),再写一页,所以这个函数只能写一页,不能单独写一个Block。
利用这两个API操作Flash的例程见6_1_XMC1000_Flash_BIROM.zip
(2)利用LLD操作Flash:
- void XMC_FLASH_ErasePages(uint32_t *address, uint32_t num_pages);
- void XMC_FLASH_WriteBlocks(uint32_t *address, const uint32_t*data, uint32_t num_blocks, bool verify);
XMC_FLASH_ErasePages()用于擦除多个页,XMC_FLASH_WriteBlocks()用于擦除多个Block.
我们有两种方式可以操作Flash,第一种可以使用ROM中的Flash API,第二种可以使用底层驱动库。
(1)ROM中的Flash API:
- NVM_STATUS _NvmErase (uint32_t * PageAddr)
- NVM_STATUS _NvmProgVerify(uint32_t * DataAddr, uint32_t *FlashAddr)
_NvmErase()的地址位于0x00000100,功能是擦除一页。
_NvmProgVerify()的地址位于0x00000104,功能是先擦除(如有必要),再写一页,所以这个函数只能写一页,不能单独写一个Block。
利用这两个API操作Flash的例程见6_1_XMC1000_Flash_BIROM.zip
(2)利用LLD操作Flash:
- void XMC_FLASH_ErasePages(uint32_t *address, uint32_t num_pages);
- void XMC_FLASH_WriteBlocks(uint32_t *address, const uint32_t*data, uint32_t num_blocks, bool verify);
XMC_FLASH_ErasePages()用于擦除多个页,XMC_FLASH_WriteBlocks()用于擦除多个Block.
举报