LIS3DHTR-STM32F103使用

这篇博客详细介绍了如何在STM32F103单片机上使用LIS3DHTR传感器,包括使用方法、参数配置、读写函数以及相关说明。
该文章已生成可运行项目,

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

读取与写入函数

/**************************************************************************
Name: u8 Lis3dh_ReadOneByte(u8 ReadAddr)
Function: IIC读取某地址下一字节数据
Description: 
Input: ReadAddr-读取地址
Output: 
Return: temp-读取的数据
Others: 
**************************************************************************/  
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();//正常sr应该为4.7ms这里直接用st  	 	   
	IIC_Send_Byte(ReadCommand);    	   
	IIC_Wait_Ack();	 
  	temp=IIC_Read_Byte(0);
 	IIC_Stop();    
	return temp;
}

/**************************************************************************
Name: void Lis3dh_WriteOneByte(u8 WriteAddr,u8 DataToWrite)
Function: IIC写入某地址下一字节数据
Description: 
Input: WriteAddr-写入地址 DataToWrite-写入数据
Output: 
Return:
Others: 
**************************************************************************/ 
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轴输出功能。需要按照数据手册调配。
该文件已提供下载,如有问题请私信联系。

传送门

本文章已经生成可运行项目
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值