This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
How could I set the I2C address of an LMK5C33216? I see the programming guide mentions to writing to SRAM at address 12 - how would I go about setting the I2C address?
For more background, I have tried writing 0x00 to the LMK5C33216 at address 0x12 and reading back the value at 0x12. However, the value at address 0x12 is 0x19 after the write command.
Hi Chase,
You must use the SRAM Direct Write Method , please refer to this PDF for further guidance. Does this help?
Programming LMK5Cxxxxx, LMK5Bxxxxx_Nov32023.pdf
Regards,
Jennifer
Jennifer,
The SRAM Direct Write Method seems to be exactly what I am looking for!
However, when I try to write to the registers described in the SRAM Direct Write Method (under the Example for updating the EEREV), the registers are not updating the way I would expect. Here is a list of the registers I wrote, along with a read of each register after the write (note, some reads do not match the writes).
write (0x14) = 0x80
read (0x14) = 0x80
write (0xAB) = 0x40
read (0xAB) = 0x00
write (0xAD) = 0x00
read (0xAD) = 0x00
write (0xAE) = 0x0D
read (0xAE) = 0x00
write (0xB0) = 0x02
read (0xB0) = 0x02
write (0xB4) = 0xEA
*no read, to eliminate register transactions between writing to 0xB4 and 0xAB
write (0xAB) = 0x03
read (0xAB) = 0x07
* wait 500ms
write (0xB4) = 0x00
read (0xB4) = 0x00
read (0x13) = 0x00 (expected 0x02)
I would have expected the last read of 0x13 to return 0x02, but it returned 0x00. I would have also expected each of my reads to match the values to wrote to each register.
Is there another set of register writes I need to perform to enable writing to these registers?
I see a note in the LMK5c33216 Programming Guide to toggle PD# before changing the NVM profile to assure default conditions. Is it possible to toggle PD# via a register write?
Hi Chase,
PD# can be toggled through physical pin if you're using EVM or through TICS Pro software:
I will look into the programming and get back to you next week.
-Riley
Hi Riley,
Thanks for the suggestion on toggling PD# and looking into the programming. I am working with a LMK5c33216 chip that is built into a PCB, so I will not be able to use the TICS Pro software.
I will be relying on reading/writing registers to program this chip, so figuring out how to set the i2c address register writes seems like the way to go.
Thanks,
Chase
Update: For debugging, I am now using the TICS Pro software with the LMK5C33216EVM (this is my first time using TICS Pro). I have tried programming the i2c address on the evaluation board, but I am also seeing R18 stuck at the value 0x19.
How can I use the SRAM Direct Write Method on TICS Pro?
Hi Chase,
Writing to registers through SRAM Direct method requires power cycle for the write to take effect and reflect on register read back. Some registers are self-clear which return a different value than what being written.
I2C address must be updated with SRAM method that you can update each registers as shown in the guide line through Raw Register page on TICS Pro
Make sure to turn off AutoUpdate so the register bit doesn't write every time you update 0/1.
After write register and power cycle the device, you can also read all registers and check from EEPROM page that NVM Count +1 and I2C MSB change. I have tested with writing EEREV (R19) and saw it updated to the written value.
Let me know if that works for you.
-Riley
I attempted to change the EEREV (R19) value without success.
Here are the steps I used:
1) Verify EEREV is 0 by checking the EEPROM Status and 0x13 Raw Register
2) write (0x14) = 0x80
3) write (0xAB) = 0x40 (note the red text - I wonder if this value successfully wrote)
4) write (0xAD) = 0x00
5) write (0xAE) = 0x0D
6) write (0xB0) = 0x02 (note the red text - I wonder if this value successfully wrote)
7) write (0xB4) = 0xEA
8) write (0xAB) = 0x03
9) write (0xB4) = 0x00
10) Power Cycle
11) Run Read Register on x001300
12) Run "Read EEPROM/NVM Status"
13) Check EEREV number in the register map (0x0013) and EEPROM Status Section
I would have expected the value of 0x0013 to be 0x02 and the EEREV to be 2. Did I miss something in the SRAM Direct Method steps?
Hi Chase,
Sorry I should've been more clear on steps here. Currently the GUI write has an error in address masking so writing data through the box isn't update the register (could either show red or black color). You could also see if the write is updated through log box at the bottom left of the GUI.
Please write registers in this way:
- turn off "AutoUpdate"
- follow the guideline for SRAM write to update registers for each step by writing 0/1 directly to register bits 0-7
- press "Write Register" (under the data box) to update write the current register
- check the log box to see the register's value updated
One good practice before writing register is power cycle then read back all registers so that all registers are updated on GUI.
-Riley
Riley,
I was able to update the I2C address register (R18 at address 0x0012) by the method you recommended!
For anyone looking at this in the future, after following the method Riley described and power cycling, I had to run "Scan I2C Bus" before reading register 0x0012, in order for the new value at 0x0012 to show up.
Is there any way to write to 0x0012 (and all other EEPROM registers) without power cycling (and not interrupting the clocks)?
I would like to "sanitize" the LMK5c33216, as described here: e2e.ti.com/.../lmk5c33216-eeprom-live-programming
Hi Chase,
"Read All Regs" or "Read EEPROM/NVM Status" would update the state of NVM/EEPROM
With SRAM method, you can write all registers needed without disrupting the running clocks. After all registers being written, they will get translated to EEPROM which takes effect in the next power cycle. Meaning you write all registers to SRAM at once and do 1 power cycle for all registers to update.
-Riley