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

MEMS/传感技术

1293人已加入

描述

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

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

CMOS

这个是国产的传感器框图

CMOS

国外的一款

CMOS

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

CMOS

标准的CMOS器件

CMOS

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

CMOS

灵敏度有点小

CMOS

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

CMOS

芯片安装时候的方向

CMOS

方向

CMOS

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

CMOS

SPI的通讯使用的是模式3

CMOS

CMOS

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

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

CMOS

CMOS

CMOS

CMOS

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

CMOS

第二个也是这样的封装

CMOS

我们这个在使用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控制代码。

CMOS

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

CMOS

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

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

CMOS

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

CMOS

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

CMOS

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

CMOS

这个地方就是一个字节

CMOS

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

CMOS

数据在此

CMOS

查资料看见的

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

编辑:黄飞

 

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

全部0条评论

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

×
20
完善资料,
赚取积分