<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[XR32 CSI验证发现有点问题，求大佬给个OV7670、GC0308 的demo我抄抄]]></title><description><![CDATA[<p dir="auto">照着camera_demo里的改了，砍了wifi部分，然后把gc0308的驱动部分换成了OV7670，结果出现<code>[os E] OS_SemaphoreWait():110, handle 0</code></p>
<p dir="auto">修改后的SDK放到Github上了https://github.com/YuzukiHD/XR32SDK，项目是<code>project/example/camera</code></p>
<p dir="auto">报错</p>
<pre><code>--Cam_Hardware_Reset---54----
[COMPONENT TRACK] Ov7670_Csi_Init():258 end
[os E] OS_SemaphoreWait():110, handle 0
[Ov7670] image_size 0
[os E] OS_SemaphoreDelete():89, handle 0
[COMPONENT WARN] Drv_Ov7670_DeInit():627 ov7670 semaphore delete error, -3
</code></pre>
<p dir="auto">硬件</p>
<p dir="auto"><img src="/assets/uploads/files/1649513858396-3413ef8b-b905-4c07-a568-a6aaeef23c03-image.png" alt="3413ef8b-b905-4c07-a568-a6aaeef23c03-image.png" class=" img-responsive img-markdown" width="473" height="849" /></p>
<p dir="auto">软件</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

#include "driver/chip/hal_csi.h"
#include "driver/chip/hal_dma.h"
#include "driver/chip/hal_i2c.h"
#include "driver/chip/hal_uart.h"
#include "kernel/os/os.h"

#include "driver/component/csi_camera/camera_csi.h"
#include "driver/component/csi_camera/ov7670/drv_ov7670.h"

#define IMAGE_BUFFSIZE 153600

#define CAM_POWERDOWN_PIN GPIO_PIN_12
#define CAM_POWERDOWN_PORT GPIO_PORT_A

#define CAM_RESET_PIN GPIO_PIN_13
#define CAM_RESET_PORT GPIO_PORT_A

uint8_t* image_buff;

void Cam_Hardware_Reset(void) {
    printf("--%s---%d----\n", __func__, __LINE__);

    Drv_Ov7670_Pwdn_Pin_Ctrl(GPIO_PIN_LOW);
    Drv_Ov7670_Reset_Pin_Ctrl(GPIO_PIN_LOW);
    OS_MSleep(3);
    Drv_Ov7670_Reset_Pin_Ctrl(GPIO_PIN_HIGH);
    OS_MSleep(100);
}

void Cam_PowerInit(void) {
    Cam_PowerCtrlCfg PowerCtrlcfg;
    PowerCtrlcfg.Cam_Pwdn_Port = CAM_POWERDOWN_PORT;
    PowerCtrlcfg.Cam_Reset_Port = CAM_RESET_PORT;

    PowerCtrlcfg.Cam_Pwdn_Pin = CAM_POWERDOWN_PIN;
    PowerCtrlcfg.Cam_Reset_Pin = CAM_RESET_PIN;

    Drv_Ov7670_PowerInit(&amp;PowerCtrlcfg);
}

int Cam_Init(uint8_t* imagebuf) {
    HAL_CSI_Moudle_Enalbe(CSI_DISABLE);
    if (Drv_Ov7670_Init() == COMP_ERROR)
        return COMP_ERROR;
    else
        OS_MSleep(500);

    Drv_Ov7670_Set_SaveImage_Buff(( uint32_t )imagebuf);
    HAL_CSI_Moudle_Enalbe(CSI_ENABLE);
    return COMP_OK;
}

int main(void) {
    uint32_t image_size = 0;

    image_buff = ( uint8_t* )malloc(IMAGE_BUFFSIZE);
    if (image_buff == NULL) {
        COMPONENT_WARN("image buff malloc error \r\n");
        return COMP_ERROR;
    }
    memset(image_buff, 0, IMAGE_BUFFSIZE);

    Cam_PowerInit();
    Cam_Hardware_Reset();
	
    if(Cam_Init(image_buff) == COMP_ERROR){
	printf("[Ov7670] CAM INIT ERROR\n");
    }

    Drv_Ov7670_Capture_Enable(CSI_STILL_MODE, CSI_ENABLE);
    image_size = Drv_Ov7670_Capture_Componemt(10000);
    printf("[Ov7670] image_size %u\n", image_size);

    Drv_Ov7670_DeInit();
    free(image_buff);

    return COMP_OK;
}
</code></pre>
]]></description><link>https://bbs.aw-ol.com/topic/1277/xr32-csi验证发现有点问题-求大佬给个ov7670-gc0308-的demo我抄抄</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 11:47:03 GMT</lastBuildDate><atom:link href="https://bbs.aw-ol.com/topic/1277.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 09 Apr 2022 14:17:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to XR32 CSI验证发现有点问题，求大佬给个OV7670、GC0308 的demo我抄抄 on Thu, 21 Apr 2022 06:16:10 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://bbs.aw-ol.com/uid/317">@yuzukitsuru</a> 我也Layout一个试试</p>
]]></description><link>https://bbs.aw-ol.com/post/6110</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/6110</guid><dc:creator><![CDATA[gregrgr]]></dc:creator><pubDate>Thu, 21 Apr 2022 06:16:10 GMT</pubDate></item><item><title><![CDATA[Reply to XR32 CSI验证发现有点问题，求大佬给个OV7670、GC0308 的demo我抄抄 on Thu, 21 Apr 2022 02:02:01 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://bbs.aw-ol.com/uid/627">@gregrgr</a> gc0308的10脚的1.8v我拆了也是一样的</p>
]]></description><link>https://bbs.aw-ol.com/post/6101</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/6101</guid><dc:creator><![CDATA[YuzukiTsuru]]></dc:creator><pubDate>Thu, 21 Apr 2022 02:02:01 GMT</pubDate></item><item><title><![CDATA[Reply to XR32 CSI验证发现有点问题，求大佬给个OV7670、GC0308 的demo我抄抄 on Thu, 21 Apr 2022 01:36:35 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://bbs.aw-ol.com/uid/317">@yuzukitsuru</a> 电压崩了吧<img src="/assets/uploads/files/1650504977763-e177bee6-bda6-4009-b72d-fe2bfb330aa4-image.png" alt="e177bee6-bda6-4009-b72d-fe2bfb330aa4-image.png" class=" img-responsive img-markdown" width="323" height="428" /> <img src="/assets/uploads/files/1650504989469-326fd371-1680-42ca-bf8f-9ae544779532-image.png" alt="326fd371-1680-42ca-bf8f-9ae544779532-image.png" class=" img-responsive img-markdown" width="252" height="156" /></p>
]]></description><link>https://bbs.aw-ol.com/post/6099</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/6099</guid><dc:creator><![CDATA[gregrgr]]></dc:creator><pubDate>Thu, 21 Apr 2022 01:36:35 GMT</pubDate></item><item><title><![CDATA[Reply to XR32 CSI验证发现有点问题，求大佬给个OV7670、GC0308 的demo我抄抄 on Fri, 15 Apr 2022 09:46:10 GMT]]></title><description><![CDATA[<p dir="auto"><img src="/assets/uploads/files/1650015969668-5ab527c7-75b0-4ac5-8546-7a2cb1fac083-image.png" alt="5ab527c7-75b0-4ac5-8546-7a2cb1fac083-image.png" class=" img-responsive img-markdown" width="968" height="632" /></p>
]]></description><link>https://bbs.aw-ol.com/post/5944</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/5944</guid><dc:creator><![CDATA[YuzukiTsuru]]></dc:creator><pubDate>Fri, 15 Apr 2022 09:46:10 GMT</pubDate></item><item><title><![CDATA[Reply to XR32 CSI验证发现有点问题，求大佬给个OV7670、GC0308 的demo我抄抄 on Fri, 15 Apr 2022 09:22:21 GMT]]></title><description><![CDATA[<p dir="auto">换了GC0308，也有问题，无法拍摄图像，但是初始化什么的都没问题。。</p>
<pre><code>--Cam_Hardware_Reset---25----
[COMPONENT TRACK] GC0308_Csi_Init():224 end
GC0308 chip id = 0x9b 
GC0308 Init Done 
[GC0308] image_size 0
[COMPONENT WARN] Drv_GC0308_DeInit():615 GC0308 semaphore delete done, 0
--Cam_Hardware_Reset---25----
[COMPONENT TRACK] GC0308_Csi_Init():224 end
GC0308 chip id = 0x9b 
GC0308 Init Done 
[GC0308] image_size 0
[COMPONENT WARN] Drv_GC0308_DeInit():615 GC0308 semaphore delete done, 0
--Cam_Hardware_Reset---25----
[COMPONENT TRACK] GC0308_Csi_Init():224 end
GC0308 chip id = 0x9b 
GC0308 Init Done 
[GC0308] image_size 0
[COMPONENT WARN] Drv_GC0308_DeInit():615 GC0308 semaphore delete done, 0
</code></pre>
<p dir="auto">程序</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

#include "driver/chip/hal_csi.h"
#include "driver/chip/hal_dma.h"
#include "driver/chip/hal_i2c.h"
#include "driver/chip/hal_uart.h"
#include "kernel/os/os.h"

#include "driver/component/csi_camera/camera_csi.h"
#include "driver/component/csi_camera/gc0308/drv_gc0308.h"

#define IMAGE_BUFFSIZE 153600

#define CAM_RESET_PIN GPIO_PIN_13
#define CAM_RESET_PORT GPIO_PORT_A

#define CAM_POWERDOWN_PIN GPIO_PIN_12
#define CAM_POWERDOWN_PORT GPIO_PORT_A

uint8_t* image_buff;

void Cam_Hardware_Reset(void) {
    printf("--%s---%d----\n", __func__, __LINE__);

    Drv_GC0308_Pwdn_Pin_Ctrl(GPIO_PIN_LOW);
    Drv_GC0308_Reset_Pin_Ctrl(GPIO_PIN_LOW);
    OS_MSleep(3);
    Drv_GC0308_Reset_Pin_Ctrl(GPIO_PIN_HIGH);
    OS_MSleep(100);
}

void Cam_PowerInit(void) {
    Cam_PowerCtrlCfg PowerCtrlcfg;
    PowerCtrlcfg.Cam_Pwdn_Port = CAM_POWERDOWN_PORT;
    PowerCtrlcfg.Cam_Reset_Port = CAM_RESET_PORT;

    PowerCtrlcfg.Cam_Pwdn_Pin = CAM_POWERDOWN_PIN;  //开发板
    PowerCtrlcfg.Cam_Reset_Pin = CAM_RESET_PIN;

    Drv_GC0308_PowerInit(&amp;PowerCtrlcfg);

    Drv_GC0308_EnvironmentInit();
}

int Cam_Init(uint8_t* imagebuf) {
    HAL_CSI_Moudle_Enalbe(CSI_DISABLE);
    if (Drv_GC0308_Init() == COMP_ERROR)
        return COMP_ERROR;
    else
        OS_MSleep(500);

    Drv_GC0308_Set_SaveImage_Buff(( uint32_t )imagebuf);
    HAL_CSI_Moudle_Enalbe(CSI_ENABLE);
    return COMP_OK;
}

int main(void) {
    uint32_t image_size = 0;

    image_buff = ( uint8_t* )malloc(IMAGE_BUFFSIZE);
    if (image_buff == NULL) {
        COMPONENT_WARN("image buff malloc error \r\n");
        return COMP_ERROR;
    }
    memset(image_buff, 0, IMAGE_BUFFSIZE);

    while (1) {
        Cam_PowerInit();
        Cam_Hardware_Reset();
        Cam_Init(image_buff);
        Drv_GC0308_Capture_Enable(CSI_STILL_MODE, CSI_ENABLE);
        image_size = Drv_GC0308_Capture_Componemt(10000);
        printf("[GC0308] image_size %u\n", image_size);
        if (image_size == 320 * 240 * 2) {
            printf("[GC0308] image capture done\n");
            break;
        } else {
            Drv_GC0308_DeInit();
        }
    }

    Drv_GC0308_DeInit();
    free(image_buff);

    return COMP_OK;
}
</code></pre>
]]></description><link>https://bbs.aw-ol.com/post/5943</link><guid isPermaLink="true">https://bbs.aw-ol.com/post/5943</guid><dc:creator><![CDATA[YuzukiTsuru]]></dc:creator><pubDate>Fri, 15 Apr 2022 09:22:21 GMT</pubDate></item></channel></rss>