예제 #1
0
//在main.c中被main_periodic()调用
void imu_periodic(void)
{
  //imu_init()中imu_aspirin2的状态已设为Aspirin2StatusUninit
  if (imu_aspirin2.status == Aspirin2StatusUninit) {
    mpu_configure();
    imu_aspirin2.status = Aspirin2StatusIdle;//imu空闲

    aspirin2_mpu60x0.output_length = 22;//读和写的字数
    aspirin2_mpu60x0.input_length = 22;
    //mpu的读缓冲区的buf[0]为中断寄存器状态和spi读
    aspirin2_mpu60x0.output_buf[0] = MPU60X0_REG_INT_STATUS + MPU60X0_SPI_READ;
    for (int i=1; i<aspirin2_mpu60x0.output_length; i++) {
        aspirin2_mpu60x0.output_buf[i] = 0;//剩余的21个缓冲区存放为0
    }
  }
  else {
    spi_submit(&(MPU6000_SPI_DEV), &aspirin2_mpu60x0);
  }
}
예제 #2
0
void imu_periodic(void)
{

  if (imu_aspirin2.status == Aspirin2StatusUninit) {
    mpu_configure();
    // imu_aspirin_arch_int_enable();
    imu_aspirin2.status = Aspirin2StatusIdle;

    aspirin2_mpu60x0.length = 22;
    aspirin2_mpu60x0.mosi_buf[0] = MPU60X0_REG_INT_STATUS + MPU60X0_SPI_READ;

    for (int i=1;i<aspirin2_mpu60x0.length;i++) {
      aspirin2_mpu60x0.mosi_buf[i] = 0;
    }
  }
  else {

    // imu_aspirin2.imu_tx_buf[0] = MPU60X0_REG_WHO_AM_I + MPU60X0_SPI_READ;
    // imu_aspirin2.imu_tx_buf[1] = 0x00;

    spi_rw(&aspirin2_mpu60x0);
  }
}