we are using CX3 to get data from image sensor (ONSemi AR0330CM) + image signal processor (ONSemi AP1302) over USB to host PC. We would like to get maximum possible frame rate, but we are kinda stuck now.
We have configured all components to get 1920x1080 px, and we are able to get about 51 fps in YUV 4:2:2. In order to achieve this, we had to set THS-EXIT parameter in AP1302 to increase pause between the frames on MIPI interface. We believe that this parameter is limiting us from getting faster frame rates. We have development kit for sensor + ISP and we have verified that same settings on the kit yield same results, and reducing THS-EXIT causes fps increase.
However if we reduce THS-EXIT on our hardware, we do not get picture from the UVC interface, instead there are errors reported in MIPI error thread, namely "Unrecoverable Sync Byte Error".
I would like to understand why this happens, but I do not see any reason why there would be some pause between packets required in order to get CX3 interface working as intended. I have thought that there should be no need to any pauses or waits as CX3 MIPI received internally uses multiple threads with separate buffers and is able to switch instantly and seamlessly between the threads writing to different buffers.
Can anyone possibly explain how is THS-EXIT related other parameters and give us some hint of what we can change so we can reduce this value even further?
Thanks a lot for any ideas, hints and other pieces of information that might help us.
After some more experimenting we have concluded that value required for THS-EXIT depends on packet size. If we increase packet size, we have to increase THS-EXIT as well. It looks like CX3 does need some time to process the data it has received into it's buffers before it can receive another packet.
Can anyone clarify if there is any strict requirement for pauses between MIPI packets, and how to calculate required pause length?