IMU_DUAL/TDK/user_iam20680.c

60 lines
1.4 KiB
C
Raw Normal View History

2022-12-12 15:05:54 +08:00
#include "user_iam20680.h"
2022-12-12 21:23:33 +08:00
//struct iam20680_dev spi2_dev;
IAM20680_t spi2_dev;
tdk_value iam20680;
2022-12-12 15:05:54 +08:00
extern SPI_HandleTypeDef hspi2;
uint8_t iam_read(uint8_t reg_addr, uint8_t *reg_data, uint16_t len)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);
HAL_SPI_Transmit(&hspi2, &reg_addr, 1, 1000);
HAL_SPI_Receive(&hspi2,reg_data, len, 1000);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET);
return 0;
}
uint8_t iam_write(uint8_t reg_addr, uint8_t *reg_data, uint16_t len)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);
HAL_SPI_Transmit(&hspi2, &reg_addr, 1, 1000);
HAL_SPI_Transmit(&hspi2, reg_data, len, 1000);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET);
return 0;
}
void user_dev_init1()
{
2022-12-12 21:23:33 +08:00
// spi2_dev.delay=HAL_Delay;
// spi2_dev.interface = IAM20680_SPI;
// spi2_dev.read=iam_read;
// spi2_dev.write=iam_write;
// iam20680_init(&spi2_dev);
IAM20680_cfg_t cfg;
IAM20680_init(&spi2_dev, &cfg);
2022-12-12 15:05:54 +08:00
}
2022-12-12 21:23:33 +08:00
void tdk_sample()
{
if((IAM20680_get_interrupt_status(&spi2_dev)|1)==1)
{
IAM20680_get_accel_data(&spi2_dev, &iam20680.x_a, &iam20680.y_a, &iam20680.z_a);
IAM20680_get_gyro_data(&spi2_dev, &iam20680.x_g, &iam20680.y_g, &iam20680.z_g);
iam20680. x_gyro= iam20680.x_g/131.0;
iam20680. y_gyro= iam20680.y_g/131.0;
iam20680. z_gyro= iam20680.z_g/131.0;
iam20680.x_acc = iam20680.x_a/16384.0*9.8;
iam20680.y_acc = iam20680.y_a/16384.0*9.8;
iam20680.z_acc = iam20680.z_a/16384.0*9.8;
}
}