nrf52832用I2C和SPI两种方式驱动LIS2DS12

Posted xiaoshideyuxiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nrf52832用I2C和SPI两种方式驱动LIS2DS12相关的知识,希望对你有一定的参考价值。

本来在这里写了些牢骚话,但是想想这是记录技术文档,还是废话少说为好

直奔主题

先介绍下LIS2DS12,ST公司出的gsensor,内部自带mcu ,可以输出步数、敲击、翻腕等行为结果,还提供了一个256级的FIFO(可以存储256组三轴数据),FIFO具有多种模式,具体参照datasheet设置

LIS2DS12的具体驱动方法不细致描述了,这里只记个大概,提个醒。

芯片支持两种通信方式:I2C 和 SPI 。其中SPI又分为三线SPI 和四线SPI

用CS引脚来决定使用哪种方式:
CS接高电平,则使用I2C
CS接低电平,则使用SPI

注意使用SPI 时,不要把CS的电平给固定住,CS引脚由SPI驱动控制就OK(我之前理解错了,将其用GPIO固定低电平。。折腾半天瞎懵逼还在想为什么能读出device ID但是不能操作寄存器)

采用I2C驱动时,没什么好说的,引脚定义参照datasheet就好,注意SCL和SDA要挂外部上拉电阻。
I2C的器件地址是可以设置的,demo code中的地址是其中一种8位地址,在填入I2C驱动时要先右移1位再加上R/W bit


采用SPI驱动时,需要注意芯片支持的是SPI_MODE3 也就是SCK常态为高电平,并且在SCK的上升沿采集数据

在写数据时,对寄存器地址做点处理: bit7 代表本次操作类型是读还是写

其他部分就是中规中矩的参照datasheet就能完成

我的代码修改:

修改完成后,读取device ID测试,并且对寄存器进行操作,写入数值再读出来查看是否写入成功

以上是关于nrf52832用I2C和SPI两种方式驱动LIS2DS12的主要内容,如果未能解决你的问题,请参考以下文章

nRF52832之硬件I2C

nRF52832之硬件I2C

NRF52832学习笔记(40)——RFID RC522使用

nRF52832之硬件I2C

Noridc 52832 SPI Flash 驱动+应用+文件系统

nrf52832几个uart