分享

四轴

 奔跑的瓦力 2015-04-06
/*
 * 获取角速度。
 * 异步,读取成功后,l3g4200d_measureCompleted()会被调用。
 * 返回值 : {L3G4200D_RT_NORMAL,L3G4200D_RT_BUS_BUSY} */
uint8_t l3g4200d_measureOmega(void)
{
    if(I2C_transmit(L3G4200D_WHICH_I2C,l3g4200d_measureOmega_callback_reg) == I2C_RT_TRANSMIT_NORMAL)
        return L3G4200D_RT_NORMAL;
    return L3G4200D_RT_BUS_BUSY;
}

/*
 * 读角速度的I2C回调函数,设置当前寄存器地址。 */
uint8_t l3g4200d_measureOmega_callback_reg(uint8_t seq,uint8_t * data)
{
    if(seq == 0)
    {
        *data = I2C_addressToByte_write(L3G4200D_ADDRESS);
        return I2C_RT_ACK;
    }
    if(seq == 1)
    {
        *data = L3G4200D_REG_OMEGA; /* 角速度数据的寄存器地址。 */
        return I2C_RT_ACK;
    }
    //
    I2C_setNextCallback(L3G4200D_WHICH_I2C,l3g4200d_measureOmega_callback_read);
    return I2C_RT_REPEAT_START_OR_STOP;
}

/*
 * 读角速度的I2C回调函数,读取数据。 */
uint8_t l3g4200d_measureOmega_callback_read(uint8_t seq,uint8_t * data)
{
    if(seq == 0)
    {
        *data = I2C_addressToByte_read(L3G4200D_ADDRESS);
        return I2C_RT_ACK;
    }
    if(seq > L3G4200D_BUFFER_SIZE)
        return I2C_RT_STOP;
    //
    l3g4200d_var.buffer_8u[seq-1] = *data;
    if(seq == L3G4200D_BUFFER_SIZE)
    {
        l3g4200d_measureCompleted();
        return I2C_RT_NACK;
    }
    return I2C_RT_ACK;
}/*
 * 获取角速度。
 * 异步,读取成功后,l3g4200d_measureCompleted()会被调用。
 * 返回值 : {L3G4200D_RT_NORMAL,L3G4200D_RT_BUS_BUSY} */
uint8_t l3g4200d_measureOmega(void)
{
    if(I2C_transmit(L3G4200D_WHICH_I2C,l3g4200d_measureOmega_callback_reg) == I2C_RT_TRANSMIT_NORMAL)
        return L3G4200D_RT_NORMAL;
    return L3G4200D_RT_BUS_BUSY;
}

/*
 * 读角速度的I2C回调函数,设置当前寄存器地址。 */
uint8_t l3g4200d_measureOmega_callback_reg(uint8_t seq,uint8_t * data)
{
    if(seq == 0)
    {
        *data = I2C_addressToByte_write(L3G4200D_ADDRESS);
        return I2C_RT_ACK;
    }
    if(seq == 1)
    {
        *data = L3G4200D_REG_OMEGA; /* 角速度数据的寄存器地址。 */
        return I2C_RT_ACK;
    }
    //
    I2C_setNextCallback(L3G4200D_WHICH_I2C,l3g4200d_measureOmega_callback_read);
    return I2C_RT_REPEAT_START_OR_STOP;
}

/*
 * 读角速度的I2C回调函数,读取数据。 */
uint8_t l3g4200d_measureOmega_callback_read(uint8_t seq,uint8_t * data)
{
    if(seq == 0)
    {
        *data = I2C_addressToByte_read(L3G4200D_ADDRESS);
        return I2C_RT_ACK;
    }
    if(seq > L3G4200D_BUFFER_SIZE)
        return I2C_RT_STOP;
    //
    l3g4200d_var.buffer_8u[seq-1] = *data;
    if(seq == L3G4200D_BUFFER_SIZE)
    {
        l3g4200d_measureCompleted();
        return I2C_RT_NACK;
    }
    return I2C_RT_ACK;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多