联发科Linkit One试用--飞控,平衡装置构想

http://www.eetrend.com/files-eetrend/forum/201601/100061592-73491-1.jpg<br />
作者:尹海田
初步想法:
利用Linkit one模拟数据采集,将开发板与陀螺仪单元BMM050相连接实时监测BMM050模拟端口数据,经过LinkitOne处理后,判断姿态是否变化,如果姿态变化并达到一定程度,数字口有输出并提示。

此系统可以用作飞控,平衡装置。

以下为主程序代码:
s8 BMM050_SPI_bus_read(u8 dev_addr, u8 reg_addr, u8 *reg_data, u8 cnt)

{

s32 iError=BMM050_INIT_VALUE;

u8 array[SPI_BUFFER_LEN]={MASK_DATA1};

u8 stringpos;

array[BMM050_INIT_VALUE] = reg_addr|MASK_DATA2;

for (stringpos = BMM050_INIT_VALUE; stringpos < cnt; stringpos++) {

*(reg_data + stringpos) = array[stringpos+C_BMM050_ONE_U8X];

}

return (s8)iError;

}

s8 BMM050_SPI_bus_write(u8 dev_addr, u8 reg_addr, u8 *reg_data, u8 cnt)

{

s32 iError = BMM050_INIT_VALUE;

u8 array[SPI_BUFFER_LEN * C_BMM050_TWO_U8X];

u8 stringpos = BMM050_INIT_VALUE;

for (stringpos = BMM050_INIT_VALUE; stringpos < cnt; stringpos++) {

array[stringpos * C_BMM050_TWO_U8X] = (reg_addr++) & MASK_DATA3;

array[stringpos * C_BMM050_TWO_U8X + C_BMM050_ONE_U8X] = *(reg_data + stringpos);

}

return (s8)iError;

}