完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
什么问题,上图
|
|
|
|
//获取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表示我发的地址都没有回应 |
|
|
|
IIC的底层我用的是我们STM32F407开发板的程序改的 逻辑没有变动
|
|
|
|
只有小组成员才能发言,加入小组>>
3322 浏览 9 评论
3000 浏览 16 评论
3497 浏览 1 评论
9070 浏览 16 评论
4090 浏览 18 评论
1192浏览 3评论
613浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
603浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2341浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1899浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 01:28 , Processed in 0.953439 second(s), Total 51, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号