单片机学习小组
直播中

陈芮雪

7年用户 227经验值
私信 关注

请问有谁用过OPT3001光传感器吗?

现在调试遇到点问题,跪求帮助

回帖(3)

qwe041

2019-8-7 08:43:39
什么问题,上图
举报

张怡

2019-8-7 08:56:55
//获取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表示我发的地址都没有回应
举报

蒲泛粟

2019-8-7 09:09:01
IIC的底层我用的是我们STM32F407开发板的程序改的 逻辑没有变动
举报

更多回帖

发帖
×
20
完善资料,
赚取积分