News:

Attention: For security reasons,please choose a user name *different* from your login name.
Also make sure to choose a secure password and change it regularly.

Main Menu

TEBF0808 carrier board

Started by Aye_yanrong@yahoo.com.sg, July 27, 2019, 08:27:45 AM

Previous topic - Next topic

Aye_yanrong@yahoo.com.sg

Hi,

Recently we bought the TEBF0808 carrier board with TE808+SOM.

I wrote baremetal i2c  code to write to U27. Manage to write to Si5345 PLL and change the output frequency successfully.

Now i want to control SFP signals. I write to U16 with addr 0x73, data 0x02 to turn on the path to sfp. Then i write to U44 with addr 0x26. In order to control SFP1 RS0, RS1 and SFP2 RS0, RS1, i write i2c addr 0x26, reg addr 0xC3, data 0xFF. But when i probe U44 pins, RS0 and RS1 never change. Note that i have inserted a coaxial transceiver module to SFP1.

Is the sequence correct for i2c code? I2c addr=0x26, Reg addr=0xC3, Data=0xFF? How to control U44 on carrier board?

Regards
Ye

JH

Hi,
did you changed U16 I2C mux?

Do you get response from the I2C IO expander?
0x26 is correct for the PCF8574: http://www.ti.com/lit/gpn/pcf8574
Do you use supported I2C clk frequency? --Datasheet max 100kHz

br
John

Aye_yanrong@yahoo.com.sg

Hi John,

I use i2c clk freq at 100KHz and also configure U16 with i2c addr=0x73 and data=0x3. I can change clock freq on U35(Si5338) as well. So I think the path has turn on for SFP.

Yes I can read I2C IO expander register value. I have inserted an optical transceiver module on the SFP cage.

But I think is ok now since I can transmit 12G SDI signal on the SFP cage using the optical transceiver even I cannot set the bandwidth on RS0 and RS1 signals.


Regards
YE

JH

Hi,
did you write 2 bytes? See page 13 figure 16:
http://www.ti.com/lit/gpn/pcf8574

br
John

Aye_yanrong@yahoo.com.sg

Hi John.

So if I write i2c addr=0x26, Reg addr=0x00, data=0xFF to set SFP1/SFP2 RS0 and RS1 to logic '1', is this correct?

I2c IO expander Bit 2, 3, 4, 5 set to logic '1'

Regards
YE

JH

Hi,
can you do following.
Use our reference design with linux (prebuild Boot.bin and image.ub are include) and start it from SD
on linux, type:

  • i2cdetect -y -r 2
  • i2cget -y -2 0x26
  • i2cget -y -2 0x26 0x1c
  • i2cget -y -2 0x26

You should see following:

root@petalinux:~# i2cdetect -y -r 2                             
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- 26 -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- UU -- -- -- UU                         
root@petalinux:~# i2cget -y 2 0x26
0xff
root@petalinux:~# i2cget -y 2 0x26 0x1c                           
0x1c
root@petalinux:~# i2cget -y 2 0x26                                 
0x1c
root@petalinux:~#



Does it work on your place?

i2cget is used to read and to write into I2C expander. I2Cget with device address read the current setup. On I2Cget with device address and register address, register address is interpreted as data by the I2C expander.
br
John

Aye_yanrong@yahoo.com.sg

Hi John,

I get the same results as you when the optical transceiver is not installed inside the SFP1/SFP2 cage.

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- 26 -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- UU -- -- -- UU
root@petalinux:~# i2cget -y 2 0x26
0xff
root@petalinux:~# i2cget -y 2 0x26 0x1c
0x1c
root@petalinux:~# i2cget -y 2 0x26
0x1c
root@petalinux:~#

When I install the 2 optical transceiver inside the cage, the results are below

PetaLinux 2018.3 petalinux /dev/ttyPS0

petalinux login: root
Password:
root@petalinux:~# i2cget -y 2 0x26
0x20
root@petalinux:~# i2cget -y 2 0x26 0x3c
0x20
root@petalinux:~# i2cget -y 2 0x26
0x20
root@petalinux:~#

Looks like the i2c IO expander do not have the drive strength.

Regards
YE

JH

Hi,
so when both SFP are open and you write 0x3C, you see 0x3C, correct?
On SFP0 and SFP1 you get different RS value(your read 0x20), so you has connected different SFP cable or loopback adapter?

Did you check datasheet of your cable/adapter, if RS is implemented. Many cable didn't implement RS and add only pulldown.
RS is normally optional and not needed

br
John

Aye_yanrong@yahoo.com.sg

Hi John,

Yes, correct. Without the SFP module, it is ok.

Yes, I am using 2 different optical transceiver module.

I have try to transmit 12Gbit/s SDI video signal on SFP1/SFP2 cage using the optical transceiver and able to see the video output at 12G.

So I assume RS signals are not relevant in this case for high bandwidth data. Thank you very much.

Regards
YE