OpenEdv-开源电子网

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

关于I2C传感器的疑问,请求指教

[复制链接]

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
发表于 2018-9-6 10:44:12 | 显示全部楼层 |阅读模式
10金钱
我在配置一个传感器,他是I2C的接口控制的,然后我就使用IO模拟的方式开始进行初始化,初始化之后,我开始写一个寄存器的值,然后再读出来,然后发现一个很大的问题,没有应答,之后查看了资料做了以下尝试,还是没有应答

1、查看资料,有无上拉电阻,开发板是407的官方版,是有上拉电阻的。
2、电压不足的问题,我外接的传感器万用表测量电压是稳定的,4.5V
3、我测试的时候无限发送,然后用示波器测量,测量的结果是开始条件,然后发送0x2A器件地址都是对的,然后就是没有应答了。

我的传感器比较特殊,寄存器地址是16位的,数据的发送也必须是16位的,所以我改了一下,原子的历程如下
[mw_shl_code=applescript,true]void lepton_WriteOneByte(u16 WriteAddr,u16 DataToWrite)
{                                                                
u8 i2c_buf[2];       
        u8 i2c_buf1[2];
        i2c_buf[0]=(WriteAddr>>8)&0xFF;
        i2c_buf[1]=WriteAddr&0xFF;
        i2c_buf1[0]=(DataToWrite>>8)&0xFF;
        i2c_buf1[1]=DataToWrite&0xFF;       
  IIC_Start();  
        if(1)
        {
                IIC_Send_Byte(0X2A);            //·¢ËíD′Ãüáî
               
                IIC_Wait_Ack();
                IIC_Send_Byte(i2c_buf[0]);//·¢Ëí¸ßμØÖ·          
        }//else IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));   //·¢&#203;í&#198;÷&#188;tμ&#216;&#214;·0XA0,D′êy&#190;Y          
       
        IIC_Wait_Ack();          
    IIC_Send_Byte(i2c_buf[0]);   //·¢&#203;íμíμ&#216;&#214;·
       
        IIC_Wait_Ack();                                                                                                              
        IIC_Send_Byte(i2c_buf1[0]);     //·¢&#203;í×&#214;&#189;ú       
         
        IIC_Wait_Ack();                             
        IIC_Send_Byte(i2c_buf1[1]);     //·¢&#203;í×&#214;&#189;ú                                       
         
        IIC_Wait_Ack();         
  IIC_Stop();//2úéúò&#187;&#184;&#246;í£&#214;1ì&#245;&#188;t
        delay_ms(10);         
}[/mw_shl_code]
我看了几遍觉得代码应该没什么问题,
最后我查看了一下数据手册,有了一个问题想请教,
我需要为这个传感器提供时钟,我是在启动前用PWM的方式从SCL引脚输出一个时钟么??可能就是因为这个传感器才没有启动,所以请教一下这个问题,怎么为他提供时钟

QQ图片20180906103007.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-6 10:47:34 | 显示全部楼层
[mw_shl_code=applescript,true]void lepton_WriteOneByte(u16 WriteAddr,u16 DataToWrite)
{                              
u8 i2c_buf[2];  
    u8 i2c_buf1[2];
    i2c_buf[0]=(WriteAddr>>8)&0xFF;
    i2c_buf[1]=WriteAddr&0xFF;
    i2c_buf1[0]=(DataToWrite>>8)&0xFF;
    i2c_buf1[1]=DataToWrite&0xFF;   
  IIC_Start();  
    if(1)
    {
        IIC_Send_Byte(0X2A);        //·¢&#203;íD′&#195;üá&#238;
         
        IIC_Wait_Ack();
        IIC_Send_Byte(i2c_buf[0]);//·¢&#203;í&#184;&#223;μ&#216;&#214;·   
    }//else IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));   //·¢&#203;í&#198;÷&#188;tμ&#216;&#214;·0XA0,D′êy&#190;Y      
     
    IIC_Wait_Ack();   
    IIC_Send_Byte(i2c_buf[1]);   //·¢&#203;íμíμ&#216;&#214;·
     
    IIC_Wait_Ack();                                                        
    IIC_Send_Byte(i2c_buf1[0]);     //·¢&#203;í×&#214;&#189;ú  
     
    IIC_Wait_Ack();                 
    IIC_Send_Byte(i2c_buf1[1]);     //·¢&#203;í×&#214;&#189;ú                  
     
    IIC_Wait_Ack();     
  IIC_Stop();//2úéúò&#187;&#184;&#246;í£&#214;1ì&#245;&#188;t
    delay_ms(10);   
}[/mw_shl_code]
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-6 10:48:13 | 显示全部楼层
刚刚代码穿错了一个,修改是上面的
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-6 10:57:15 | 显示全部楼层
关山难越 发表于 2018-9-6 10:48
刚刚代码穿错了一个,修改是上面的

C:\Users\Ezreal\Desktop\IMG_20180906_105251.jpg
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-9-6 19:32:12 | 显示全部楼层
顶一下,,,
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2018-9-6 22:45:07 | 显示全部楼层
1、检查时序是否正确;
2、i2c地址是否正确。
参考这个i2c,无需经常调时序:
https://blog.csdn.net/qq_20553613/article/details/78878211
https://blog.csdn.net/qq_20553613/article/details/80822885
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 13:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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