LIS3DHTR-STM32F103使用
使用方法
该模块可通过IIC进行通讯。直接将模块的SCL接入PB6、SDA接入PB7,下载程序即可使用。
INT引脚可后续按照自己需求添加中断输出。
使用说明
参考LIS3DHTR芯片手册,找到时序以及地址的地方编写程序,封装成.c与.h文件。
使用时只需调用该外部接口函数以及修改寄存器配置参数即可。
配置参数需要对照数据手册。
可供调用函数
void Lis3dh_init(void);
u8 Lis3dh_Check(void);
u8 Read_STATUS_REG_AUX(void);
u16 Read_OUT_ADC1(void);
u16 Read_OUT_ADC2(void);
u16 Read_OUT_ADC3(void);
u8 Read_TEMP_CFG_REG(void);
u8 Write_TEMP_CFG_REG(void);
u8 Read_CTRL_REG1(void);
u8 Write_CTRL_REG1(void);
u8 Read_CTRL_REG2(void);
u8 Write_CTRL_REG2(void);
u8 Read_CTRL_REG3(void);
u8 Write_CTRL_REG3(void);
u8 Read_CTRL_REG4(void);
u8 Write_CTRL_REG4(void);
u8 Read_CTRL_REG5(void);
u8 Write_CTRL_REG5(void);
u8 Read_CTRL_REG6(void);
u8 Write_CTRL_REG6(void);
u8 Read_REFERENCE(void);
u8 Write_REFERENCE(void);
u8 Read_STATUS_REG(void);
u16 Read_OUT_X(void);
u16 Read_OUT_Y(void);
u16 Read_OUT_Z(void);
u8 Read_FIFO_CTRL_REG(void);
u8 Write_FIFO_CTRL_REG(void);
u8 Read_FIFO_SRC_REG(void);
u8 Read_INT1_CFG(void);
u8 Write_INT1_CFG(void);
u8 Read_INT1_SRC(void);
u8 Read_INT1_THS(void);
u8 Write_INT1_THS(void);
u8 Read_INT1_DURATION(void);
u8 Write_INT1_DURATION(void);
u8 Read_INT2_CFG(void);
u8 Write_INT2_CFG(void);
u8 Read_INT2_SRC(void);
u8 Read_INT2_THS(void);
u8 Write_INT2_THS(void);
u8 Read_INT2_DURATION(void);
u8 Write_INT2_DURATION(void);
u8 Read_CLICK_CFG(void);
u8 Write_CLICK_CFG(void);
u8 Read_CLICK_SRC(void);
u8 Read_CLICK_THS(void);
u8 Write_CLICK_THS(void);
u8 Read_TIME_LIMIT(void);
u8 Write_TIME_LIMIT(void);
u8 Read_TIME_LATENCY(void);
u8 Write_TIME_LATENCY(void);
u8 Read_TIME_WINDOW(void);
u8 Write_TIME_WINDOW(void);
u8 Read_ACT_THS(void);
u8 Write_ACT_THS(void);
u8 Read_ACT_DUR(void);
u8 Write_ACT_DUR(void);
参数配置区
#define TEMP_CFG_REG_Config 0x00
#define CTRL_REG1_Config 0x07
#define CTRL_REG2_Config 0x00
#define CTRL_REG3_Config 0x00
#define CTRL_REG4_Config 0x00
#define CTRL_REG5_Config 0x00
#define CTRL_REG6_Config 0x00
#define REFERENCE_Config 0x00
#define STATUS_REG_Config 0x00
#define FIFO_CTRL_REG_Config 0x00
#define INT1_CFG_Config 0x00
#define INT1_THS_Config 0x00
#define INT1_DURATION_Config 0x00
#define INT2_CFG_Config 0x00
#define INT2_THS_Config 0x00
#define INT2_DURATION_Config 0x00
#define CLICK_CFG_Config 0x00
#define CLICK_THS_Config 0x00
#define TIME_LIMIT_Config 0x00
#define TIME_LATENCY_Config 0x00
#define TIME_WINDOW_Config 0x00
#define ACT_THS_Config 0x00
#define ACT_DUR_Config 0x00
读取与写入函数
u8 Lis3dh_ReadOneByte(u8 ReadAddr)
{
u8 temp=0;
IIC_Start();
IIC_Send_Byte(WriteCommand);
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr);
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(ReadCommand);
IIC_Wait_Ack();
temp=IIC_Read_Byte(0);
IIC_Stop();
return temp;
}
void Lis3dh_WriteOneByte(u8 WriteAddr,u8 DataToWrite)
{
u8 res = 0;
IIC_Start();
IIC_Send_Byte(WriteCommand);
res += IIC_Wait_Ack();
IIC_Send_Byte(WriteAddr);
res += IIC_Wait_Ack();
IIC_Send_Byte(DataToWrite);
res += IIC_Wait_Ack();
IIC_Stop();
delay_ms(10);
}
说明
该模块有中断功能选择、温度检测功能、ADC采样功能、XYZ轴输出功能。需要按照数据手册调配。
该文件已提供下载,如有问题请私信联系。
传送门