Hi guys,
My design utilizes an LMX2492 evaluation module to to control an external VCO circuit. The trouble I am having does not involve the VCO or any kind of filtering, but rather the microWire interface. In the datasheet it addresses how to write to the registers. Simply send 16 bits to define the address followed by 8 bits that you would like to load into the register at that address. I have probed the microWire header with a logic analyzer and verified this
(write) protocol. The problem comes when I try to setup readback from PLL to identify and verify what is in each register. The user guide specifies how to do this:
"Note that position 3 is MUXout, which can be used for readback. In order to do this, the MUXout pin needs to be programmed to Readback and also resistor R68 needs to be placed."
I followed these instructions. I populated R68 and using the CodeLoader software I set MUXout_MUX=Output Readback and set MUXout_PIN=Output - PP. Using the CodeLoader software to read from a register, I do not see any activity on the MUXout pin (or any of the pins besides Data, Clock, and LE). After pressing the read button next to a register, it displays it as 0x18. If I press read again, it displays the register as having the value 0x00. If I continue to press it, that value remains.
On another note regarding the readback issues: If I load a value into the register (again using the CodeLoader software) and then attempt to read it back, it never shows me the value I typed in. Typically it will either show 0x00 or 0x18.
What values must be sent to read a register? When I probe the Data pin while pressing the read button for a register (using CodeLoader) I see the following:
After a read command (for register 0x15), it seems to send one clock (1 data bit = 0) followed by a delay. After the delay, the is a transmission of 24 bits.
This is close up of the initial clock signal.
This is a close up of the 24 bit transmission following the delay. It is equal to 0x801500. Am I correct in assuming that the (read) protocol is to send a single low bit, then to wait for a certain period of time, then to send 24 bits with the leading bit being high and the following bits being used to specify the register that we would like to read from? Should the final byte always be 0x00? Should the value of the register be seen on the MUXout pin following this command?
My questions are as follows:
- Does it sound like I have things configured properly to read the registers?
- Should I be seeing activity on the MUXout pin when the PLL is reading back?
- After the PLL is setup to readback, how does the microWire device request the values of certain registers?
Thanks for your help! Please let me know if I need to elaborate on any details about the problem.
Regards, Jack