每只CH549/CH548出厂时都具有唯一 ID 号,即芯片身份识别号。该 ID 数据及其校验和共 8 个字节,存储于只读信息区域的偏移地址为 10h 的区域中。
只读信息区域存放在0xF000~0xF3FF共1KB的Data Flash空间。CH549/CH548的只读信息区域只占32字节,即0xF000~0xF01F。操作时许:
(1)、设置地址寄存器 ROM_ADDR,写入按 4 字节对齐的目标地址(00h~3Fh),实际仅低 6 位有效;
(2)、设置操作控制寄存器 ROM_CTRL 为 08Dh,执行读操作,操作期间程序自动暂停运行;
(3)、操作完成后程序恢复运行,此时查询状态寄存器 ROM_STATUS 可以查看此次操作状态;
(4)、从 flash-ROM 数据寄存器 ROM_DATA_HI 和 ROM_DATA_LO 中获得 4 字节数据。
#define ROM_CMD_RD_OTP 0x8D // WriteOnly: OTP area dword read operation command
uint32_t id[2];
ROM_ADDR = 0x10;
ROM_CTRL = ROM_CMD_RD_OTP;
id[0] = ROM_DATA_HI;
id[0] <<= 16;
id[0] |= ROM_DATA_LO;
ROM_ADDR = 0x14;
ROM_CTRL = ROM_CMD_RD_OTP;
id[1] = ROM_DATA_HI;
id[1] <<= 16;
id[1] |= ROM_DATA_LO;
注意,这里的地址只要偏移地址即可。