Files
microchip-application-pec93…/Examples/flash/flash_status_flags/readme.md
T
2026-02-03 11:37:13 +08:00

2.7 KiB

flash_status_flags

This example is used to observe the staust register of FMC

For generating the wrong behavior, directly control the registers of FMC

It observes 4-cases

  • Normal case with CMD end
  • Wrong address (over range of device)
  • Miss unlock sector of flash
  • Use wrong auth-key to operate flash

Log

Use serial port with baudrate 115200, 8bit, no parity check.

16:17:42
Observe the error status of FMC with wrong behavior

## Case: CMD end flag

@ target address: x00004000
  ======= FMC Regs ====
    FLASH->CMD = xA5A50123
    FLASH->ISR = x00000000
    FLASH->AR  = x00004000
    FLASH->DR  = xFFFFFFFF
    FLASH->ACM = x00000000
    FLASH->DIV = x00000030
  --- After FMC idle ----
  FLASH->ISR: 0x00000001, CMD_END= 1, KEY_ERR= 0, ACC_ERR=0, ADDR_ERR= 0

@ target address: x00200800
  ======= FMC Regs ====
    FLASH->CMD = xA5EC0123
    FLASH->ISR = x00000000
    FLASH->AR  = x00200800
    FLASH->DR  = x11223344
    FLASH->ACM = x00000000
    FLASH->DIV = x00000030
  --- After FMC idle ----
  FLASH->ISR: 0x00000001, CMD_END= 1, KEY_ERR= 0, ACC_ERR=0, ADDR_ERR= 0

## Case: Address error flag

@ target address: x00008200
  ======= FMC Regs ====
    FLASH->CMD = xA5A50123
    FLASH->ISR = x00000008
    FLASH->AR  = x00000200
    FLASH->DR  = x11223344
    FLASH->ACM = x00000000
    FLASH->DIV = x00000030
  --- After FMC idle ----
  FLASH->ISR: 0x00000008, CMD_END= 0, KEY_ERR= 0, ACC_ERR=0, ADDR_ERR= 1

@ target address: x00202200
  ======= FMC Regs ====
    FLASH->CMD = xA5EC0123
    FLASH->ISR = x00000008
    FLASH->AR  = x00202200
    FLASH->DR  = x11223344
    FLASH->ACM = x00000000
    FLASH->DIV = x00000030
  --- After FMC idle ----
  FLASH->ISR: 0x00000008, CMD_END= 0, KEY_ERR= 0, ACC_ERR=0, ADDR_ERR= 1

## Case: Access error flag

@ target address: x00004000
  ======= FMC Regs ====
    FLASH->CMD = xA5A50023
    FLASH->ISR = x00000000
    FLASH->AR  = x00004000
    FLASH->DR  = x11223344
    FLASH->ACM = x00000000
    FLASH->DIV = x00000030
  --- After FMC idle ----
  FLASH->ISR: 0x00000004, CMD_END= 0, KEY_ERR= 0, ACC_ERR=1, ADDR_ERR= 0

## Case: Key error flag

@ target address: x00004000
  ======= FMC Regs ====
    FLASH->CMD = xA5EC0123
    FLASH->ISR = x00000000
    FLASH->AR  = x00004000
    FLASH->DR  = x11223344
    FLASH->ACM = x00000000
    FLASH->DIV = x00000030
  --- After FMC idle ----
  FLASH->ISR: 0x00000002, CMD_END= 0, KEY_ERR= 1, ACC_ERR=0, ADDR_ERR= 0

@ target address: x00200800
  ======= FMC Regs ====
    FLASH->CMD = xA5A50123
    FLASH->ISR = x00000000
    FLASH->AR  = x00200800
    FLASH->DR  = x11223344
    FLASH->ACM = x00000000
    FLASH->DIV = x00000030
  --- After FMC idle ----
  FLASH->ISR: 0x00000002, CMD_END= 0, KEY_ERR= 1, ACC_ERR=0, ADDR_ERR= 0