从今天开始要调试LSM6DSL的驱动,但是这个东西是什么还不知道是什么鬼呢,果断的百度了一下,通过介绍知道了它是加速度计,陀螺仪传感器,一看解释就明白了,之前做平衡小车用到了这种模块MPU6050,包括手机啊,六轴,包括小米的平衡车等都用到类似的模块,这款模块datasheet上说这款芯片低功耗不错,也正是因为这种特性,项目中也决定使用这款芯片。
不过这款芯片的相关资料并不是很多,先看看数据手册。
描述写的芯片很强大,很棒,是不是吹需要我们实际来用用。
从淘宝上买了一个这样的模块,接口使用的IIC,那么驱动该怎么写呢??
在写之前我们肯定要先接线
淘宝上买的现成的模块,CS SCL SDA这几个管脚肯定不用解释,IIC的引脚。
那其他的几个SA0,INT1,INT2,OCS SCX SDX是做什么用的??数据手册上有各个管脚的详细描述。
SA0管脚可作为spi的SDO或者IIC的器件地址
SDX和SCX也可作为iic的SDA和SCL.
INT1和INT2为可编程的外部中断。是不是数据发生改变就触发中断呢??
主控通过查看这个管脚状态就知道有没有发生变化,不用主控一直查询判断。
通过查看用到的管脚就是这几个呗, SDA SCL INT1,INT2(暂时不加),CS,SA0(这里CS,和SA0直接拉高,单片机不控制)。注意:CS拉高为IIC,拉低为SPI,这里我们使用IIC通讯。
当测试的加速度大于设置的阈值时,就会产生唤醒中断信号,这里我们配置IN1,所以主控芯片通过判断这个引脚的电平,来进行一些处理。
网上有位博主写的挺好,可以参考
https://blog.csdn.net/Strange_Gu/article/details/82963936
我使用的stm32F103Cbt6的主控芯片,使用IIC与传感器通讯,串口为串口1,使用的是485(就多了个片选)。详细代码可从以下链接下载。
https://download.csdn.net/download/lzs940320/11547743