LSM6DSV16XTR STM32 硬件spi驱动

打印 上一主题 下一主题

主题 1032|帖子 1032|积分 3096

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在使用LSM6DSV16XTR时硬件i2c接口被占用,不想要共用其他装备所以就把芯片的接口从i2c改为spi接口。硬件接线如下:


spi设置如下:


在驱动代码中做如下更改:
  1. int32_t platform_write(void *handle, uint8_t reg, const uint8_t *bufp, uint16_t len)
  2. {
  3.         uint8_t address = reg & 0x7F;
  4. //  HAL_I2C_Mem_Write(handle, LSM6DSV16X_I2C_ADD_L, reg, I2C_MEMADD_SIZE_8BIT, (uint8_t*) bufp, len, 0xFF);
  5.         HAL_GPIO_WritePin(GYRO_CS_GPIO_Port,  GYRO_CS_Pin, GPIO_PIN_RESET);
  6.         HAL_SPI_Transmit(handle, &address, 1, 0xffff);
  7.         HAL_SPI_Transmit(handle, bufp, len, 0xffff);
  8.         HAL_GPIO_WritePin(GYRO_CS_GPIO_Port,  GYRO_CS_Pin, GPIO_PIN_SET);
  9.        
  10.   return 0;
  11. }
  12. int32_t platform_read(void *handle, uint8_t reg, uint8_t *bufp, uint16_t len)
  13. {
  14.         uint8_t address = reg | 0x80;
  15. //  HAL_I2C_Mem_Read(handle, LSM6DSV16X_I2C_ADD_L, reg, I2C_MEMADD_SIZE_8BIT, bufp, len, 0xFF);
  16.         HAL_GPIO_WritePin(GYRO_CS_GPIO_Port,  GYRO_CS_Pin, GPIO_PIN_RESET);
  17.         HAL_SPI_Transmit(handle, &address, 1, 0xffff);
  18.        
  19.         HAL_SPI_Receive(handle, bufp, len, 0xffff);
  20.         HAL_GPIO_WritePin(GYRO_CS_GPIO_Port,  GYRO_CS_Pin, GPIO_PIN_SET);
  21.        
  22.   return 0;
  23. }
复制代码
测试ID读取乐成。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

惊雷无声

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表