• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

UVIS25读数一直是0

donatello 2017-11-01 浏览量:793

使用I2C接口的紫外线传感器UVIS25探测环境紫外线,代码如下:

#define UVIS25_ADDRESS                         0x8E
#define UVIS25_WHO_AM_I                        0x0F
#define UVIS25_CTRL_REG1                       0x20 
#define UVIS25_CTRL_REG2                       0x21
#define UVIS25_CTRL_REG3                       0x22
#define UVIS25_INT_CFG                         0x23
#define UVIS25_INT_SOURCE                      0x24
#define UVIS25_THS_UV                          0x25
#define UVIS25_STATUS_REG                      0x27
#define UVIS25_UV_OUT_REG                      0x28
int UVIS25_Init()
{
if(IIC1_ReadData(UVIS25_ADDRESS,UVIS25_WHO_AM_I)==0xca)
{
IIC1_WriteData(UVIS25_ADDRESS,0x01,UVIS25_CTRL_REG1);
IIC1_WriteData(UVIS25_ADDRESS,0x81,UVIS25_CTRL_REG2);
return 0;
}
return -1;
}
float UVIS25_GetUXindex()
{
  uint8_t temp=0,data=0;
  do
{
    temp=IIC1_ReadData(UVIS25_ADDRESS,UVIS25_STATUS_REG);
  }while(temp!=1);
IIC1_WriteData( UVIS25_ADDRESS,0x01,UVIS25_CTRL_REG2);
  data=IIC1_ReadData(UVIS25_ADDRESS,UVIS25_UV_OUT_REG);
  return (float)data/16;
}

while(1)
  {
     printf("UV指数:%f\n",UVIS25_GetUXindex());
     Delay_ms(500);
  }


探测出来的结果一直是0。能确保连线和I2C初始化是没有问题的,因为这个I2C接口同时也接了其它的I2C器件,也是可以正常工作的,请问这是硬件问题还是软件问题呢?

4.JPG

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:3
  • 代码里的I2C地址进行了移位操作没有?
donatello 回复了 chownn:0x8E/0x8F,肯定移位了啊 回复
电子老工程师 回复了 :TMCP0J106MTRF ESR是:5.3Ohm @ 100kHz,原型号:8欧姆 回复

  • 你的while中一直在读取,最好是加个延时再读试试,一般这种模块都是要有延时的。


电子老工程师 回复了 :2020年有停产通知, 官网推荐的替代料,NCP1234AD100R2G,跟客户在确认一下 回复

相关问题

问题达人换一批

UVIS25读数一直是0