Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
OV2640
初始化
模拟IIC_I2C
30
rt-thread ov2640 模拟iic 初始化失败
发布于 2020-11-30 23:19:25 浏览:1897
订阅该版
[tocm] 本人移植的官方ov2640(ART-PI)驱动程序,在stm32F429上接的微雪的扩展板子连得微雪的ov2640可以初始化成功也可以使用,但是最近迁到stm32f407上发现无法初始化成功。另外原子的自带晶振,以下是关键代码片段: ```c static rt_err_t ov2640_read_id(struct rt_i2c_bus_device *bus) { rt_uint8_t read_value[2]; rt_uint16_t id = 0; read_reg(bus, OV2640_SENSOR_MIDH, 1, &read_value[0]); read_reg(bus, OV2640_SENSOR_MIDL, 1, &read_value[1]); id = ((rt_uint16_t)(read_value[0] << 8) & 0xFF00); id |= ((rt_uint16_t)(read_value[1]) & 0x00FF); if (id != OV2640_MID) { LOG_E("ov2640 init error, mid: 0x%x ", id); return RT_ERROR; } LOG_I("ov2640 read mid success, mid: 0x%x ", id); read_reg(bus, OV2640_SENSOR_PIDH, 1, &read_value[0]); read_reg(bus, OV2640_SENSOR_PIDL, 1, &read_value[1]); id = ((rt_uint16_t)(read_value[0] << 8) & 0xFF00); id |= ((rt_uint16_t)(read_value[1]) & 0x00FF); if (id != OV2640_PID) { LOG_E("ov2640 init error, pid: 0x%04x ", id); return RT_ERROR; } LOG_I("ov2640 read hid success, pid: 0x%04x", id); return RT_EOK; } void rt_stm32407_atk_miniexpolre() { GPIO_InitTypeDef GPIO_Initure; __HAL_RCC_GPIOG_CLK_ENABLE(); GPIO_Initure.Pin=GPIO_PIN_9|GPIO_PIN_15;//PG9,15 PG9---->PWDN PG15------>RST GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; GPIO_Initure.Pull=GPIO_PULLUP; GPIO_Initure.Speed=GPIO_SPEED_HIGH; HAL_GPIO_Init(GPIOG,&GPIO_Initure); rt_thread_mdelay(50); /* refence OV2640_PWDN=0; //POWER ON delay_ms(10); OV2640_RST=0; // delay_ms(10); OV2640_RST=1; // */ HAL_GPIO_WritePin(GPIOG,GPIO_PIN_9,GPIO_PIN_RESET); rt_thread_mdelay(10); HAL_GPIO_WritePin(GPIOG,GPIO_PIN_15,GPIO_PIN_RESET); rt_thread_mdelay(10); HAL_GPIO_WritePin(GPIOG,GPIO_PIN_15,GPIO_PIN_SET); rt_thread_mdelay(10); __HAL_RCC_GPIOD_CLK_ENABLE(); // //PD6.73?ê??ˉéè?? GPIO_Initure.Pin=GPIO_PIN_6|GPIO_PIN_7; GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //í?íìê?3? GPIO_Initure.Pull=GPIO_PULLUP; //é?à- GPIO_Initure.Speed=GPIO_SPEED_FAST; //?ì?ù HAL_GPIO_Init(GPIOD,&GPIO_Initure); } int rt_ov2640_init(void) { rt_uint16_t i = 0; rt_device_t dcmi_dev = RT_NULL; rt_stm32407_atk_miniexpolre(); i2c_bus = rt_i2c_bus_device_find(I2C_NAME); if (i2c_bus == RT_NULL) { LOG_E("can't find %c deivce", I2C_NAME); return RT_ERROR; } write_reg(i2c_bus, OV2640_DSP_RA_DLMT, 0x01); rt_thread_delay(10); write_reg(i2c_bus, OV2640_SENSOR_COM7, 0x80); rt_thread_delay(500); ov2640_read_id(i2c_bus); for (i = 0; i < sizeof(ov2640_svga_init_reg_tbl) / 2; i++) { write_reg(i2c_bus, ov2640_svga_init_reg_tbl[i][0], ov2640_svga_init_reg_tbl[i][1]); } ov2640_rgb565_mode(); ov2640_set_light_mode(0); ov2640_set_color_saturation(3); ov2640_set_brightness(4); ov2640_set_contrast(3); ov2640_jpeg_mode(); ov2640_set_image_window_size(0, 0, 800,600); ov2640_set_image_out_size(800, 600); //ov2640_set_image_window_size(0, 0, 1200,800); //ov2640_set_image_out_size(1200, 800); dcmi_dev = rt_device_find("dcmi"); if (dcmi_dev == RT_NULL) { LOG_E("can't find dcmi device!"); return RT_ERROR; } rt_device_open(dcmi_dev, RT_DEVICE_FLAG_RDWR); jpeg_data_buf = rt_malloc(JPEG_BUF_SIZE); if (RT_NULL == jpeg_data_buf) { rt_kprintf("jpeg data buf malloc error!\n"); return RT_ERROR; } /* start dcmi capture 开启双缓冲*/ //rt_hw_dcmi_dma_config((rt_uint32_t)JPEG_LINE0_BUF, (rt_uint32_t)JPEG_LINE1_BUF, JPEG_LINE_SIZE); rt_kprintf("camera init success!\n"); return RT_EOK; } INIT_APP_EXPORT(rt_ov2640_init); ``` 原子的初始化代码片段: ```c u8 OV2640_Init(void) { u16 i=0; u16 reg; //ÉèÖÃIO GPIO_InitTypeDef GPIO_Initure; __HAL_RCC_GPIOG_CLK_ENABLE(); //¿ªÆôGPIOGʱÖÓ GPIO_Initure.Pin=GPIO_PIN_9|GPIO_PIN_15;//PG9,15 GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //ÍÆÍìÊä³ö GPIO_Initure.Pull=GPIO_PULLUP; //ÉÏÀ GPIO_Initure.Speed=GPIO_SPEED_HIGH; //¸ßËÙ HAL_GPIO_Init(GPIOG,&GPIO_Initure); //³õʼ»¯ HAL_GPIO_WritePin(GPIOG,GPIO_PIN_9,GPIO_PIN_RESET); delay_ms(10); HAL_GPIO_WritePin(GPIOG,GPIO_PIN_15,GPIO_PIN_RESET); delay_ms(10); HAL_GPIO_WritePin(GPIOG,GPIO_PIN_15,GPIO_PIN_SET); delay_ms(10); // OV2640_PWDN=0; //POWER ON // delay_ms(10); // OV2640_RST=0; //¸´Î»OV2640 // delay_ms(10); // OV2640_RST=1; //½áÊø¸´Î» SCCB_Init(); //³õʼ»¯SCCB µÄIO¿Ú SCCB_WR_Reg(OV2640_DSP_RA_DLMT, 0x01); //²Ù×÷sensor¼Ä´æÆ÷ SCCB_WR_Reg(OV2640_SENSOR_COM7, 0x80); //Èí¸´Î»OV2640 delay_ms(50); reg=SCCB_RD_Reg(OV2640_SENSOR_MIDH); //¶ÁÈ¡³§¼ÒID ¸ß°Ëλ reg<<=8; reg|=SCCB_RD_Reg(OV2640_SENSOR_MIDL); //¶ÁÈ¡³§¼ÒID µÍ°Ëλ if(reg!=OV2640_MID) { printf("MID:%d\r\n",reg); return 1; } printf("MID:%x\r\n",reg); reg=SCCB_RD_Reg(OV2640_SENSOR_PIDH); //¶ÁÈ¡³§¼ÒID ¸ß°Ëλ reg<<=8; reg|=SCCB_RD_Reg(OV2640_SENSOR_PIDL); //¶ÁÈ¡³§¼ÒID µÍ°Ëλ if(reg!=OV2640_PID) { printf("HID:%d\r\n",reg); //return 2; } printf("HID:%x\r\n",reg); //³õʼ»¯ OV2640,²ÉÓÃSXGA·Ö±æÂÊ(1600*1200) for(i=0;i
查看更多
红枫
认证专家
2020-12-01
这家伙很懒,什么也没写!
我遇到过同样问题,是没有上拉电阻的原因,芯片内部上拉比较弱,所以I2C慢,可以将scl配置为PP模式,sda配置为OD且上拉模式,可解决慢的问题.
3
个回答
默认排序
按发布时间排序
liuduanfei
2020-12-01
这家伙很懒,什么也没写!
看看硬件的区别吧,是不是没接上拉电阻之类的问题。或者引脚配置模式问题。
StackYuan
认证专家
2020-12-01
这家伙很懒,什么也没写!
晶振或者MCU产生的频率是否给到OV2640了,PWDN这个IO是否按照要求接好?
撰写答案
登录
注册新账号
关注者
1
被浏览
1.9k
关于作者
xiaoyu
这家伙很懒,什么也没写!
提问
27
回答
27
被采纳
1
关注TA
发私信
相关问题
1
模拟IIC中 SCL 延时的问题
2
在RTT中增加IIC设备
3
模拟I2C使用,线程调度貌似有问题
4
RTT studio打开软件IIC加载不出来drive_iic.c文件
5
使用max30102软件包时出现线程断言错误
6
F407zgoled编译报错
7
stm32F103核心板使用IIC出现的问题
8
rt_thread IICunlock问题
9
使用sensor_lsm6dsm时,出现了传感器可以注册成功却无法读数的问题
10
硬件定时器太长卡串口中断
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
a1012112796
13
个答案
1
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部