Basing code off of AN12110, I have code in place to start the CSI and am expecting some data, but despite data coming from my camera (via parallel interface) CSI seems to be dead - my code is stuck at:
while (kStatus_Success != CAMERA_RECEIVER_GetFullBuffer(&cameraReceiver, (uint32_t *) &(csiFrameBuf[i]) )) { }
Diving further in shows that:
status_t CSI_TransferGetFullBuffer(CSI_Type *base, csi_handle_t *handle, uint32_t *frameBuffer)
{
uint32_t csicr1;
/* No full frame buffer. */
if (handle->queueUserReadIdx == handle->queueDrvWriteIdx)
{
return kStatus_CSI_NoFullBuffer;
}
is returning because of NoFullBuffer (even tho the Logic Analyzer is showing FV, LV (HSYNC), and data pins are all providing data to the CSI Parallel pins.
I thought this issue might be similar: i.MX6 SoloX Parallel CSI Problem
But in my case - I do see the CSICR1 have the reset value of 0x40000800.
BUUUT, CSI_Init from the MCUXpresso SDK doesn't seem to be overwriting that value. In fsl_csi.c, line 232, it tries to set base->CSICR1 = 0x40020912, but the debugger doesn't show any change in memory at that address (still at the reset value after single stepping over it).
I also am not using PXP or Camera interface. Like the issue I linked to above, do I need to enable these interfaces to somehow enable the CSI to function?
Why else would the CSI not seem to activate?