This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220SF-LAUNCHXL:不会触发摄像头中断。

Guru**** 2540720 points
Other Parts Discussed in Thread: CC3220SF

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1004826/cc3220sf-launchxl-camera-interrupts-are-not-triggered

器件型号:CC3220SF-LAUNCHXL
主题中讨论的其他器件:CC3220SF
这是之前 CC3220SF 上摄像头问题的延续。 我使用 gdb 和我 的 obsServer 研究了中断处理程序、无论 CC_IRQENABLE 寄存 器如何、触发的唯一中断(如果启用)是 FIFO_UF_IRQ、这是一个 FIFO 下溢事件。 然后正确调用 CameraIntHandler。 没有其他事件触发中断、即使是与 DMA 无关的事件、如帧起始或行起始。 我的逻辑分析仪连接到摄像头、显示 HSYNC 和 VSYNC 信号正确计时。 这种行为会有什么问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否已检查 DMA 控制寄存器以查看传输是否已完成、是否卡住、甚至是否未正确初始化?

    此致、
    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们使用的是摄像头示例中的代码。 MAP_CameraCaptureStart (camera_base)之后为 github.com/.../websock_camera;调试器中的寄存器如下所示:

    CC_CTRL = 0x00012000

    CC_IRQENABLE = 0x00090000

    CC_IRQSTATUS 仍然为所有零。

    启用全局中断。 我可以使用示波器确认相应引脚上出现了帧起始条件(Vs=上升 Hs=高电平)。 但永远不会到达中断处理程序。

    DMA 的代码也取自此示例。 但如果没有中断、DMA 永远不会启动。

    我还可以检查什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    为了澄清一点、看起来 DMA 传输在 DMA 控制结构中已正确初始化、只是 DMA 传输永远不会启动。 是这样吗?

    此致

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我没有更改 DMA 配置、它与示例中的配置相同:

    静态 DMAConfig()
    //memset (g_image.g_image_buffer、0xF80F、sizeof (g_image.g_image_buffer));
    P_buffer =&(g_image.g_image_buffer[0]);
    //
    //初始化 DMA
    //
    UDMAInit();
    //
    //设置乒乓传输
    //
    DMASetupTransfer (uDMA_CH22_camera、uDMA_mode_pingpong、total_DMA_elements、uDMA_size_32、
    UDMA_ARB_8、(void *) CAM_Buffer_ADDR、UDMA_SRC_INC_32、
    (void *) p_buffer、uDMA_dst_INC_32);
    //
    // Pong 缓冲器
    //
    p_buffer += total_dma_elements;
    DMASetupTransfer (UDMA_CH22_CAMER|UDMA_ALT_SELECT、UDMA_MODE_PINGONG、TOTAL_DMA_ELEMENTS、
    UDMA_SIZE_32、UDMA_ARB_8、(void *) CAM_Buffer_ADDR、
    UDMA_SRC_INC_32、(void *) p_buffer、UDMA_dst_INC_32);
    //
    // Ping 缓冲器
    //
    p_buffer += total_dma_elements;
    G_DMA_txn_done = 0
    G_FRAME_SIZE_IN_Bytes = 0
    G_FRAME_END = 0
    G_TOTAL_DMA_INOPs = 0
    //
    //清除任何挂起的中断
    //
    HWREG (0x4402609C)|= 1 << 8
    //
    //从应用配置中取消 DMA 中断屏蔽
    //
    HWREG (0x44026094)|= 1 << 8

    摄像头 CC_CTRL_DMA = 0x00000107

    我尝试打开摄像头的所有可能中断(CC_IRQENABLE=0x000f0f1f)、但我没有收到任何中断。 启用全局中断( MAP_IntMasterEnable();)

    我认为文档 SWRU465表14-9中可能存在错误。 位8被除两次:作为 DMA1_DISABLE 和 DMA_EN。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您让我知道 DMA 设置不变。 今天、我没有机会深入研究您的问题、明天就会了解一下。

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    为了结束本主题、我们上周进行了离线讨论、讨论了摄像头问题的当前状态。 确定最佳做法是改用基于 SPI 的摄像头解决方案。

    此致、

    Michael