Drone
05-21-2008, 09:02 PM
Hello All...
I am trying to address a Silicon Labs (www.silabs.com (http://www.silabs.com)) Si570 LVDS clock generator (P/N 570CAC000141DG) via I2C. The part is on dedicated propeller pins with 10k pull-ups. I also have a 24LC256 EEPROM on the same bus.
The application is based on James Burrows's I2C demo object from ObEx, which uses a slightly modified version of Mike Green's Basic_I2C_Driver. The EEPROM's device address is 1010_0010, the Si570's address is 55h or 1010_101X per the I2C spec where the addresses are 7 digits left-justified and the LSB is the R/W bit. I used AAh or 1010_1010 for the I2C address in the propeller application.
I can write/read to/from the EEPROM just fine. At first I couldn't read the Si570 at the expected register locations of 7 through 12 decimal. So I did an I2C bus scan. I know what the startup values of registers 7 through 12 should look like. Voila, I found them via the bus scan. Here's what I found:
Reg, Addresses, Val
-------------------
R07, 600h-6FFh, E1h
R08, 700h-7FFh, C2h
R09, 800h-8FFh, 86h
R10, 900h-9FFh, 16h
R11, A00h-AFFh, A9h
R12, B00h-BFFh, 9Dh
Each register value appears for 256 bits of location range. Other users of this chip say this is wrong, I should read register 07 at location 07h, and register 12 at Ch. I've looked at the Si570's ANSI C reference software for 8051 from Silicon Labs, that code seems to confirm the register locations are one-to-one with the register number.
But with propeller, not only am I seeing the registers at much higher locations, even the "alignment" of the registers seems off by at least one in the MSBs! When I read and write to the EEPROM, the data and locations are as expected - unlike the Si570.
The Si570 data sheet says the register location addresses auto-increment. Maybe this is causing it? I'm using one readByte per register.
I haven't tried writing to the Si570 yet, I would like to get this read problem fixed first.
Has anyone seen this before? Any suggestions? This is the first time I've dealt with I2C. I have read the NXP I2C manual, but the act of reading doesn't always guarantee complete absorption!
Thanks & Best Regards,
David
Post Edited (Drone) : 5/21/2008 4:06:46 PM GMT
I am trying to address a Silicon Labs (www.silabs.com (http://www.silabs.com)) Si570 LVDS clock generator (P/N 570CAC000141DG) via I2C. The part is on dedicated propeller pins with 10k pull-ups. I also have a 24LC256 EEPROM on the same bus.
The application is based on James Burrows's I2C demo object from ObEx, which uses a slightly modified version of Mike Green's Basic_I2C_Driver. The EEPROM's device address is 1010_0010, the Si570's address is 55h or 1010_101X per the I2C spec where the addresses are 7 digits left-justified and the LSB is the R/W bit. I used AAh or 1010_1010 for the I2C address in the propeller application.
I can write/read to/from the EEPROM just fine. At first I couldn't read the Si570 at the expected register locations of 7 through 12 decimal. So I did an I2C bus scan. I know what the startup values of registers 7 through 12 should look like. Voila, I found them via the bus scan. Here's what I found:
Reg, Addresses, Val
-------------------
R07, 600h-6FFh, E1h
R08, 700h-7FFh, C2h
R09, 800h-8FFh, 86h
R10, 900h-9FFh, 16h
R11, A00h-AFFh, A9h
R12, B00h-BFFh, 9Dh
Each register value appears for 256 bits of location range. Other users of this chip say this is wrong, I should read register 07 at location 07h, and register 12 at Ch. I've looked at the Si570's ANSI C reference software for 8051 from Silicon Labs, that code seems to confirm the register locations are one-to-one with the register number.
But with propeller, not only am I seeing the registers at much higher locations, even the "alignment" of the registers seems off by at least one in the MSBs! When I read and write to the EEPROM, the data and locations are as expected - unlike the Si570.
The Si570 data sheet says the register location addresses auto-increment. Maybe this is causing it? I'm using one readByte per register.
I haven't tried writing to the Si570 yet, I would like to get this read problem fixed first.
Has anyone seen this before? Any suggestions? This is the first time I've dealt with I2C. I have read the NXP I2C manual, but the act of reading doesn't always guarantee complete absorption!
Thanks & Best Regards,
David
Post Edited (Drone) : 5/21/2008 4:06:46 PM GMT