*************Programming termination ******************
# Disable OTP programming – Set OTP_PROG_EN to 0 (OTP writes ignored)
writeReg("OTP_CONTROL1", 0x0418)
If the internal programming supply is used, disable the internal LDO regulator using OTP_LDO_EN. If the internal
regulator is not used, disable the external OTP programming supply to VDD_OTP.
# Set OTP_LDO_EN to 0 (Disabled)
writeReg("OTP_VDD_CTRL", 0x0008)
wait 100 us
Disable the OTP programming supply.
# Set OTP_VDD_EN to 0 (Disabled)
writeReg("OTP_VDD_CTRL", 0x0000)
wait 500 us
If the internal programming supply is used, the LDO regulator output discharge path should be momentarily enabled for a
period of at least two seconds.
# Set OTP_LDO_DISCH_ EN to 1 (Enabled)
writeReg("OTP_VDD_CTRL", 0x0002)
wait 2000 us
# Set OTP_LDO_DISCH_ EN to 0 (Disabled)
writeReg("OTP_VDD_CTRL", 0x0000)
wait 100 us
# Lock User key
writeReg("USER_KEY_REG", 0x0000)
Stage 3. Verification of image file settings
# Software reset. Write 0x5A to execute a software reset.
writeReg("SW_RESET", 0x005A)
wait 500 us
# Read back from register addresses 0x2300 to 0x232E and verify with image file register addresses 0x2340 to 0x236E
for each of the 24 address/data pairs:
value = readReg(address)
if (value != data)
{
print ("Error: data mismatch at 'address'. Read 'value', expected 'data'.")
exit()
}
AN0650R1
Cirrus Logic
©
Copyright
2024 Cirrus Logic, Inc. and Cirrus Logic International Semiconductor Ltd.
AN0650
19
Need help?
Do you have a question about the CS2600 and is the answer not in the manual?
Questions and answers