cancel
Showing results for 
Search instead for 
Did you mean: 

USB Superspeed Peripherals

Contributor

Hi All,

I have designed a camera interface for the OV5647 image sensor using the CX3.  I have replaced the e-con systems libCX3OV5640 module with code to initialize the OV5647 sensor.  In this code, I have used Cy3U3PDebugPrint() statements to know that the sensor is being correctly programmed (it acknowledges all the register writes).

At the end of initialization, the sensor is not outputting any video data on the MIPI bus.  Whereas, when I examine the E-Con Systems RDK, I see OV5640 sensor output after 2 is written to 0x3008 as the last step of initialization.

I was under the impression that once the sensor is initialized it begins streaming data and the CX3 simply receives and transfers it to the PC.  But there seems to be more to it than that.  Can anyone explain?

Any comments much appreciated.

Thanks,

Scott

0 Likes
Reply
1 Solution
Employee

Hi Scott,

Have you checked the configuration with OmniVision FAE?  We expect you

1. get correct configuration from OmniVision.

2. All the registers are set correctly.

It's is acceptable that some of the registers are not documented in datasheet but all the registers must be written correctly.

View solution in original post

0 Likes
Reply
4 Replies
Employee

Hi Scott,

Could you please confirm if all the registers are set the correct value? You need to check the I2C communication with a logic analyzer or read registers value back after writting.

0 Likes
Reply
Contributor

Hi,

Thanks for the reply.

Yes, I have used a logic analyzer to verify that the sensor acks all of the writes.  I will try reading back the registers to verify their content although I don't believe this is the issue.

Scott

0 Likes
Reply
Contributor

Hi All,

At yyca's suggestion I added read-after-write checking code to the initialization routines and am more confused!  In the stream of resister initialization messages, most registers verify after programming.  That is their content matches the written values.  But well over 100 registers don't.  These registers seem to fall into two categories: undocumented registers, those not listed in the OmniVision data sheet, and registers where all the bits are not documented (again, in the OV data sheet).

Any thoughts on why there would be writes to undocumented registers?  and why some unused bits are being set?

Thanks,

Scott

0 Likes
Reply
Employee

Hi Scott,

Have you checked the configuration with OmniVision FAE?  We expect you

1. get correct configuration from OmniVision.

2. All the registers are set correctly.

It's is acceptable that some of the registers are not documented in datasheet but all the registers must be written correctly.

View solution in original post

0 Likes
Reply