read sensor
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user