From what I understand, CX3 has a MIPI interface whereas FX3 has GPIF - is that the only difference between the two?
Mostly, yes. You can the first few sections of AN90369 (http://www.cypress.com/?rID=94116) which documents the difference between CX3 and FX3.
Can I configure CX3 (or even FX3) to output raw data as it is without the additional overhead of UVC?
Yes, you can. The existing examples all use UVC to transport data but you just need a few modifications to send out data over a vendor interface.
1. remove the UVC descriptors and put in the vendor-specific ones. You can look at the Bulk Source/Sink example project for an example of how vendor-specific descriptors can be written.
2. change the DMA channel's config to remove the 12-byte header and 4-byte footer. Also remove the code that adds the header (in the DMA callback)
3. have a vendor command (a control request of vendor type) to start/stop the video stream. In UVC, this trigger is the SET_CUR request directed to the commit control.
However, note that all OSes come with UVC drivers installed and they provide interfaces to read a video stream from the UVC device.
Thanks scutifer, it is really helpful.
Just a quick followup question on FX3 vs CX3 - Just having MIPI interface speeds up CX3 - 4Gbps vs 400 Mbps from FX3?
I think the 400 is MBytes/sec.
And the 4 is Gbits/sec.
And, the Cx3 has the same upper limit as Fx3 w.r.t payload throughput.
Theoretically it is 400 Megabytes/sec. Practically you would get in the 350-400 MBps range provided there is no processing delay in Fx3 and the USB bandwidth is being utilitzed optimally.