ST六轴传感器LSM6DSO使用记录

1、前言

LSM6DSO是ST公司的六轴传感器,集成三轴加速度和三轴陀螺仪。

2、传感器特性

加速度支持±2/±4/±8/±16 g 量程;
陀螺仪支持±125/±250/±500/±1000/±2000 dps 量程;
支持1.71V to 3.6 V供电;
支持SPI、I²C 、I3C接口;
支持跌落、唤醒、4D/6D方向,单击、双击等中断; 集成温度传感器;
在高性能模式下功耗为0.55mA;
9kbyte FIFO ±2/±4/±8/±16 g 加速度量程;
封装:2.5 mm x 3 mm x 0.83 mm。
在这里插入图片描述

3、参考资料

ST官方参考代码:
https://github.com/STMicroelectronics/STMems_Standard_C_drivers/tree/master/lsm6dso_STdC,ST的传感器,基本都在这里能找到。
其他参考代码:
https://github.com/arduino-libraries/Arduino_LSM6DSOX
https://github.com/micropython-Chinese-Community/mpy-lib/tree/master/sensor/LSM6DSO。

4、硬件模式

在这里插入图片描述
最简单的是模式1,模式2、模式3、模式4比较复杂,可以外接传感器,摄像头等。

5、I2C读写地址

在这里插入图片描述
可以看出,与SA0有关,SA0置高,或者拉低,I2C的地址是不一样的。

6、寄存器

6.1、设备ID

只读,出厂已经固化在硬件里面了,可以通过读写这个寄存器,判断设备是否存在,通讯是否正常,设备的ID是0x6C。
在这里插入图片描述

6.2、加速度控制寄存器

在这里插入图片描述
这个寄存器可以设置加速度的量程、输出速率等;

6.3、陀螺仪控制寄存器

在这里插入图片描述这个寄存器可以设置陀螺仪的量程、输出速率等;

6.4、状态寄存器

在这里插入图片描述
通过读取这个寄存器可以判断,传感器是否有新的数据。

6.5、温度传感器

在这里插入图片描述
2个寄存器,输出的是有符号数据。

6.6、陀螺仪数据传感器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总共6个寄存器,分x、y、z三轴的高位和低位,这里要注意,输出的是有符号数据

6.7、加速度数据传感器

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
总共6个寄存器,分x、y、z三轴的高位和低位,这里要注意,输出的是有符号数据

7、核心代码

7.1、传感器初始化
void LSM6DSOInit(void)
{
   	
	I2C_Init();
	
	if(LSM6DSO_ID==LSM6DSOReadReg(LSM6DSO_ADDRESS,LSM6DSO_WHO_AM_I))//设备ID
	{
   
		printf("device exist\r\n");
	}
	else
	{
   
		printf("device not exist\r\n");
	}
	
	LSM6DSOWriteByteReg(LSM6DSO_ADDRESS,LSM6DSO_CTRL1_XL,ODR_XL_104Hz|FS_XL_2g);
	LSM6DSOWriteByteReg(LSM6DSO_ADDRESS,LSM6DSO_CTRL2_G,ODR_G_104Hz|FS_G_250);
}
7.2、读数据
void LSM6DSOPolling(void)
{
   
	static uint32_t curtick=0;
	
	if(SystemGetTick()-curtick>=1000)//1s读取一次
	{
   
		uint8_t status=0;
		int16_t temp_raw;
		float temp_deg;
		int16_t acc_x_raw ,acc_y_raw, acc_z_raw, gyr_x_raw, gyr_y_raw, gyr_z_raw;
	    float acc_x ,acc_y, acc_z, gyr_x, gyr_y, gyr_z;

		status=LSM6DSOReadReg(LSM6DSO_ADDRESS,LSM6DSO_STATUS_REG);//读状态
		
		if(status & TEM_DATA_AVAILABLE)
		{
   
			temp_raw=LSM6DSOReadReg(LSM6DSO_ADDRESS,LSM6DSO_OUT_TEMP_L)|(
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

freemote

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值