• 大小: 13KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: 其他
  • 标签: STM32  LIS3DH  IIC  

资源简介

STM32F03通过模拟IIC读取LIS3DH 解析数据获取加速度和角度。 串口1输出电脑串口助手,直接用即可,代码规范,好移植 STM32F03通过模拟IIC读取LIS3DH 解析数据获取加速度和角度。 串口1输出电脑串口助手,直接用即可,代码规范,好移植

资源截图

代码片段和文件信息

//测试加速度传感器部分,实现数据的解析、透传、配置
//qq 363530137
#include “delay.h“
#include “sys.h“
#include “gps.h“
#include “usart.h“
#include “io.h“ 
#include “string.h“
#include 
#include “speed.h“
#include “iic.h“
#include “li_exit.h“
#include “math.h“
__align(4) u8 dtbuf[50];    //打印缓存器
u8 TEMP_BUF[1024];//暂存数组
AxesRaw_t ddata;
void lis3dhinit(void)
{
unsigned char  response=0;
response = LIS3DH_SetODR(LIS3DH_ODR_100Hz);
sprintf((char *)dtbuf“设置采样率:100Hz%d\r\n“response);  
USART1_Send_String(dtbuf);
response = LIS3DH_SetMode(LIS3DH_NORMAL);
sprintf((char *)dtbuf“设置工作模式:NORMAL%d\r\n“response);  
USART1_Send_String(dtbuf);
response = LIS3DH_SetFullScale(LIS3DH_FULLSCALE_2);
sprintf((char *)dtbuf“设置量程:FULLSCALE_2%d\r\n“response);  
USART1_Send_String(dtbuf);
response = LIS3DH_SetAxis(LIS3DH_X_ENABLE | LIS3DH_Y_ENABLE | LIS3DH_Z_ENABLE);
sprintf((char *)dtbuf“使能XYZ轴:XYZ_ENABLE%d\r\n“response);  
USART1_Send_String(dtbuf);
}
void LIS3DH_get_angle(float acc_x float acc_y float acc_z)
{
float angle_xangle_yangle_z;
//换算为加速度
angle_x=acc_x*4/65536*1000;
angle_y=acc_y*4/65536*1000;
angle_z=acc_z*4/65536*1000;
sprintf((char *)dtbuf“加速度:  [X]%dmg\r\n“(int)((float)angle_x));
USART1_Send_String(dtbuf);delay_ms(200); 
sprintf((char *)dtbuf“加速度:  [Y]%dmg\r\n“(int)((float)angle_y));
USART1_Send_String(dtbuf);delay_ms(200); 
sprintf((char *)dtbuf“加速度:  [Z]%dmg\r\n“(int)((float)angle_z));
USART1_Send_String(dtbuf);delay_ms(200);

//换算角度
angle_x = (atan(angle_x / sqrt(angle_y*angle_y + angle_z*angle_z)))*180/3.14;
angle_y = (atan(angle_y / sqrt(angle_x*angle_x + angle_z*angle_z)))*180/3.14;
angle_z = (atan(angle_z / sqrt(angle_x*angle_x + angle_y*angle_y)))*180/3.14;
sprintf((char *)dtbuf“角度:  [X]%d°\r\n“(int)((float)angle_x));
USART1_Send_String(dtbuf);delay_ms(200); 
sprintf((char *)dtbuf“角度:  [Y]%d°\r\n“(int)((float)angle_y));
USART1_Send_String(dtbuf);delay_ms(200); 
sprintf((char *)dtbuf“角度:  [Z]%d°\r\n“(int)((float)angle_z));
USART1_Send_String(dtbuf);delay_ms(200);
}
int main(void)
{
int lisid=0;
unsigned char lisidtemp=0;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组配置
USART1_Configuration(115200);
IO_init();
IIC_Init();
delay_ms(10); 
lis3dhinit();
delay_ms(10); 
LIS3DH_GetWHO_AM_I(&lisidtemp);  // 读取传感器内部ID
lisid=(int)lisidtemp;
sprintf((char *)dtbuf“LIS3DH ID:0x%X\r\n“lisid);  
USART1_Send_String(dtbuf);
delay_ms(50); 
while(1)
{
  LIS3DH_GetAccAxesRaw(&ddata);   // 读取加速度初始值
  delay_ms(10); 
sprintf((char *)dtbuf“传感器原始值:  x=%d   y=%d   z=%d\r\n“ddata.AXIS_Xddata.AXIS_Yddata.AXIS_Z);  
USART1_Send_String(dtbuf);
    delay_ms(200); 
LIS3DH_get_angle(ddata.AXIS_X ddata.AXIS_Y ddata.AXIS_Z);//解析
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5846  2019-04-11 11:02  IIC\iic.c

     文件        863  2019-04-11 11:02  IIC\iic.h

     目录          0  2019-04-11 11:02  IIC

     文件      51187  2019-04-11 11:02  SPEED\speed.c

     文件      21292  2019-04-10 14:38  SPEED\speed.h

     目录          0  2019-04-11 11:02  SPEED

     文件       2964  2019-04-11 14:35  main.c

----------- ---------  ---------- -----  ----

                82152                    7


评论

共有 条评论