0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

对一款国产3D霍尔传感器的SPI封装

云深之无迹 来源:云深之无迹 2023-08-15 11:33 次阅读

嵌入式系统低速接口-SPI

嵌入式系统低速接口-SPI(完结)

对一款国产的3D霍尔传感器的SPI封装.上

这篇文章完成我们的封装,以及在STM32F4的板子上面测试。

一次费我这么多引脚,我吐了。看来得上IIC,然后就是板子的引脚选择注意在cubuMX里面和实际的板子丝印多次比对,一个中断脚改了两次,气死我了。

BUTT_OUT 管脚用于检测磁铁与芯片之间的按键功能,并且也可以配置为 Trigger 模式,触发单次测量。

INT:主机向芯片发送持续感应模式或单次测量命令,芯片完成一次对应测量项的测量后,INT 脚会置 1,并且在芯片发送读取命令,读回测量数据以前,都保持为 1。主机向芯片发送唤醒睡眠模式命令后,当芯片周围测量项的变化量超出寄存器中设定的变化阈值时,INT 脚会置 1,并且在芯片发送读取命令,读回测量数据以前,都保持为 1。

芯片开启唤醒睡眠模式后,当芯片周围的某一测量项强度发生变化,且当前强度与基准值的差值,超出阈值寄存器中设定值时,芯片 INT 脚会拉高。在主机通过测量数据回读帧(data Read Frame),一次性将测量数据读回后,INT 脚拉低,否则保持为高电平。芯片 INT 脚不会主动拉低,即某一时刻被测量项的强度与基准值差值,超出设定阈值,INT 脚拉高后,如果下一时刻,被测量项的强度减弱,此时差值低于设定阈值,但主机没有读回测量数据,INT 脚并不会主动拉低。

010abf12-3b1b-11ee-9e74-dac502259ad0.png

除了重置芯片,其他命令发送完后芯片均会返回芯片运行状态(status)说明。

01281cba-3b1b-11ee-9e74-dac502259ad0.png

重置

01499cf0-3b1b-11ee-9e74-dac502259ad0.png

018738f8-3b1b-11ee-9e74-dac502259ad0.png

01cd810a-3b1b-11ee-9e74-dac502259ad0.png

定义registerName变量,用于保存寄存器地址。

定义一个comWR数组,用于保存写入命令的数据。

将要写入的寄存器地址Register,左移2位后赋值给registerName。这里的左移2位很可能是因为寄存器地址需要以字(Word)对齐。

组装写入命令数据:

comWR[0]写入命令字WRITE_REGISTER

comWR[1]写入要写入数据的高8位

comWR[2]写入要写入数据的低8位

comWR[3]写入目标寄存器地址registerName

这样就组装好了一个完整的寄存器写入命令。

所以这段代码的主要作用就是根据传入的寄存器地址Register和要写入的数据writeData,规范地组装成一个寄存器写命令,保存在comWR数组中。

01f5e3fc-3b1b-11ee-9e74-dac502259ad0.png

再来一段延时的代码

定义一个uint8_t类型的循环变量i。

for循环从0循环到4,共执行5次。

每次循环中调用__NOP()空操作。实际上是一个微秒级的延时函数

0204cade-3b1b-11ee-9e74-dac502259ad0.png

事实上,在HAL库里面是有一个延时的函数的

获取当前的系统tick计数作为起始tick值。

将需要延时的ms数保存在wait变量中。

如果延时小于HAL_MAX_DELAY,添加一个系统tick频率uwTickFreq,这个操作是为了保证至少延时1个tick。

循环查询当前tick和起始tick之差,直到大于或等于需要延时的tick数wait。

这样就可以实现精确的ms级延时等待。

整体来说,这是一种常见且高效的延时实现方法,通过查询系统tick计数器来判断延时时间,避免了空轮询耗时。

但是自带的延时函数是ms的,我们需要ns的,所以上面就又写了一个。

主机向芯片发送唤醒睡眠模式命令(0x28)

0220d8fa-3b1b-11ee-9e74-dac502259ad0.png

这个是设置的命令

芯片上电后,进行内部初始化,当电源稳定后读取OTP的值到对应的寄存器中,上电后4ms内完成OTP的读取,在上电后4ms内不允许进行通信,当初始化完成后芯片进入空闲状态,允许通信测量。

023831e4-3b1b-11ee-9e74-dac502259ad0.png

这里就这样写就行

02550df0-3b1b-11ee-9e74-dac502259ad0.png

这个就是一个中断的接口

数据OK了以后,就设置为了,这个是引脚中断。

027af074-3b1b-11ee-9e74-dac502259ad0.png

读取到这值以后

02a40c7a-3b1b-11ee-9e74-dac502259ad0.png

这个就是

02c50952-3b1b-11ee-9e74-dac502259ad0.png

定义counter变量,初始化为1,用于保存需读取的数据计数。

定义com变量,用于保存读取命令,其中包含了轴信息axis。

进入for循环,循环4次,对应4个轴(XYZ)。

每次循环:

根据axis的最低位值,如果为1则计数加2,如果为0则计数不变。

然后右移axis的位,判断下一位。

这样通过位运算判断axis的每一位,根据每个轴是否启用来累加计数。

最后counter保存总的需读取数据计数。

02e586aa-3b1b-11ee-9e74-dac502259ad0.png

接着把中断号码来还原,等着下次继续

用于解析传感器读取回来的数据,并计算出三轴xyz的数据。

主要逻辑是:

从DataReadFrame数组取出两两字节的数据,分别对应温度t和三轴xyz。

对xyz各轴数据,通过位运算(左移8位)和按位或运算来组合两个字节的数据。

例如x轴,高字节DataReadFrame[3]左移8位,低字节DataReadFrame[4]不变,最后进行按位或,就可以组合成16位有符号整数数据。

温度t也是同样的处理过程。

030acd2a-3b1b-11ee-9e74-dac502259ad0.png

开始选择SPI

03495e28-3b1b-11ee-9e74-dac502259ad0.png

对着数据手册好好看

035d9d70-3b1b-11ee-9e74-dac502259ad0.png

CS引脚

03855310-3b1b-11ee-9e74-dac502259ad0.png

这个就是中断了

0399f0b8-3b1b-11ee-9e74-dac502259ad0.png

TRIG

03c20e18-3b1b-11ee-9e74-dac502259ad0.png

记得打开中断开关

03d31b68-3b1b-11ee-9e74-dac502259ad0.png

为了好计算,时钟都是1Mhz

03f16942-3b1b-11ee-9e74-dac502259ad0.png

0419a6b4-3b1b-11ee-9e74-dac502259ad0.png

第一次通过

 error: call to undeclared library function 'printf' with type 'int (const char *, ...)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]

043d904c-3b1b-11ee-9e74-dac502259ad0.png

这个是忘了加头文件,以及如果用microLIB就要加stdio

04570ee6-3b1b-11ee-9e74-dac502259ad0.png

047a43b6-3b1b-11ee-9e74-dac502259ad0.png

这个是因为,你在文件层面的添加是无用的,记得在这里添加

04a33140-3b1b-11ee-9e74-dac502259ad0.png

OK

04d46634-3b1b-11ee-9e74-dac502259ad0.png

确定无误

04fb553c-3b1b-11ee-9e74-dac502259ad0.png

上传成功

0516941e-3b1b-11ee-9e74-dac502259ad0.png

这里就是调试,但是我没有磁铁不知道是不是没有感应到信号

053320ac-3b1b-11ee-9e74-dac502259ad0.png

调试页面

审核编辑:汤梓红

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

    关注

    33

    文章

    8728

    浏览量

    152102
  • 封装
    +关注

    关注

    127

    文章

    8033

    浏览量

    143534
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1724

    浏览量

    92281
  • 霍尔传感
    +关注

    关注

    0

    文章

    42

    浏览量

    10068

原文标题:对一款国产的3D霍尔传感器的SPI封装.中

文章出处:【微信号:TT1827652464,微信公众号:云深之无迹】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    怎样去选择一款合适的霍尔电流传感器

    霍尔电流传感器的主要优点有哪些?怎样去选择一款合适的霍尔电流传感器呢?
    发表于 09-30 08:54

    TMAG5170 3D霍尔效应位置传感器介绍

    德州仪器 (TI) 推出业内超精确的 3D 霍尔效应位置传感器。借助 TMAG5170,工程师能够在高达 20 kSPS 的速度下无需校准即可实现超高精度,从而在工厂自动化和电机驱动应用中进行更快
    发表于 11-04 08:11

    奥地利微电子推出3D霍尔传感器AS5410

    奥地利微电子公司近日推出全球首基于全功能3D霍尔平台的线性位置传感器AS5410。独特的3D霍尔
    发表于 06-08 09:03 2216次阅读

    3D霍尔传感器的前景如何

    霍尔开关、速度霍尔、电流霍尔,到线性/角度霍尔3D霍尔,各类
    发表于 10-11 09:38 2165次阅读

    国内首!灿瑞科技发布基于3D霍尔技术的可编程3D霍尔传感器

    11月1日,记者从灿瑞科技(688061.SH)获悉,该公司发布了国内第一款3D霍尔传感器OCH1970。该产品也是灿瑞科技针对消费电子、工业市场独立设计的第
    的头像 发表于 11-03 13:16 2556次阅读

    具有杂散磁场补偿的3D霍尔效应位置传感器

    CUR 4000 – 具有杂散磁场补偿的3D霍尔效应位置传感器
    的头像 发表于 08-22 14:29 713次阅读
    具有杂散磁场补偿的<b class='flag-5'>3D</b><b class='flag-5'>霍尔</b>效应位置<b class='flag-5'>传感器</b>

    3D霍尔传感器与三轴的霍尔开关传感器有什么区别和联系

    霍尔微电子全新推出3D 3霍尔传感器 ,那么3D霍尔
    的头像 发表于 09-20 11:52 1103次阅读

    海伯森3D闪测传感器斩获创新产品金奖

    海伯森3D闪测传感器HPS-DBL60于2022年4月在国内首发,是一款工业级2D/3D复合光学精密测量
    的头像 发表于 09-26 14:15 894次阅读

    3D霍尔效应位置传感器的基本原理及其应用案例

    本文将回顾 3D 霍尔效应位置传感器的基本原理,介绍这种传感器在机器人、篡改检测、人机接口控制和万向电机系统中的应用。然后以 Texas Instruments 的高精度、线性
    的头像 发表于 08-01 10:04 1518次阅读
    <b class='flag-5'>3D</b><b class='flag-5'>霍尔</b>效应位置<b class='flag-5'>传感器</b>的基本原理及其应用案例

    TMAG5170D-Q1具有SPI接口的双芯片高精度3D线性霍尔效应传感器数据表

    电子发烧友网站提供《TMAG5170D-Q1具有SPI接口的双芯片高精度3D线性霍尔效应传感器数据表.pdf》资料免费下载
    发表于 08-09 10:31 0次下载
    TMAG5170<b class='flag-5'>D</b>-Q1具有<b class='flag-5'>SPI</b>接口的双芯片高精度<b class='flag-5'>3D</b>线性<b class='flag-5'>霍尔</b>效应<b class='flag-5'>传感器</b>数据表

    TMAG5170 具有 SPI 接口的高精度 3D 线性霍尔效应传感器数据表

    电子发烧友网站提供《TMAG5170 具有 SPI 接口的高精度 3D 线性霍尔效应传感器数据表.pdf》资料免费下载
    发表于 08-12 10:44 0次下载
    TMAG5170 具有 <b class='flag-5'>SPI</b> 接口的高精度 <b class='flag-5'>3D</b> 线性<b class='flag-5'>霍尔</b>效应<b class='flag-5'>传感器</b>数据表

    TMAG5170-Q1 具有 SPI 接口的高精度3D线性霍尔效应传感器数据表

    电子发烧友网站提供《TMAG5170-Q1 具有 SPI 接口的高精度3D线性霍尔效应传感器数据表.pdf》资料免费下载
    发表于 08-12 09:43 0次下载
    TMAG5170-Q1 具有 <b class='flag-5'>SPI</b> 接口的高精度<b class='flag-5'>3D</b>线性<b class='flag-5'>霍尔</b>效应<b class='flag-5'>传感器</b>数据表

    适用于电器旋钮的3D霍尔效应传感器

    电子发烧友网站提供《适用于电器旋钮的3D霍尔效应传感器.pdf》资料免费下载
    发表于 08-30 11:14 0次下载
    适用于电器旋钮的<b class='flag-5'>3D</b><b class='flag-5'>霍尔</b>效应<b class='flag-5'>传感器</b>

    3D霍尔效应传感器在机器人设计中的机械优势

    电子发烧友网站提供《3D霍尔效应传感器在机器人设计中的机械优势.pdf》资料免费下载
    发表于 09-03 11:36 0次下载
    <b class='flag-5'>3D</b><b class='flag-5'>霍尔</b>效应<b class='flag-5'>传感器</b>在机器人设计中的机械优势

    使用 TI 的霍尔效应和线性 3D 霍尔效应传感器替代簧片开关应用说明

    电子发烧友网站提供《使用 TI 的霍尔效应和线性 3D 霍尔效应传感器替代簧片开关应用说明.pdf》资料免费下载
    发表于 09-10 09:35 1次下载
    使用 TI 的<b class='flag-5'>霍尔</b>效应和线性 <b class='flag-5'>3D</b> <b class='flag-5'>霍尔</b>效应<b class='flag-5'>传感器</b>替代簧片开关应用说明