你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

lsm6ds3tr-c传感器集合模式无法使用

[复制链接]
沸腾的冰块 提问时间:2024-2-28 09:31 / 未解决

按照文档里的说明,写的代码无法达到预期效果,但又不知道是哪里的问题。

官方文档说明如下:

image-20240227162654453.png

image-20240227162725321.png

image-20240227162742273.png

之后代码中涉及到的元器件均经过单独测试,单独使用情况下与stm32G4通信成功,但在“传感器集合”模式下无法通过该imu访问到外挂的磁力计。

个人编写代码逻辑如下:

/*初始化部分*/
//使能对嵌入功能寄存器的访问
bsp_spi_write(LSM6DS3TR_FUNC_CFG_ACCESS, 0x80, 2);
//第一外部I2C从接口的地址,写0x58,读0x59
bsp_spi_write(LSM6DS3TR_SLV0_ADD, 0x58, 2);
//即将写入_读取的寄存器
bsp_spi_write(LSM6DS3TR_SLV0_SUBADD,0x0A,2);
//要写入其中的值
bsp_spi_write(DATAWRITE_SRC_MODE_SUB_SLV0,0x0D,2);
//禁用对嵌入功能寄存器的访问
bsp_spi_write(LSM6DS3TR_FUNC_CFG_ACCESS, 0x00, 2);
//禁用I2C直通,启用内部上拉,启用I2C
bsp_spi_write(LSM6DS3TR_MASTER_CONFIG, 0x09, 2);

//配置加速度计 833Hz ODR, 16G scale, use LPF1 output
bsp_spi_write(LSM6DS3TR_CTRL1_XL, (LSM6DS3_CTRL1_XL_ODR833|LSM6DS3_CTRL1_XL_16G|LSM6DS3_CTRL1_XL_LPF1), 2);
//配置角速度计 6.66kHz ODR, 2000dps scale
bsp_spi_write(LSM6DS3TR_CTRL2_G, (LSM6DS3_CTRL2_G_ODR6666|LSM6DS3_CTRL2_G_2000DPS), 2);
/*读取外挂磁力计代码*/
//禁用I2C直通,禁用内部上拉,禁用I2C
bsp_spi_write(LSM6DS3TR_MASTER_CONFIG, 0x00, 2);
//关闭加速度计
bsp_spi_write(LSM6DS3TR_CTRL1_XL, 0x00, 2);
//关闭角速度计
bsp_spi_write(LSM6DS3TR_CTRL2_G, 0x00, 2);
//使能对嵌入功能寄存器的访问
bsp_spi_write(LSM6DS3TR_FUNC_CFG_ACCESS, 0x80, 2);
//第一外部I2C从接口的地址,写0x58,读0x59
bsp_spi_write(LSM6DS3TR_SLV0_ADD, 0x59, 2);
//即将写入_读取的寄存器
bsp_spi_write(LSM6DS3TR_SLV0_SUBADD, 0x01, 2);
//无抽取,1个外部传感器,读取连续6个寄存器
bsp_spi_write(LSM6DS3TR_SLAVE0_CONFIG, 0x06, 2);

->数据处理代码

//禁用对嵌入功能寄存器的访问
bsp_spi_write(LSM6DS3TR_FUNC_CFG_ACCESS, 0x00, 2);
//禁用I2C直通,启用内部上拉,启用I2C
bsp_spi_write(LSM6DS3TR_MASTER_CONFIG, 0x09, 2);
//配置加速度计 833Hz ODR, 16G scale, use LPF1 output
bsp_spi_write(LSM6DS3TR_CTRL1_XL, (LSM6DS3_CTRL1_XL_ODR833|LSM6DS3_CTRL1_XL_16G|LSM6DS3_CTRL1_XL_LPF1), 2);
//配置角速度计 6.66kHz ODR, 2000dps scale
bsp_spi_write(LSM6DS3TR_CTRL2_G, (LSM6DS3_CTRL2_G_ODR6666|LSM6DS3_CTRL2_G_2000DPS), 2);

->数据处理代码
...

其中数据处理代码在如代码所示的两个位置,尝试从0x2E(SENSORHUB1_REG)位置和0x66(OUT_MAG_RAW_X_L)位置均无法获取到任何有效信息(读出来的值为0)

求各位大佬看看哪里有问题,或者给个用了传感器集合模式的例程也行

收藏 评论2 发布时间:2024-2-28 09:31

举报

2个回答
Yude 回答时间:2024-2-28 17:59:51

建议下载官方链接的代码进行参考:

STMems_Standard_C_drivers/lsm6dsm_STdC/examples at master · STMicroelectronics/STMems_Standard_C_drivers · GitHub

STMems_Standard_C_drivers/lsm6dsm_STdC/examples at master · STMicroelectronics/STMems_Standard_C_drivers

Platform-independent drivers for STMicroelectronics MEMS motion and environmental sensors, based on standard C programming language. - STMicroelectronics/STMems_Standard_C_drivers

st_yujie2510 回答时间:2024-2-29 13:48:11

你参考百度云盘上LSM6DS3 Sensor Hub功能更具体的说明

链接: https://pan.baidu.com/s/1SQdXgHKW0BC6H1YQXoG05w?pwd=xb3k 提取码: xb3k 复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v9的分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版