read sensor
This commit is contained in:
@@ -20,10 +20,10 @@
|
|||||||
void InitDoneCallback(void * p_arg) {
|
void InitDoneCallback(void * p_arg) {
|
||||||
(void) p_arg;
|
(void) p_arg;
|
||||||
UCOS_Print("OS started!\r\n");
|
UCOS_Print("OS started!\r\n");
|
||||||
|
mpu9250_Imu_Init(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
|
|
||||||
MMUInit();
|
MMUInit();
|
||||||
UCOSStartup(InitDoneCallback);
|
UCOSStartup(InitDoneCallback);
|
||||||
while (1)
|
while (1)
|
||||||
|
|||||||
@@ -26,6 +26,13 @@
|
|||||||
static int16_t _imu_accMaxData[3]={0,0,0}; //x, y, z
|
static int16_t _imu_accMaxData[3]={0,0,0}; //x, y, z
|
||||||
static int16_t _imu_accMinData[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
|
* Function Prototypes
|
||||||
@@ -50,8 +57,49 @@ int mpu9250_CalculateAngle(void *pdata){
|
|||||||
* Initialize I2C and MPU
|
* Initialize I2C and MPU
|
||||||
*/
|
*/
|
||||||
int mpu9250_Imu_Init(void *pdata){
|
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