RT1064 FlexIO Camera Problem

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

RT1064 FlexIO Camera Problem

928 Views
15219661324
Contributor III

Hello,

I am trying to use flexio to connect a camera and using the following configuration. It can enter the CAMERA_VSYNC_IRQHandler, but can't  enter the callback function, it seems that it can't receive the image data. I wonder what the problem is. The attachment is the project.

Thanks!

 

   /* FlexIO管脚初始化 */
    FlexIO_Camera_PinInit();

    /* 配置FlexIO Camera设备 */
#if (CAMERA_FLEXIO_INST == 1U)
    g_FlexioCameraDevice.flexioBase = FLEXIO1; /* 使用FlexIO1 */
#elif (CAMERA_FLEXIO_INST == 2U)
    g_FlexioCameraDevice.flexioBase = FLEXIO2; /* 使用FlexIO1 */
#endif

    g_FlexioCameraDevice.datPinStartIdx = CAMERA_FLEXIO_DATA_PIN_START_INDEX; /* 图像数据起始FlexIO引脚号 */
    g_FlexioCameraDevice.pclkPinIdx = CAMERA_FLEXIO_PCLK_PIN_INDEX;           /* 像素时钟信号FlexIO引脚 */
    g_FlexioCameraDevice.hrefPinIdx = CAMERA_FLEXIO_HREF_PIN_INDEX;           /* 行同步信号FlexIO引脚 */
    g_FlexioCameraDevice.shifterStartIdx = 3U;                                /* FlexIO缓冲区起始编号4 (RT10xx只有四个缓冲区) - 缓冲区数量 */
    g_FlexioCameraDevice.shifterCount = 1U;                                   /* FlexIO缓冲区数量 */
    g_FlexioCameraDevice.timerIdx = 0U;                                       /* 用于FlexIO Camera定时器编号 */

    /* 初始化FlexIO Camera. */
    flexio_camera_config_t cameraConfig;
    FLEXIO_CAMERA_GetDefaultConfig(&cameraConfig);
    FLEXIO_CAMERA_Init(&g_FlexioCameraDevice, &cameraConfig);

    /* 清除所有标志 */
    FLEXIO_CAMERA_ClearStatusFlags(&g_FlexioCameraDevice,
                                   kFLEXIO_CAMERA_RxDataRegFullFlag | kFLEXIO_CAMERA_RxErrorFlag);
    FLEXIO_CAMERA_Enable(&g_FlexioCameraDevice, true);

    /* 配置 DMA */
    DMAMUX_Init(DMAMUX);
#if (CAMERA_FLEXIO_INST == 1U)
    DMAMUX_SetSource(DMAMUX, DMA_CHN_FLEXIO_TO_FRAMEBUFF, kDmaRequestMuxFlexIO1Request2Request3);
#elif (CAMERA_FLEXIO_INST == 2U)
    DMAMUX_SetSource(DMAMUX, DMA_CHN_FLEXIO_TO_FRAMEBUFF, kDmaRequestMuxFlexIO2Request2Request3);
#endif

    DMAMUX_EnableChannel(DMAMUX, DMA_CHN_FLEXIO_TO_FRAMEBUFF);

    /* 初始化 EDMA 模块 */
    edma_config_t edmaConfig;
    EDMA_GetDefaultConfig(&edmaConfig);
    edmaConfig.enableDebugMode = true;
    EDMA_Init(DMA0, &edmaConfig);
    EDMA_CreateHandle(&g_edmaHandle, DMA0, DMA_CHN_FLEXIO_TO_FRAMEBUFF);

    /* 创建相机句柄 */
    FLEXIO_CAMERA_TransferCreateHandleEDMA(&g_FlexioCameraDevice, &g_cameraEdmaHandle, FlexIO_Camera_UserCallback, NULL,
                                           &g_edmaHandle);

    /* 配置FlexIO Camera传输数据结构体 */
    g_cameraTransfer.dataAddress = (uint32_t)g_FlexioCameraFrameBuffer;  /* 图像缓冲区地址 */
    g_cameraTransfer.dataNum = FLEXIO_FRAME_HEIGHT * FLEXIO_FRAME_WIDTH; /* 缓冲区大小 */

    /* 开启dma接收图像数据 */
    FLEXIO_CAMERA_TransferReceiveEDMA(&g_FlexioCameraDevice, &g_cameraEdmaHandle, &g_cameraTransfer);

    /* 初始化场中断 */
    FlexIO_Camera_VsynPinInit();
Labels (2)
0 Kudos
1 Reply

821 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi 陈 文龙 

  About the flexIO with CSI, please refer to the RT1020 flexIO CSI code, which is shared in the nxp eefocus forum:

FlexIO模块模拟CSI (CMOS Sensor Interface)操作摄像头 - i.MX - 恩智浦技术社区 - 手机版 - Powered by Discuz! 

Please refer to that code at first.

Wish it helps you!

If you still have questions about it, please kindly let me know.

Best Regards,

Kerry

 

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

 

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos