Hello,
I'm developing an IPU driver for a custom application. I am half way into the configurations. I am using the SDK as a reference.
In the SDK under the function "ipu_capture_setup" there is a place where we toggle the IPUx_CH_BUFx_RDYx register bits.
ipu_channel_buf_ready(ipu_index, csi_in_channel, 0);
ipu_channel_buf_ready(ipu_index, csi_in_channel, 1);
I would like to know why we are doing this? Also, in this case if we are using double buffering do we need to do the same for IPUx_CH_BUF0_RDY0 and IPUx_CH_BUF1_RDY0 registers? (channel I am using is 0)
Thank you.
Basically : "the IPU refreshes the screen every VSYNC event. IPU reads a buffer from the DDR.
And switch to a new buffer upon a trigger (buffer ready). IPU will switch to the next buffer only
when they completes updating the screen with the current buffer."
Have a great day,
Yuri
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
When using IPU for capture, frame-by-frame approach is used too, this means - strictly speaking -
it is needed to check buffer ready registers, if ARM core is involved in double buffering (software polling).
Regards,
Yuri.