Not impressed with the developer community as a solution for questions AT ALL. I have another question up here, for days, no reply by anybody.
Here's a simpler question, it's about clocks. First off, cypress' CX3 documentation on how to get an image sensor working is scattered, scant, and terrible. I'm surprised the CX3 is still a thing, with how bad the documentation is. That said, I doubt anybody is going to help me further. But let's try, maybe it will help other people.
The CX3 has an incoming system clock, it's 19.2 Mhz. Internally, it seems like this is multiplied by 20 to get SYS_CLK. Later in the docs, it states that the MIPI receive bus runs on a different clock, from the incoming REFCLK. In my case, that is 24MHZ. In the call to CyU3PDeviceInit, I pass in a CyU3PSysClockConfig_t, which has a flag in it, "setSysClk400", which tells the sys clock to run at a multiple of 21 instead of 20x the base incoming 19.2Mhz signal. But changing this value back and forth causes my captured frame rate to be different. This surprised me. Unless I am doing something very wrong, I figured the frame rate would stay the same, because it's being "latched" (for lack of a better word) from the MIPI bus, whose frequency is NOT changing based on setSysClk400. Anybody have an idea of why my FPS is changing?
Another thing I don't understand, since I inherited this firmware and hardware board, is LV and FV. My circuit doesn't have LV and FV coming in off GPIO lines from the sensor. How does the CX3 know when it's reached the end of a line or frame? I know it's happening, since it's capturing, but HOW is it working? I see no explanation for this anywhere.
Another thing I want to know is: We're using the OV4688(or 4689). It has been set up to output RAW8, but my cx3config.cycx is set up for input video format = RAW10, which I think is a mistake... Plus the GPIF bus has been set up for 24 bit. I don't understand the GPIF bus width, or why it should be one size or the other. Why not 32-bit? Is this just the size of the data that goes across the GPIO bus? or is it the transfer size (somehow) of what gets passed across the MIPI pixel data bus? Back to the Bayer thing: If I output RAW8 from the sensor, I'm assuming i choose input video format = RAW8. WHY oh WHY is there an "output video format"? The CX3 can't do format translation, so why is this box even there? Why can I choose 8, 16, or 24 bit? I don't get it. And if I choose one of those formats, what does that affect and which other registers do I need to set?
thanks from a very confused person.