打印
[应用相关]

STM32 HAL库 SPI 驱动LISDHTR

[复制链接]
661|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-6-18 08:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
最近博主在研究一款低功耗加速度计LIS3DH,该加速度计有两种通信模式,IIC和SPI方式。IIC通信方式搞了一下 就好了,但是SPI方式针扎了两天才做出来,现在和大家分享一下心得。

开发环境:MDK keil5

使用芯片:STM32L051C8T6

使用硬件:SPI1,PA4=CS,PA5=CLK,PA6=SDO,PA7=SDA

一、寄存器读写流程



SPI 读写操作
LIS3DTR SPI引脚图



SPI驱动LIS3DHTR分为三线驱动和四线驱动。

SPI从属时序图



从上图中可以看出当SPI读写前,先要将自己设置的CS引脚拉低,我自己在cubemx中将PA4设为CS引脚(这个可以自己设置没有要求)。






下面来介绍下CPOL和CPHA到底有什么用。

CPOL就是决定SCLK这个时钟信号线,在没有数据传输的时候的电平状态。

CPOL=0:空闲状态时,SCLK保持低电平

CPOL=1:空闲状态时,SCLK保持高电平



CPHA就是决定数据位传输是从第一个时钟(SCLK)边沿开始,还是第二个从二个时钟(SCLK)边沿开始。

CPHA=0:数据从第一个时钟(SLCK)边沿开始采集

CPHA=1:数据从第二个时钟(SLCK)边沿开始采集



从LIS3DH的数据手册里得知(看上图)应该位CPOL=1 ,CPHA=1;这样在cubmx中配置为



关于驱动,驱动网上流传的基本上就是一份,.h.c文件随便一搜就能下载到lis3dh的驱动,由于我的是公司电脑,文件是加密,就不上传驱动了,大家可以自行搜索其他的资源下载,驱动下载下来后。

LSI3DH的SPI读写操作



传感器地址读取



正确读出的地址应为0x33,如果是0xFF的话,那可能是你的SPI没有配置好。

寄存器设置说明



将得到的加速度值转成成角度



效果展示图



若有不对的地方请指正。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/m0_68590180/article/details/139679489

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1510

主题

14449

帖子

9

粉丝