OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3442|回复: 3

有人用过OPT3001光传感器吗?

[复制链接]

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2015-3-7
在线时间
12 小时
发表于 2016-11-23 10:41:45 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2016-10-21
在线时间
43 小时
发表于 2016-11-23 13:16:43 | 显示全部楼层
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2015-3-7
在线时间
12 小时
 楼主| 发表于 2016-11-23 19:17:03 | 显示全部楼层
本帖最后由 zhongrenjiang 于 2016-11-24 09:21 编辑

//获取OPT3001的设备ID 初始值为0x3001
uint GetOPT3001DeviceID()
{
        uint IDNum=0;
        uchar MSB=0;
        uchar LSB=0;
        OPT3001IIC_Start();         //IIC开始
        OPT3001IIC_Send_Byte(OPT3001WriteAddr); //发送写地址 0x88        OPT3001IIC_Wait_Ack();
        OPT3001IIC_Send_Byte(DEVICE_ID); //发送出厂编号寄存器地址 0x7F
        OPT3001IIC_Wait_Ack();
        OPT3001IIC_Start();         //IIC开始
        OPT3001IIC_Send_Byte(OPT3001ReadAddr); //发送读地址 0x89   
        OPT3001IIC_Wait_Ack();     
        MSB = OPT3001IIC_Read_Byte(ACK);        //读取两个字节
        LSB = OPT3001IIC_Read_Byte(NACK);
        IDNum=MSB*256+LSB;
        OPT3001IIC_Stop();
        return IDNum;        
}
硬件上我VIN--5V ADDR---GND INT未连接,现在用上面的函数去读取OPT3001的设备ID时都是0xff00,数据不正确,应该是0x3001,后来我经过仿真在IIC开始后,发送的第一个写地址0x88后,我用OPT3001IIC_Wait_Ack();函数监控返回值为0x01表示我发的地址都没有回应



回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2015-3-7
在线时间
12 小时
 楼主| 发表于 2016-11-23 19:19:15 | 显示全部楼层
IIC的底层我用的是我们STM32F407开发板的程序改的 逻辑没有变动
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 19:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表