完善资料让更多小伙伴认识你,还能领取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开发板的程序改的 逻辑没有变动
|
|
|
|
只有小组成员才能发言,加入小组>>
3209 浏览 9 评论
2896 浏览 16 评论
3402 浏览 1 评论
8845 浏览 16 评论
3997 浏览 18 评论
9628浏览 3评论
1004浏览 3评论
521浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
523浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2251浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-2 02:57 , Processed in 0.860973 second(s), Total 53, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号