您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF518的IO口模拟I2C问题
本帖共有1023个阅读者
发表帖子 发表投票 回复主题
BF518的IO口模拟I2C问题
unconscious(论坛新手)
unconscious
头衔:社区公民
帮派:无帮无派
帖数:67
金钱:746
积分:86
注册时间:2013/8/2
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
BF518的IO口模拟I2C问题

我测试了PF11,12引脚是通的,但是写寄存器的时候用示波器看I2C的时钟和数据的输出波形,时钟貌似是对的,数据是错的。麻烦能帮我看下I2C的代码吗?非常感谢!





「该帖子被 unconscious 在 2013-08-29 10:27:37 编辑过」

^_^
等级:论坛新手 参考IP地址:*.*.*.*
2013/8/26 16:16:10
unconscious(论坛新手)
unconscious
头衔:社区公民
帮派:无帮无派
帖数:67
金钱:746
积分:86
注册时间:2013/8/2
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
你好,我把ov7725_write函数和ov7725_read函数中的return ret全删掉了,然后写和读寄存器这块我貌似是调通了,我循环写一个寄存器值,然后用示波器看到的数据波形是对的,时钟的波形也是均匀高低电平,但是抓到的数据的整个波形比时钟的整个波形长一截。请问是什么原因?麻烦andy解惑

^_^
等级:论坛新手 参考IP地址:*.*.*.*
2013/8/27 18:46:50
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
一个数据的宽度是 时钟的一个周期,所以你看到的数据波形宽一点是正确的。‘
之前你说的配置寄存器时,数据波形不正确,可能是你的OV7725芯片没有响应IIC应答,代码不断跳到终止函数造成的

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/8/28 9:02:41
unconscious(论坛新手)
unconscious
头衔:社区公民
帮派:无帮无派
帖数:67
金钱:746
积分:86
注册时间:2013/8/2
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

我把return ret删掉可以吗,这样写寄存器是通了,但是我用读函数读取设备的地址寄存器值不对,不知道为什么啊


^_^
等级:论坛新手 参考IP地址:*.*.*.*
2013/8/28 9:09:49
unconscious(论坛新手)
unconscious
头衔:社区公民
帮派:无帮无派
帖数:67
金钱:746
积分:86
注册时间:2013/8/2
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
应该是I2C写的时候的时序有问题,没写成功,所以会返回错误,

^_^
等级:论坛新手 参考IP地址:*.*.*.*
2013/8/28 9:17:11
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
你代码中OV7725的地址不正确:
#define  OV7725_ADDRESS 0x21

在官方的IIC代码中,送入地址时,设备地址要把读写位移除。如果用我们的IIC模拟,送的地址则不需要移除读写位,正确的地址应该为0x42,你改地址试试看有响应没

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/8/28 9:27:51
unconscious(论坛新手)
unconscious
头衔:社区公民
帮派:无帮无派
帖数:67
金钱:746
积分:86
注册时间:2013/8/2
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

我查了下0x21好像是包含读写位的,我用0x42试了还是不行,i2c_write(&mcu_i2c, OV7725_ADDRESS, 1)函数返回错误,

用0x21貌似是

if(i2c_write(&mcu_i2c, OV7725_ADDRESS, 1))
    {
        i2c_stop(&mcu_i2c);
        return ret;    
    }

直接退出不执行下面的了,求助啊andy


^_^
等级:论坛新手 参考IP地址:*.*.*.*
2013/8/28 10:22:59
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
7信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
OV7725包含读写位的地址是0x42,直接跳出是硬件没有收到握手响应信号。我这有个51上配置OV9650摄像头的代码,用的是TWI接口,要的话留个邮箱我把整个工程发给你。理论上你只需把地址0x60改为0x42就能跑通,如果跑不通,检查你的硬件电路。如OV7725的各个电压是否满足。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/8/29 10:20:41
unconscious(论坛新手)
unconscious
头衔:社区公民
帮派:无帮无派
帖数:67
金钱:746
积分:86
注册时间:2013/8/2
8信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

好的,非常感谢!unconscious_525@163.com


^_^
等级:论坛新手 参考IP地址:*.*.*.*
2013/8/29 10:27:14
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
9信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
邮件已发,请查收


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/8/29 19:05:57
11
1
1/2
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154041 Call, 1 Queries, Processed in 0.031250 second(s),