国产3D霍尔传感器的SPI封装技术分析

MEMS/传感技术

1325人已加入

描述

拿到一个供应商给的传感器,正好是项目用的上,直接进行一手研究,顺便把封装和最近搞的SPI用起来。

关于SPI的相关知识可以先去看我写的两个文章。

SPI

这个是国产的传感器框图

SPI

国外的一款

SPI

这个地方是使用协议时候一些要注意的地方

SPI

标准的CMOS器件

SPI

测量时候的一些点参数,算功耗的时候有用

SPI

灵敏度有点小

SPI

这个是几倍于***的灵敏度

SPI

芯片安装时候的方向

SPI

方向

SPI

我们先从测量法方式开始封装

SPI

SPI的通讯使用的是模式3

SPI

SPI

主机一开始发送的0001就是一个COMMAND,连续测量的意思,接着就是对里面的ZYXT进行测量,接着把发送的权力交给我们的从机,从机开始工作。

对应的把里面的一个项设置1就是对这个通道进行测量。

SPI

SPI

SPI

SPI

OK,这就是第一步,我们把commad做好

SPI

第二个也是这样的封装

SPI

我们这个在使用SPI信号的时候需要有一个拉低信号线的操作

这两行宏定义是对SPI通信中的片选信号引脚进行控制的。

#define CS_Clr() HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET)

CS_Clr()定义了拉低片选信号的操作。

它调用了HAL库的GPIO写引脚函数,将CS_GPIO_Port端口的CS_Pin引脚写入GPIO_PIN_RESET低电平。

#define CS_Set() HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET)

CS_Set()定义了拉高片选信号的操作。

同样通过HAL库GPIO函数,将同一片选引脚写入GPIO_PIN_SET高电平。

这样,在代码中可以通过简单调用CS_Clr()和CS_Set()两个宏来控制SPI的片选信号,不需要每次都写一长串GPIO控制代码。

SPI

这个时序图就是我们的读寄存器

SPI

读这个0x16寄存器的位置,这个数值

22->88,这个确实是要移动2位

SPI

可以按照上面封装的样子把读取的传感器地址写好

SPI

把这个操作合并在一起第一个八位是操作,后一个八位是寄存器的地址,但是要注意移位。

SPI

我们发送两个字节,所以这里就是2,接着回收的数据的数据是3个字

SPI

这个地方就是一个字节

SPI

data这里就要连续传输了,要2个字节

SPI

数据在此

SPI

查资料看见的

文章应该还有很长的,马上要12点了,完整的版本就看下一篇吧。

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分