zhangbo
2025-03-07 b8fac32aed712a3e0e87cea99b9c6d5ef5e12d2b
keil/include/drivers/mk_efuse.c
@@ -107,11 +107,11 @@
void efuse_read_block(uint16_t byte_addr_start, uint16_t byte_len, uint8_t *buf)
{
    ASSERT(byte_addr_start + byte_len < 128, "The operation address is over range");
    ASSERT(byte_addr_start + byte_len <= 128, "The operation address is over range");
    ASSERT(buf != NULL, "The read buffer pointer is null");
    EFUSE_CTRL->ADDR = EFUSE_ADDR_BYTE_ADDR(byte_addr_start);
    EFUSE_CTRL->LENGTH = byte_len;
    EFUSE_CTRL->LENGTH = byte_len - 1;
    EFUSE_CTRL->CTRL = EFUSE_CTRL_ACCESS_EN_MSK | EFUSE_CTRL_ACCESS_MODE(EFUSE_LOAD_BLOCK);
    while (EFUSE_CTRL->SEQUENCE_CNT & EFUSE_SEQUENCE_CNT_BUSY_MSK)
    {
@@ -181,7 +181,7 @@
        uint8_t val = REG_READ_BYTE(EFUSE_SHADOW_BASE | byte_addr);
        REG_WRITE_BYTE(EFUSE_SHADOW_BASE | byte_addr, (uint8_t)(val | (1 << (bit_offset & 0x7))));
        EFUSE_CTRL->ADDR = EFUSE_ADDR_BYTE_ADDR(byte_addr) | EFUSE_ADDR_BIT_OFFSET(bit_offset);
        EFUSE_CTRL->LENGTH = 1;
        EFUSE_CTRL->LENGTH = 0;
        EFUSE_CTRL->CTRL = EFUSE_CTRL_ACCESS_EN_MSK | EFUSE_CTRL_ACCESS_MODE(EFUSE_PROGRAM_BLOCK);
    }
    while (EFUSE_CTRL->SEQUENCE_CNT & EFUSE_SEQUENCE_CNT_BUSY_MSK)