read sensor

This commit is contained in:
sdes1
2025-11-11 17:37:12 +01:00
parent f18a2e4fb5
commit 67c0c2c90e
2 changed files with 49 additions and 1 deletions

View File

@@ -20,10 +20,10 @@
void InitDoneCallback(void * p_arg) {
(void) p_arg;
UCOS_Print("OS started!\r\n");
mpu9250_Imu_Init(0);
}
int main(void) {
MMUInit();
UCOSStartup(InitDoneCallback);
while (1)

View File

@@ -26,6 +26,13 @@
static int16_t _imu_accMaxData[3]={0,0,0}; //x, y, z
static int16_t _imu_accMinData[3]={0,0,0}; //x, y, z
int16_t accelData[3];
int16_t gyroData[3];
int16_t drawBuffer[1000];
static XIicPs Iic;
XIicPs_Config *Config;
/**
* Function Prototypes
@@ -50,8 +57,49 @@ int mpu9250_CalculateAngle(void *pdata){
* Initialize I2C and MPU
*/
int mpu9250_Imu_Init(void *pdata){
//mpu9250_Write_Reg();
mpu9250_Iic_Init();
mpu9250_Write_Reg(29, 5);
//uint8_t rxbuf[20];
uint16_t i=0;
while(1){
mpu9250_Read_Data(0x3B, 6, (u8*)accelData);
mpu9250_Read_Data(0x43, 6, (u8*)gyroData);
drawBuffer[i]=(int16_t)((accelData[0]&0xFF)<<8 | (accelData[8]&0xFF00)>>8);
i=(i+1)%1000;
OSTimeDly(1);
}
}
static uint8_t mpu9250_Iic_Init(){
Config = XIicPs_LookupConfig(IIC_DEVICE_ID) ;
XIicPs_CfgInitialize(&Iic, Config, Config->BaseAddress);
s32 err;
err = XIicPs_SelfTest(&Iic);
if(err == XST_SUCCESS)
UCOS_Printf("i2c selftest succcess\r\n");
else
UCOS_Printf("i2c selftest fail\r\n");
err = XIicPs_SetSClk(&Iic, 400000);
if(err != XST_SUCCESS)
UCOS_Printf("failed to set i2c speed\r\n");
}
static uint8_t mpu9250_Write_Reg(uint8_t iic_address, uint8_t data){
uint8_t tx_buf[] = {iic_address, data};
return XIicPs_MasterSendPolled(&Iic, tx_buf, sizeof(tx_buf), MPU9250_AD);
}
static int8_t mpu9250_Read_Data(uint8_t iic_address, uint8_t length, u8 RecvBuffer []){
s32 err = XIicPs_MasterSendPolled(&Iic, &iic_address, 1, MPU9250_AD);
if(err != XST_SUCCESS)
return -1;
return XIicPs_MasterRecvPolled(&Iic, RecvBuffer, length, MPU9250_AD);
}