[环境传感器] 求LPS22HB压力传感器驱动

hssjj1211   2017-5-25 16:47 楼主
  最近在调试LPS22HB压力传感器驱动,不知道是程序有问题还是硬件有问题,读寄存器WHO_AM_I 都没有成功,求各位大神指点!急!!!!!!!!!!!!!!

回复评论 (11)

2推荐 littleshrimp 

STSW-STLKT01例程里有这个驱动,官方的

hts221.rar (17.07 KB)
(下载次数: 102, 2017-5-26 09:06 上传)

虾扯蛋,蛋扯虾,虾扯蛋扯虾
点赞  2017-5-26 09:07
LPS22还是比较好用的,寄存器不多,容易计算。如果是I2C方式,注意器件地址不要设置错误。
点赞  2017-5-25 20:19
引用: dcexpert 发表于 2017-5-25 20:19
LPS22还是比较好用的,寄存器不多,容易计算。如果是I2C方式,注意器件地址不要设置错误。

请问你有写好的驱动吗?可以参考下吗?
点赞  2017-5-25 20:31
引用: hssjj1211 发表于 2017-5-25 20:31
请问你有写好的驱动吗?可以参考下吗?

我有micropython的程序,可以参考。

https://bbs.eeworld.com.cn/thread-513415-1-1.html

另外sensortile的软件包中有C语音的驱动。
点赞  2017-5-25 22:56
引用: littleshrimp 发表于 2017-5-26 09:07
STSW-STLKT01例程里有这个驱动,官方的

谢谢大神
点赞  2017-5-26 11:35
引用: dcexpert 发表于 2017-5-25 22:56
我有micropython的程序,可以参考。

https://bbs.eeworld.com.cn/thread-513415-1-1.html

另外senso ...

大哥,我没找到C语言驱动包啊?能再发一下吗?或直接发到我邮箱327209795@qq.com
点赞  2017-5-26 16:22

哪位大神帮我分析下我写的LPS22HB驱动程序,用的STM32单片机,采用的是SPI四线协议,看我的程序哪里有问题,特别是Read_LPS22HB()和Wrrite_LPS22HB()两个函数是不是有问题?




#include "LPS22HB.h"
#include "delay.h"       

void delay(void)       
{
        u8 i=0;
        for(i=0;i<10;i++)
        {
                ;
        }
}




void WRITE_LPS22HB(u8 adress ,u8 data)
{
       u8 i;
        u16 temp=adress*256+data;
       
        LPS_CS = 1;
        LPS_SCLK = 1;
        LPS_CS = 0;
        delay_ms(1);
        for(i=0;i<16;i++)
        {
                LPS_SCLK= 0;               
                temp=temp<                 if(temp&0x8000)
                {               
                   Write_LPS=1;
                }
                else
                {
                         Write_LPS=0;
                }       
                delay();
                delay_us(1);       
                LPS_SCLK = 1;       
                delay();
                delay_us(1);       
        }
        LPS_CS = 1;       
}


void Read_LPS22HB(u8 adress,u8*data,u8 nBytesToRead)
{
       
        u8 i,j;
        LPS_CS = 0;
        delay_ms(1);
        LPS_SCLK = 1;
        for(i=0;i<8;i++)
        {
                LPS_SCLK= 0;
               
                adress=adress<                
                if(adress&0x80)
                {               
                   Write_LPS=1;
                }
                else
                {
                         Write_LPS=0;
                }       
                delay();       
                delay_us(1);               
                LPS_SCLK = 1;
                delay();
                delay_us(1);                       
        }
        for(j=0;j         {
                for(i=0;i<8;i++)
                {
                        LPS_SCLK= 0;                       
                        data[j] = data[j]<< 1;
                        if(Read_LPS==1)
                        {
                                data[j] = data[j]+1;
                        }
                        delay();
                        delay_us(1);
                        LPS_SCLK = 1;
                        delay();
                        delay_us(1);
                }
  }
        LPS_CS = 1;
       
}       




void LPS22HB_Init(void)
{
   RCC->APB2ENR|=1<<3;    //使能PORTB时钟                         

   GPIOB->CRH&=0X0000FFFF;
   GPIOB->CRH|=0X83330000;

   WRITE_LPS22HB(0x10,0x20); // 写控制寄存器地址
   delay_ms(1);       
}

u16 adress=0;
u32 press=0;
u16 temper=0;
void LPS22HB_test(void)
{
    u8 temp[5]={0};               
    Read_LPS22HB(0x0F,temp,1);
    adress=temp[0];
    delay_ms(100);
    Read_LPS22HB(0x28,temp,5);
    press=temp[0]*65536+temp[1]*256+temp[2];
    temper=temp[3]*256+temp[4];

}








点赞  2017-5-31 10:40
引用: hssjj1211 发表于 2017-5-31 10:40
哪位大神帮我分析下我写的LPS22HB驱动程序,用的STM32单片机,采用的是SPI四线协议,看我的程序哪里有问 ...

你好,请问是不是早调试完成了,我这遇到问题,读who_am_i就是不对,请教一下
点赞  2017-12-20 17:27
楼主你好,请问使用spi需不需要配置3线或者4线啊?我见官方提供的例程代码没有进行配置。我改写了这个代码,读出来的压力值不对,只有0.7kPa,温度值好像是对的。请指教,谢谢。

https://github.com/STMicroelectr ... /read_data_simple.c
点赞  2018-12-24 10:29
明白了,未配置默认是4线。
点赞  2018-12-24 16:04
大佬搞出来没,能不能代码发我看看
点赞  2019-12-31 14:22
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复