Part Number: DS90UB960-Q1
Other Parts Discussed in Thread: ALP
Hi Ti team,
We want to increase the communication rate of the I2C link. And tried to add these commond:
board.WriteI2C(devAddr,0x02,0x3E) #Enable Proxy
board.WriteI2C(devAddr,0x0A,0x13)
board.WriteI2C(devAddr,0x0B,0x25)
board.WriteI2C(serAlias[i],0x0B,0x13)
board.WriteI2C(serAlias[i],0x0C,0x26)
But it seems to have affected the accuracy of communication.
So you can help confirm and inform us of the correct way to configure it?
We want to use fast and also fast-plus I2C MODE, can you give the two configuration to us?
Below is the configuration we use now:
# Fill in I2C addresses and aliases
devAddr = 0x7A # 960 deserializer 8-bit I2C address
serAddr = [0x30,0x30,0x30,0x30] # 953 serializer 8-bit I2C addresses connected to 960 RX port0, port1, port2, port3
serAlias = [0x1A,0x2A,0x3A,0x4A] # 8-bit I2C aliases to read/write serializers connected to 960 RX port0, port1, port2, port3
imgAddr = [0x20,0x20,0x20,0x20] # imager 8-bit I2C addresses connected to 960 RX port0, port1, port2, port3
imgAlias = [0x20,0x22,0x24,0x26] # 8-bit I2C aliases to read/write imagers connected to 960 RX port0, port1, port2, port3
ispAddr = [0x78,0x78,0x78,0x78] # ISP 8-bit I2C addresses connected to 960 RX port0, port1, port2, port3
ispAlias = [0x40,0x42,0x44,0x46] # 8-bit I2C aliases to read/write ISPs connected to 960 RX port0, port1, port2, port3
import time
board.WriteI2C(devAddr,0x02,0x3E) #Enable Proxy
for i in range(0,4):
if i==0:
board.WriteI2C(devAddr,0x4C,0x01) # select RX port 0
elif i==1:
board.WriteI2C(devAddr,0x4C,0x12) # select RX port 1
elif i==2:
board.WriteI2C(devAddr,0x4C,0x24) # select RX port 2
elif i==3:
board.WriteI2C(devAddr,0x4C,0x38) # select RX port 3
# auto ACK setup
board.WriteI2C(devAddr,0x5B,serAddr[i]+1) # set serializer address with freeze
board.WriteI2C(devAddr,0x5C,serAlias[i]+1) # set SER alias and auto ACK
board.WriteI2C(devAddr,0x58,0x7A) # Enable I2C passthrough with auto ACK, BC rate = 10Mbps
board.WriteI2C(devAddr,0x0A,0x13)
board.WriteI2C(devAddr,0x0B,0x25)
board.WriteI2C(serAlias[i],0x0B,0x13)
board.WriteI2C(serAlias[i],0x0C,0x26)
# 953 config
board.WriteI2C(serAlias[i],0x02,0x73) # continuous clock, 4 lanes
board.WriteI2C(serAlias[i],0xE,0xF0) # disable 935 GPIO0 input and enable output
board.WriteI2C(serAlias[i],0xD,0x10) # Enable remote Des GPIO0 data on local GPIO0; Pull down gpio2(ISP RESET)
board.WriteI2C(serAlias[i],0x03,0x12) # MODE override async external clock
board.WriteI2C(serAlias[i],0x01,0x01) # soft reset
time.sleep(0.01)
# I2C address and alias setup
board.WriteI2C(devAddr,0x58,0x5A) # Disable auto ACK
board.WriteI2C(devAddr,0x5B,serAddr[i]) # remove freeze
board.WriteI2C(devAddr,0x5C,serAlias[i]) # disable auto ACK
board.WriteI2C(devAddr,0x5D,imgAddr[i]) # configure imager address
board.WriteI2C(devAddr,0x65,imgAlias[i]) # configure imager alias
board.WriteI2C(devAddr,0x5E,ispAddr[i]) # configure ISP address
board.WriteI2C(devAddr,0x66,ispAlias[i]) # configure ISP alias
# 960 config
board.WriteI2C(devAddr,0x6D,0x7C) # FPD3 CSI-2 input mode
board.WriteI2C(devAddr,0x6E,0x8A) # map Fsync signal to 953 GPIO0 output
#board.WriteI2C(devAddr,0x72,0x00) # map VC-ID to 0
board.WriteI2C(devAddr,0x72,i) # map VC-ID to i
# FrameSync: 25Hz, 10%/90% duty cycle
board.WriteI2C(devAddr,0x19,0x05) # FS_HIGH_TIME_1
board.WriteI2C(devAddr,0x1A,0x34) # FS_HIGH_TIME_0
board.WriteI2C(devAddr,0x1B,0x2E) # FS_LOW_TIME_1 25fps
board.WriteI2C(devAddr,0x1C,0xDF) # FS_LOW_TIME_0 25fps
board.WriteI2C(devAddr,0x18,0x01) # enable internally generated FrameSync
# Clear error/status
time.sleep(0.1)
#board.ReadI2C(devAddr,0x4D)
#board.ReadI2C(devAddr,0x4E)
#board.ReadI2C(devAddr,0x55)
#board.ReadI2C(devAddr,0x56)
#board.ReadI2C(devAddr,0x7A)
#board.ReadI2C(devAddr,0x7B)
# CSI Output / Forwarding Config
board.WriteI2C(devAddr,0x1F,0x00) # 1.472 - 1.664Gbps serial rate
board.WriteI2C(devAddr,0x32,0x01) # select CSI port 0
#board.WriteI2C(devAddr,0x34,0x01)
board.WriteI2C(devAddr,0x34,0x31) # enable skew
board.WriteI2C(devAddr,0x33,0x43) # enable skew cal, 4 lanes, continuous clock, enable CSI output
#board.WriteI2C(devAddr,0x21,0x04) # basic sync forwarding on CSI port 0
#board.WriteI2C(devAddr,0x20,0x00) # forward all RX port to CSI port 0, enable forwarding
board.WriteI2C(devAddr,0x21,0x03) # basic sync forwarding on CSI port 0
board.WriteI2C(devAddr,0x20,0x00) # forward all RX port to CSI port 0, enable forwarding




.







