#include "user_iam20680.h" //struct iam20680_dev spi2_dev; IAM20680_t spi2_dev; tdk_value iam20680; 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); 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, ®_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() { IAM20680_cfg_t cfg; IAM20680_init(&spi2_dev, &cfg); } 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; } }