arjun.a
range data
5aefcf4
raw
history blame
No virus
10.6 kB
Ticket Name: 【TDA2EX】usecase 's chains_vipSingleCam_Display
Query Text:
Other Parts Discussed in Thread: TDA2EG-17, TDA2 Dear all, I am a beginner , I have a question About Tda2ex Vision_SDK V03.08 The sensor I use is VID_SENSOR_SAT0088_OV1063X My Pinmux is set up . I cannot detect my ub96x version , Didn’t register him in I2c? Are there relevant documents to help understand this part of the problem? Or tell me how to solve it ! ----------------------------------------(About Key program)-------------------------------------------------- (Bsputils_ub960.c Func Name:BspUtils_appGetUb96xVersion) retVal = Bsp_deviceRead8( UB960_ACCESSIBLE_FROM_I2C_INST, //1 gSlaveAliases[instId].slaveAddr,//0x3D &tempAddr, //0xF5 &tempData, //0x00 (UInt32) 1U); ******************************************************************************************************* (bsp_deviceI2c.c Func Name :Bsp_deviceRead8) retVal = GIO_submit( gBspDevObj.i2cHndl[i2cInstId], How to register or be assigned?? Is this the problem? (UInt32) IOM_WRITE, &i2cParams, &i2cParams.bufLen, NULL); ------------------------------------------------------------------------------------------------------- My log is ------------------------------------------------------------------------------------------------------ [IPU1-0] 28.636399 s: i2cMdSubmitChan: i2c transfer Timeout IRQ not received [IPU1-0] 28.637802 s: src/bsp_deviceI2c.c @ Line 352: [IPU1-0] 28.637894 s: Nrtos I2C4: DEV 0x3d: RD 0xf5 ... ERROR !!! [IPU1-0] 28.638260 s: src/bsp_deviceI2c.c @ Line 420: [IPU1-0] 28.638351 s: I2C4: Error timeout 5002 ms!!! [IPU1-0] 28.638443 s: Updated UB964 to 2 Lanes !!! [IPU1-0] 28.638504 s: BspUtils_appGetUb96xVersion [IPU1-0] 33.638382 s: [IPU1-0] 33.638626 s: i2cMdSubmitChan: i2c transfer Timeout IRQ not received [IPU1-0] 33.640029 s: src/bsp_deviceI2c.c @ Line 352: [IPU1-0] 33.640120 s: Nrtos I2C4: DEV 0x3d: RD 0xf5 ... ERROR !!! [IPU1-0] 33.640395 s: src/bsp_deviceI2c.c @ Line 420: [IPU1-0] 33.640486 s: I2C4: Error timeout 5001 ms!!! [IPU1-0] 38.640395 s: [IPU1-0] 38.640669 s: i2cMdSubmitChan: i2c transfer Timeout IRQ not received [IPU1-0] 38.642072 s: src/bsp_deviceI2c.c @ Line 588: [IPU1-0] 38.642164 s: I2C4: DEV 0x3d: WR 0x01 = 0x03 ... ERROR !!! [IPU1-0] 38.642255 s: src/bsp_deviceI2c.c @ Line 610: [IPU1-0] 38.642347 s: I2C4: Error timeout 5002 ms!!! [IPU1-0] 38.642438 s: src/bsputils_ub960.c @ Line 1321: [IPU1-0] 38.642530 s: Could not configure UB960 !!! ------------------------------------------------------------------------------------ THANK YOU!!!><
Responses:
Hi David, Please refer to your board schematic to figure out ub960 i2c address. Regards, Brijesh
Dear Brijesh, This is my I2c setting, Is there something wrong? Thanks!!
TDA2eg-17 datasheet
Hi David, this tells that ub96x is connected over i2c4 lines, but not what is the i2c client address.. On EVM, we typically use 0x30 or 0x3D addresses, but it really depends on two inputs lines to the ub96x. Depending on these two lines, i2c address is decided. Please check your schematic and ub96x data sheet to understand and to know i2c address for ub96x. Regards, Brijesh
Dear Brijesh, ----------------------------------------------------------------- Q1: Our image camera uses the serdes interface The receiver of the serdes interface is UB962 TDA2 used on the circuit diagram is connected to ub962 using i2c4 The address we use is 0x3d "We want to know how to control ub962 through i2c4" How to control him through i2c4 I want to ask about the process(flow) on the software Start with these actions of poweron/inital and so on EX. setting pinmux What are the other steps to do? Are there any related documents? ----------------------------------------------------------------- Q2: It seems to be controlled through gio_submit How to use it Whether to do the corresponding registration?, etc. ----------------------------------------------------------------- Thank you very much!!
Hi, Can you please look into VidSensor_create API in the file vision_sdk\apps\src\rtos\video_sensor\src\ov10635\vid_sensor_ov10635.c? This file is the one, which configures ub96x devices for the sensor. It uses API BspUtils_appInitUb960 to configure them, which is implemented inside PDK. You would have to change this API in PDK to change i2c instance. Regards, Brijesh
Dear Brijesh, Because I still haven't solved this problem,Can you tell me some more details? Is it necessary to set something in Bsp_deviceI2cInit? Or other places? Can you give an example of the setting process? To solve the problem of why we cannot detect the UB964 version? According to my information above Thank you for your help>< David
Dear Brijesh, Second question, where can these objects be set? Does this require us to set? Please help me with these two questions Thank you!! David
Dear Brijesh, I'm afraid I didn't explain it carefully enough, so I added something like this picture explain(The text in the picture) Or is it related to this parameter, something needs to be registered during initialization? l Thanks David
Dear Brijesh, If I have insufficient information, please let me know, and I will try to explain it clearly. Mainly I want to know why it can't be detected in get Version (our version is ub962) Maybe where is not set up? According to the question I said above Please help ! Thanks you...!! David
Dear Brijesh, Can this part tell me clearly? I may know the general direction but I don’t know the details (Regarding what I described above) Can you point me in some direction, Please! Thank you very much!! David
Hi David, I am sorry i am not getting the issue.. If not video_sensor layer, you could directly try writing to SERDES register from the usecase. There are i2c APIs, that can be used to write directly from the usecase itself. Also which i2c instance are you using? If it is not allocated/enabled, you might have to add it to Linux dtb files. But before all of these, are you trying to enable this SERDES for the first time? I mean, is it brought up from HW perspective? Rgds, Brijesh
Dear Brijesh, Can you tell me in detail about the settings of the software layer that need to be done (Settings), and where? For example, which parameter in the table or which parameter needs to be initialized or set. According to my description above, what else needs to be set at the software layer? (ex. bsp_deviceI2c.c Func: Bsp_deviceI2cInit need setting?) (If the software layer is not set) Thanks a lot!! David
Dear Brijesh, like this, About Bsp_deviceRead8 UB960_ACCESSIBLE_FROM_I2C_INST, //4 gSlaveAliases[instId].slaveAddr,//0x3D &tempAddr, //0xF5 &tempData, //0x00 (UInt32) 1U); ----------------------------------------- Where is the software layer in the front that needs to be set? ("Probably" is about not setting it before) but I'm not sure where Can you tell me some details that I didn't notice At present, the parameters passed out here should be no problem (except for the first parameter is uncertain) Thanks! David
Dear Brijesh, Because I am confused about some software layers I want to confirm whether the software layer is set up first Regarding the questions I mentioned above, can you help me understand better? (Software layer) Thanks a lot!! David
Hi David, I am sorry i could not get the question. I guess you just want to configure SERDES and camera. You could actually completely bypass software layer for it. You could use direct i2c APIs to write to SERDES/Camera register from the usecase. When you generate the usecase, it will generate usecase_priv.c file and usecase.c file. You could add an function in usecase.c file to write to these i2c clients. For I2C, you could use APIs like Bsp_deviceWrite8,Bsp_deviceWrite16 to write to 8bit and 16bit address/value pair. These APIs does not require i2c handle, it just needs i2c instance id, slave address, register and value.. We just need to make sure that the i2c instance that you want to use is allocated to M4 driver. and initialized in the PDK. For that, can you see and update Board API Bsp_boardGetI2cData and include this i2c instance on M4? Regards, Brijesh
Dear Brijesh, I have used Bsp_deviceWrite8 here to get UB96X Version According to the first parameter Mainly we want to ask How to set up the instance i2c and how to connect to the real I2C4 (pre-work) Thanks! David
Hello David, Do you mean which instance id to be used for i2c4 ? Regards, Brijesh
Dear Brijesh, Because I have some doubts about the software layer Our DEVICE uses i2C4 to connect to ub962 then, I mean we use Bsp_deviceRead8 Get Version But It did not detect the version of ub962 --------------------------------------------------------------------- Bsp_deviceRead8 ( UB960_ACCESSIBLE_FROM_I2C_INST, //4 (-> The previous steps or initialization did not do the setting or connection, which caused the error that the device could not be detected version?) gSlaveAliases[instId].slaveAddr, //0x3D &tempAddr, //0xF5 &tempData, //0x00 (UInt32) 1U); Thanks >< David
Hi David, Is ub962 powered on? or anything on board required to power on ub962? or is there any other mux available in between to enable i2c transactions? Do you have any other device also connected on i2c4? Can try probing this device? Regards, Brijesh
Dear Brijesh, Ub962 seems to be powered on ,and nor other mux enanle i2c No other devices also use i2c4 Are there any initialization places that need to be set?(About how to setting of linking ub962) and other questions I am looking at bsp_deviceI2c.c Func:Bsp_deviceI2cInit(void) The parameters in gBspDevObj.i2cHndl[i2cInstId] , Where is this parameter set? and  ioParams.packets = &(gBspDevObj.i2cIomPacket[i2cInstId][0]); Why are all the parameters I printed out empty? (Paramters :addr , size ,arg , cmd , status ,misc) Thanks! David
Hi David, I dont understand "About how to setting of linking ub962" ?? Please check the Bsp_deviceI2cInit, this API sets the i2cHandle at around line number 163. Regards, Brijesh
Dear Brijesh, "Please check the Bsp_deviceI2cInit, this API sets the i2cHandle at around line number 163."  I watched this ,but I have some confusion , Can you tell me about "where" the parameters are set (inside)? I have tried to track the code(inside),But I don’t know how to look inside Can you tell me some hints and how to see it(Setting parameters) (inside :gBspDevObj.i2cHndl[i2cInstId] = GIO_handle(&gBspDevObj.i2cGioStruct[i2cInstId]);) Thanks a lot! David
Parameters are set in GIO_construct. I would suggest to put breakpoint on this API and see the code flow. Rgds, Brijesh