littleshrimp 发表于 2017-12-2 15:22

lps22hb快速上手(一)验证一个传感器是否通信正常

LPS22HB是ST的一款超小体积的气压传感器,使用I2C接口通信,本贴将介绍LPS22HB在使用前的一些准备工作,和一些常见问题时的解决办法,这些方法同样适用于ST的其它传感器。一搬在入手一个新传感器时需要确定下边三件事:1、 传感器芯片是否正常这种情况多出现在我们手工焊板的时候,有些传感器体积比较小,手工焊接的过程非常痛苦,焊好的板子由于各种原因无法确定其是否能够正常工作,这些可能包括PCB设计错了、焊接时静电损坏器件、焊接温度过高损坏器件、焊接时引脚顺序弄反了、焊好后的芯片引脚和PCB焊盘接触不良等等。2、 传感器和单片机连接是否正常在传感器和单片机连接的时候,传感器对应的通信引脚是否正确连接到单片机对应的引脚,I2C的SCL和SDA有没有接反,SCL和SCA的上接电阻有没有接等等。3、 单片机驱动是否正常对于经常使用的单片机,通常都有一套经过验证的驱动,比如这个单片机的I2C曾经驱动过一颗EEPROM,我能确定它是正常的,否则在没有指定单片机经过验证的驱动库时往往需要生新设计或修改,而你刚写好的驱动是否好用这就是问题了。如果以上三点都无法确定,即不确定传感器板子工作是否正常也不确定单片机驱动是否正常,还有可能接线接错了,在焊好板子、连好线、写好驱动后我们要做的第一件事就是验证通信是否正常,ST的传感器都有一个叫做WHO AM I的寄存器,不同的器件对应不同的数值,LPS22HB的WHO_AM_I的寄存器地址是0x0F,对应的数值0xB1,所以只要读取0x0F得到0xB1基本就能排除以上三个不确定,证明通信是正常的,至少证明读操作是正常的。使用STM32调试LPS22HB是一件比较愉快的事,因为STM32提供了STM32CubeMX软件,能节省很多写代码和验证代码的时间。下面说说,如何用STM32驱动LPS22HB:1、打开STM32CubeMX,点New Project新建一个工程,输入要查找的单片机型号然后双击查找到的对应型号 2、使能对应的数字外设,我使用的板子是BlueCoin,LPS22HB连接在I2C1下的PB8和PB9引脚,所以先使能I2C13、单击PB8和PB9,将引脚功能选择为I2C1_SCL和I2C1_SDA4、 选择好后不需要对I2C1做更多配置,可直接生成代码 5、 用指定IDE打开工程,我用的是IAR,在main函数里添加2行用来读取who am I 的代码其中0xBA是LPS22HB的设备地址,因为开发板将LPS22HB的SA0接在VDD上,0x0F是WHO_AM_I的寄存器地址。 6、运行后看到读取到的who am i是0xB1证明通信成功可见使用STM32调试LPS22HB非常容易,只需写2行代码即可,能一次完成通信功能也是一件非常幸运的事,因为我使用的是官方提供的评估板,也使用官方提供的代码验证过传感器的功能,所以硬件问题可以全部排除,即使第一次调试没有成功我只能怀疑是自己写的代码出了问题而不用去考虑硬件。       实际测试时PCB可能是自己设计的,如果出问题解决起来会比较麻烦,为了节省调试时间前期最好使用官方的开发板验证,至少保证传感器硬件或者单片机驱动程序其中一个是正常的。也可以用已经验证过的硬件来验证新写的驱动或者用经过验证的驱动来验证新设计的传感器硬件。比如用另一个I2C正常的开发板读一下新画的传感器开发板,判断传感器硬件是否有问题,或者用一个I2C通信正常的外设验证这个单片机上新写的I2C驱动是否正常,否则只能拿起示波器或逻辑分析仪痛苦的抓取波形,看看单片机发的数据和传感器返回的数据是否正常再一步步分析了。

大大兵 发表于 2018-1-22 17:05

大神有没有spi驱动LPS22HB的例程

littleshrimp 发表于 2018-1-22 17:56

大大兵 发表于 2018-1-22 17:05
大神有没有spi驱动LPS22HB的例程

我手里的板子都是I2C接口的,没法用SPI测试
使用SPI方式应该比I2C容易,至少不用考虑器件地址下边是官方提供的LPS22HB驱动,你把Sensor_IO_Read和Sensor_IO_Write用SPI的方式实现一下试试
如果有什么问题再发贴提问

大大兵 发表于 2018-1-23 09:09

littleshrimp 发表于 2018-1-22 17:56
我手里的板子都是I2C接口的,没法用SPI测试
使用SPI方式应该比I2C容易,至少不用考虑器件地址下边是官方 ...

嗯,谢谢,我先看看这个官方例程,有问题再来请教您

permanent809 发表于 2018-4-20 16:07

楼主调试lps22用的iar具体是哪个版本?我试了一下报错,版本不对。

littleshrimp 发表于 2018-4-20 16:14

permanent809 发表于 2018-4-20 16:07
楼主调试lps22用的iar具体是哪个版本?我试了一下报错,版本不对。

试试7.7

permanent809 发表于 2018-4-20 20:18

littleshrimp 发表于 2018-4-20 16:14
试试7.7

找了半天没有7.7的,我下载7.8的试试。

littleshrimp 发表于 2018-4-20 21:06

permanent809 发表于 2018-4-20 20:18
找了半天没有7.7的,我下载7.8的试试。

试吧 向下兼容

SGMY 发表于 2024-4-6 21:15

感谢分享!我最近使用LPS25HB,也是使用IIC通信,板子是我自己画的,但是无法读到ID。LPS25HB和LPS22HB很像,我按照这个方法去读LPS25HB的ID发现读不到,于是我断定是硬件的问题,从网上买了一块开发板用这个方法可以读到ID,看样子是我的PCB Layout不对。
页: [1]
查看完整版本: lps22hb快速上手(一)验证一个传感器是否通信正常