1. 目的
展示三轴加速度传感器中,z轴加速度实时波形图(一路通道),后面又展示了z轴角度(第二路通道)。
2. 具体实现过程
这是山外多功能调试助手的通信协议。
2.1 一路通道数据展示(部分代码)
初始化定时器
Timer1_Init(4000-1,168-1); //定时器1初始化,4ms
发送数据
void run_Array4(void){
array2[0] = 0x03; //放数据的数组
array2[1] = 0xFC;
acc_z_f1 = SCL3300.Read(ACC_Z); //读取一次加速度的值,这个值一般是0.9多
res_acc_z = (uint16_t)(acc_z_f1*1000); //乘以1000,转16位
acc1_z_temp8_l = res_acc_z&0x00FF; //取低8位
acc1_z_temp8_h = (res_acc_z&0xFF00)>>8; //取高8位
array2[2] = acc1_z_temp8_l; //先发低八位,后发高八位
array2[3] = acc1_z_temp8_h;
array2[4] = 0xFC;
array2[5] = 0x03;
for(n=0; n<6; n++){ //以数组形式发送
Usart_SendByte(array2[n]); //8位发送
}
}
每隔40ms发送一次数据,main中调用这个test()函数
void test(void){
if(z_count == 10){ //40ms = 4*10
z_count = 0;
run_Array4();
}
}
结果展示(这里的数据类型是选择uint16_t)
2.2 两路通道数据展示(部分代码)
发送数据,其他代码和上面是一样的。
void run_Array4(void){
array2[0] = 0x03;
array2[1] = 0xFC;
acc_z_f1 = SCL3300.Read(ACC_Z); //读取一次加速度的值,这个值一般是0.9多
res_acc_z = (uint16_t)(acc_z_f1*1000); //乘以1000,转16位
acc1_z_temp8_l = res_acc_z&0x00FF; //先低8位
acc1_z_temp8_h = (res_acc_z&0xFF00)>>8; //再高8位
array2[2] = acc1_z_temp8_l;
array2[3] = acc1_z_temp8_h;
acc_x_f1 = SCL3300.Read(ANG_Z); //读取一次角度的值
res_acc_x = (uint16_t)(acc_x_f1);
acc1_x_temp8_l = res_acc_x&0x00FF; //先低8位
acc1_x_temp8_h = (res_acc_x&0xFF00)>>8; //再高8位
array2[4] = acc1_x_temp8_l;
array2[5] = acc1_x_temp8_h;
array2[6] = 0xFC;
array2[7] = 0x03;
for(n=0; n<8; n++){
Usart_SendByte(array2[n]);
}
}
结果展示(这里的数据类型是选择uint16_t)