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, ®_addr, 1, 1000);
|
2022-12-13 20:15:11 +08:00
|
|
|
HAL_SPI_Receive(&hspi2, reg_data, len, 1000);
|
2022-12-12 15:05:54 +08:00
|
|
|
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, ®_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-13 20:15:11 +08:00
|
|
|
IAM20680_cfg_t cfg;
|
2022-12-12 21:23:33 +08:00
|
|
|
IAM20680_init(&spi2_dev, &cfg);
|
2022-12-12 15:05:54 +08:00
|
|
|
|
|
|
|
}
|
2022-12-12 21:23:33 +08:00
|
|
|
|
|
|
|
void tdk_sample()
|
|
|
|
{
|
2022-12-13 20:15:11 +08:00
|
|
|
if ((IAM20680_get_interrupt_status(&spi2_dev) | 1) == 1)
|
2022-12-12 21:23:33 +08:00
|
|
|
{
|
|
|
|
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);
|
2022-12-13 20:15:11 +08:00
|
|
|
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;
|
2022-12-12 21:23:33 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|