LIS3DH 三轴加速度传感器使用流程及示例 |
您所在的位置:网站首页 › 多轴加速度传感器故障 › LIS3DH 三轴加速度传感器使用流程及示例 |
LIS3DH是一个三轴加速度传感器,可用于检测X、Y、Z轴上的加速度,以及设置阈值,在加速度超出阈值时触发中断,支持SPI和IIC读写。 下面主要是IIC方式读写: SPI方式读写类似,参考手册即可。一般情况下,可以用2根线,没必要用3线或者4线。而且IIC用GPIO模拟很方便,网上例程很多,这里就不贴了,搜一搜就有。 一、寄存器读写流程 首先硬件连接会决定该模块的IIC地址 如果SAO脚接地,IIC地址为0X30(不包含最低位). 如果接V3.3,则IIC地址为0X32(不包含最低位). 这个器件地址很重要,因为读写寄存器都是要先写一下对应的器件地址,然后再执行命令的。 注意先发送的器件地址只是前7位,最后一位决定的是读写位,0是写寄存器,1为读寄存器,所以写寄存器时是先写入“LIS_ADDR|0x00”,读的时候则是先写入“LIS_ADDR|0x01”,(LIS_ADDR这里指上文的IIC地址)。 a、主机向从机写一个字节,下表是通过IIC向LIS3DH寄存器写一个字节的流程。简单来说就是:先写1个字节的写命令+IIC地址,再写一个字节的你要写的寄存器地址,最后写一个字节你要写入寄存器的内容。 示例: //IIC写一个字节 //reg:寄存器地址 //data:数据 //返回值:0,正常 //其他,错误代码 uint8_t LIS_Write_Byte(uint8_t reg,uint8_t data) { IIC_Start(); IIC_Send_Byte(LIS_ADDR|0x00);//发送器件地址+写命令 if(IIC_Wait_Ack()) //等待应答 { IIC_Stop(); return 1; } IIC_Send_Byte(reg|0x00); //写寄存器地址 D7位为低用于单字节传输 IIC_Wait_Ack(); //等待应答 IIC_Send_Byte(data); //发送数据 if(IIC_Wait_Ack()) //等待ACK { IIC_Stop(); return 1; } IIC_Stop(); Sleep(5000); //休眠5ms return 0; }
b、LIS3DH读寄存器一个字节 流程:先写1个字节的写命令+IIC地址,再写你要读的寄存器,然后写1个字节的读命令+IIC地址,最后读一个字节的数据 示例: //IIC读一个字节 //reg:寄存器地址 //返回值:读到的数据 uint8_t LIS_Read_Byte(uint8_t reg) { uint8_t res=0x00; IIC_Start(); IIC_Send_Byte(LIS_ADDR|0x00);//发送器件地址+写命令 if(IIC_Wait_Ack()) //等待ACK { IIC_Stop(); return 1; } IIC_Send_Byte(reg); //写寄存器地址 IIC_Wait_Ack(); //等待应答 IIC_Start(); IIC_Send_Byte(LIS_ADDR|0x01); //发送器件地址+读命令 IIC_Wait_Ack(); //等待应答 res = IIC_Read_Byte(0); //读取数据,发送nACK IIC_Stop(); //产生一个停止条件 return res; }c、IIC连续写寄存器:
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |