Hi,
This is my first attempt with the THS788.
I am providing a clean 200 MHz clock to the device (measured with 1G scope)
When i initialize the THS788, i notice that the two DLL does not lock. (i wait about 500ms at start up, after reset)
Here is the result of the start sequence (sent via a UART port)
Init THS788...
id = 8010
status = 1
ctrl = 0
wriring 2 to ctrl (0x80)
ctrl = 0
status = 1
wriring A000 to ctrl (0x80)
ctrl (0x80) = A000
ctrl (0x81) = 0
status = 1
So, i can read the ID correctly. I issue a software reset (by wriring to 2 to Ctrl register), then i write 0xA000 to enable RCLK and SYNC (i've seen that on another thread).
However, the problem is, the status always returns 1, shouldn't it return 0xD, or at least 0x9 ?
Why does the 1G2 DLL won't lock... is there any way to verify that?
I am using DS4M200 from Maxim to generate the 200MHz clock..
if this can help, here is the init sequence code:
ths_read_reg(0x83,(uint8_t*)&id); debug("id = "); put_n(id,16); debug("\n\r"); ths_read_reg(0x82,(uint8_t*)&status); debug("status = "); put_n(status,16); debug("\n\r"); ths_read_reg(0x80,(uint8_t*)&ctrl); debug("ctrl = "); put_n(ctrl,16); debug("\n\r"); ctrl = (1<<1) ; debug ("wriring "); put_n(ctrl,16); debug (" to ctrl (0x80)\n\r"); ths_write_reg(0x80,(uint8_t*)&ctrl); DelayMs(50); ths_read_reg(0x80,(uint8_t*)&ctrl); debug("ctrl = "); put_n(ctrl,16); debug("\n\r"); DelayMs(250); ths_read_reg(0x82,(uint8_t*)&status); debug("status = "); put_n(status,16); debug("\n\r"); ctrl = (1<<15) | (1 << 13); debug ("wriring "); put_n(ctrl,16); debug (" to ctrl (0x80)\n\r"); ths_write_reg(0x80,(uint8_t*)&ctrl); ths_read_reg(0x80,(uint8_t*)&ctrl); debug("ctrl (0x80) = "); put_n(ctrl,16); debug("\n\r"); ths_read_reg(0x81,(uint8_t*)&ctrl); debug("ctrl (0x81) = "); put_n(ctrl,16); debug("\n\r"); DelayMs(250); ths_read_reg(0x82,(uint8_t*)&status); debug("status = "); put_n(status,16); debug("\n\r");
Any ideas?
Thanks a lot,