// 写寄存器 // 参数: 寄存器地址,待写数据的高8位,待写数据的低8位 void VsWriteReg(u8 addr,u16 data) { SPI_SetSpeed(SPI1,0);//低速 VS_XDCS_SET(1); //xDCS = 1 VS_CS_SET(0); //xCS = 0 VS_Write_Byte(VS_WRITE_COMMAND); //发送写寄存器命令 VS_Write_Byte(addr); //发送寄存器的地址 VS_Write_Byte(data>>8); //发送待写数据的高8位 VS_Write_Byte(data&0xff); //发送待写数据的低8位 VS_CS_SET(1); //xCS = 1 SPI_SetSpeed(SPI1,1);//高速 }
//读寄存器 u16 VsReadReg(u8 addr) { u16 res= 0; SPI_SetSpeed(SPI1,0);//低速 VS_XDCS_SET(1); //xDCS =1 VS_CS_SET(0); //xCS = 0 VS_Write_Byte(VS_READ_COMMAND); //发送读寄存器命令 VS_Write_Byte(addr);//发送寄存器的地址 res = (u16 )(VS_Read_Byte() << 8);//读取高8位数据 res |= VS_Read_Byte(); //读取低8位数据 VS_CS_SET(1); //xCS = 1 SPI_SetSpeed(SPI1,1);//高速 return res; //返回16位寄存器的值 }
/** * @brief IMU_Init */ uint32_t IMU_Init( void ) { #if defined(__MPU9250_H) if (MPU92_Init() != KS_OK) { return KS_ERROR; } #endif #if defined(__LPS22HB_H) if (LPS22_Init() != KS_OK) { return KS_ERROR; } #endif SPI_SetSpeed(hImu.handle, IMU_SPIx_SPEED_HIGH); delay_ms(10); return KS_OK; }