打印
[电动出行]

凌鸥MCU的HALL信号处理模块实现过程

[复制链接]
994|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
szt1993|  楼主 | 2024-1-17 14:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1 信号来源
HALL信号来源于GPIO,对于每一路HALL信号,芯片有两个IO可以作为该信号的来源。通过配置GPIO寄存器,用户可以选择将其中一个GPIO的输入信号做为HALL信号使用。
详细管脚位置说明见芯片器件datasheet。
2 工作时钟
HALL模块工作频率可调。通过配置HALL_CFG.CLK_DIV寄存器,可以选择系统主时钟的1/2/4/8分频作为HALL模块工作频率,滤波和计数均采用该频率工作。
3 信号滤波
滤波模块主要用于去除HALL信号上的毛刺。
滤波包括两级滤波器:
第一级采用7判5进行滤波,即连续7个采样点中,如果达到超过5个1则输出1,如果达到或超过5个0则输出0,否则输出保持上一次的滤波结果。具体如下图所示:


第二级采用连续滤波,在连续N 个采样点中,如全为0 则输出0,如全为1 则输出1,否则输
出保持上一次的滤波结果。
通过配置HALL_CFG.FIL_75 可以选择是否使能第一级滤波器。
通过配置HALL_CFG.FIL_LEN 可以配置第二级滤波器滤波深度,即连续采样个数。连续采样个
数最大为215,滤波时间常数计算公式如下:
Tfit = Tclk * (HALL_CFG.FIL_LEN[14:0] + 1)
举例,在96MHz 工作频率下,周期Tclk 是10.4ns,寄存器配置最大为32767,最长滤波宽度为
约10.4ns×32768≈340us。
通过访问HALL_INFO.FIL_DATA[2:0]可以捕捉滤波后的HALL 信号;HALL_INFO.RAW_DATA[2:0]
则是滤波前原始HALL 输入信号

使用特权

评论回复
沙发
szt1993|  楼主 | 2024-1-17 14:13 | 只看该作者
4 捕获
捕获模块用于测量两次HALL 信号变化之间的时间,其核心为一个24 位计数器,在96MHz 工
作频率下,如果Hall 时钟进行8 分频,最大可以记录约2^24*8/96e6=1.40s 的时间宽度,达到
10.42ns 的时间分辨率。
HALL_CNT 从0 开始计数,当发生HALL 信号变化时,将此时刻的HALL_CNT 值保存到
HALL_WIDTH 寄存器,将此时刻的HALL 信号保存到HALL_INFO.FIL_DATA,输出HALL 信号变化中
断,HALL_CNT 重新从0 开始计数。
当计数器计数值达到HALL_TH 时,输出HALL 计数器溢出中断,计数器重新从0 开始计数。
5 中断
捕获、溢出事件触发中断,中断使能控制位位于HALL_CFG.CHG_IE 和HALL_CFG.OV_IE,中断
标志位位于HALL_INFO.CHG_IF 和HALL_INFO.OV_IF。终端标志可以通过对HALL_INFO.CHG_IF 和
HALL_INFO.OV_IF 写1 清空。

使用特权

评论回复
板凳
szt1993|  楼主 | 2024-1-17 14:14 | 只看该作者
6 数据流程
HALL 模块的数据流程如下图所示,FCLK[1]为受SYS_CLK_FEN 门控控制的系统主时钟,通常为
96MHz 的PLL 时钟。


使用特权

评论回复
地板
发呆爱好者| | 2024-1-17 14:44 | 只看该作者
用HAL是不是比基础库要方便很多?

使用特权

评论回复
5
代码输出机| | 2024-1-17 14:48 | 只看该作者
持续给方波,最小可以做到多少hz

使用特权

评论回复
6
中国龙芯CDX| | 2024-1-18 11:31 | 只看该作者
HALL信号来源于GPIO

使用特权

评论回复
7
小小蚂蚁举千斤| | 2024-1-18 13:15 | 只看该作者
HALL模块工作频率可调

使用特权

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

本版积分规则

283

主题

2334

帖子

5

粉丝