陀螺仪BMI323驱动开发测试(基于HAL库SPI通信)

参考资料

编写代码

读取芯片ID
c 复制代码
void BMI160_Init(void)
{
    uint16_t chipID = BMI323_read(BMI160_REG_CHIP_ID);
    debug("BMI323芯片ID为0x%x;", chipID);
    if (chipID != 0x43)
    {
        debug("未检测到BMI323;");
    }
    else
        debug("检测到陀螺仪BMI323;");
    u8 buf_config[2] = {0xC9, 0x70};
    BMI160_WriteBytes(0x21, buf_config, 2);
    uint16_t state = BMI323_read(0x02);
    debug("BMI323传感器状态为0x%x;", state);
    prev_yaw = agv_currentAngle.f;
}
uint16_t BMI323_read(uint8_t reg)
{
    uint16_t value;
    HAL_GPIO_WritePin(BMI160_CS_GPIO_Port, BMI160_CS_Pin, GPIO_PIN_RESET);
    SPI_TransferByte(reg | 0x80);
    value = SPI_TransferByte(0) << 8; /* 读取高8位字节 */
    value |= SPI_TransferByte(0);     /* 读取低8位字节 */
    HAL_GPIO_WritePin(BMI160_CS_GPIO_Port, BMI160_CS_Pin, GPIO_PIN_SET);
    return value;
}
uint8_t SPI_TransferByte(uint8_t data)
{
    uint8_t rxData;
    HAL_SPI_TransmitReceive(&hspi2, &data, &rxData, 1, HAL_MAX_DELAY);
    return rxData;
}
设置传感器模式
获取原始数据

测试

相关推荐
iot鑫鹏4 小时前
STM32问题集
stm32·单片机·嵌入式硬件
stm32发烧友20 小时前
基于STM32的智能家居安防系统设计
stm32·嵌入式硬件·智能家居
LightningJie20 小时前
STM32(hal库)中的定时器从模式TIM_SlaveConfigTypeDef结构体中的含义,以及可选参数的含义都是什么意思
stm32·单片机·嵌入式硬件
鱼与仙人掌1 天前
STM32:ADC
stm32·单片机·嵌入式硬件
yangpipi-1 天前
Linux系统程序设计--2. 文件I/O
linux·stm32·单片机
努力的里1 天前
【STM32开发】-FreeRTOS开发入手学习
stm32·学习·freertos·rtos
wenchm2 天前
细说STM32单片机USART中断收发RTC实时时间并改善其鲁棒性的另一种方法
stm32·单片机·实时音视频
盼海2 天前
stm32 ADC实例解析(3)-多通道采集互相干扰的问题
stm32·单片机·嵌入式硬件
LightningJie2 天前
STM32中中断的回调函数是如何执行的?(窗口看门狗为例)
stm32·单片机·嵌入式硬件
非概念2 天前
STM32学习笔记--什么是位段操作(位带BitBand操作)?有什么用?
笔记·stm32·学习