<!-- 本文件由脚本自动转换生成，请勿手动编辑 -->

> **《LKS32MC45x User Manual》HALL信号处理模块** . 完整目录见 [README.md](README.md)
>
> **声明**：本文档由芯片用户手册自动转换生成，仅供检索与查阅参考。Markdown 格式可被自由编译、修改，本文档不构成正式技术文件，相关内容以凌鸥创芯官方网站正式发布的手册为准。
>
> 南京凌鸥创芯电子有限公司 . (C) 2020, 版权归凌鸥创芯所有 . 机密文件，未经许可不得扩散

# HALL信号处理模块

## 综述

芯片共集成两个完全相同的Hall信号处理模块，以下说明均针对一个Hall信号处理模块

支持3路HALL信号输入。

对于输入的HALL传感器信号，所进行的处理包括：

滤波，消除HALL信号毛刺的影响

捕获，当HALL输入有变化时，记录当前的定时器值，并输出中断

溢出，当HALL信号长时间不发生变化导致计数器溢出时，输出中断

## 实现说明

### 信号来源

HALL信号来源于GPIO，对于每一路HALL信号，芯片有两个IO可以作为该信号的来源。通过配置GPIO寄存器，用户可以选择将其中一个GPIO的输入信号做为HALL信号使用。

详细管脚位置说明见芯片器件datasheet。

### 工作时钟

HALL模块工作频率可调。通过配置HALL_CFG.CLK_DIV寄存器，可以选择系统主时钟的1/2/4/8分频作为HALL模块工作频率，滤波和计数均采用该频率工作。

### 信号滤波

滤波模块主要用于去除HALL信号上的毛刺。

滤波包括两级滤波器，两级滤波电路可单独开启，也可全部开启：

第一级采用7判5进行滤波，即连续7个采样点中，如果达到超过5个1则输出1，如果达到或超过5个0则输出0，否则输出保持上一次的滤波结果。通过配置HALL_CFG.FIL_75可以选择是否使能第一级滤波器。具体如下图所示：

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图15-1 7/5滤波模块框图

第二级采用连续滤波，在连续N个采样点中，如全为0则输出0，如全为1则输出1，否则输出保持上一次的滤波结果。

通过配置HALL_CFG.FIL_LEN可以配置第二级滤波器滤波深度，即连续采样个数。连续采样个数最大为2<sup>15</sup>，滤波时间常数计算公式如下：

T<sub>fit</sub> = T<sub>clk</sub> \* (HALL_CFG.FIL_LEN\[14:0\] + 1)

举例，在192MHz工作频率下，周期T<sub>clk</sub>是5.2ns，寄存器配置最大为32767，最长滤波宽度为约5.2ns×32768≈170us。

通过访问HALL_INFO.FIL_DATA\[2:0\]可以捕捉滤波后的HALL信号；HALL_INFO.RAW_DATA\[2:0\]则是滤波前原始HALL输入信号，详见15.3.3
HALLx_INFO 模块信息寄存器 (x = 0,1)。

### 捕获

捕获模块用于测量两次HALL信号变化之间的时间，其核心为一个24位计数器，在192MHz工作频率下，最大可以记录约0.87秒的时间宽度，达到5.2ns的时间分辨率。

HALL_CNT从0开始计数，当发生HALL信号变化时，将此时刻的HALL_CNT值保存到HALL_WIDTH寄存器，将此时刻的HALL信号保存到HALL_INFO.FIL_DATA，输出HALL信号变化中断，HALL_CNT重新从0开始计数。

当计数器计数值达到HALL_TH时，输出HALL计数器溢出中断，计数器重新从0开始计数。

### 中断

捕获、溢出事件触发中断，中断使能控制位位于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清空。

### 数据流程

HALL模块的数据流程如下图所示，FCLK为受SYS_CLK_FEN门控控制的系统主时钟，通常为PLL时钟。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图15-2 Hall模块框图

## 寄存器

### 地址分配

HALL0模块寄存器的基地址是0x4001_1800，

HALL1模块寄存器的基地址是0x4001_1C00，

寄存器列表如下：

表15-1HALL模块寄存器地址分配

||||
|---|---|---|
|名称|偏移|描述|
|HALLx_CFG|0x00|HALL模块配置寄存器|
|HALLx_INFO|0x04|HALL模块信息寄存器|
|HALLx_WIDTH|0x08|HALL宽度计数值寄存器|
|HALLx_TH|0x0C|HALL模块计数器门限值寄存器|
|HALLx_CNT|0x10|HALL计数寄存器|

### HALLx_CFG 模块配置寄存器(x = 0,1)

HALL0_CFG地址：0x4001_1800

HALL1_CFG地址：0x4001_1C00

复位值：0x0

表15-2 HALL模块配置寄存器HALLx_CFG

|||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26||25||24|23|22|21|20|19|18|17|16|
||SW_IE|OV_IE|CHG_IE|SW_RE||OV_RE||CHG_RE|HALL_EN||||FIL_75|||CLK_DIV||
||RW|RW|RW|RW||RW||RW|RW||||RW|||RW||
||0|0|0|0||0||0|0||||0|||0||
|15|14|13|12|11|10||9||8|7|6|5|4|3|2|1|0|
||FIL_LEN\_|||||||||||||||||
||RW|||||||||||||||||
||0|||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31\]||未使用|
|\[30\]|SW_IE|软件触发HALL信号变化中断使能，高电平有效。有效此位后，INFO\[18\]写1，将手动产生HALL信号变化中断。|
|\[29\]|OV_IE|HALL计数器溢出中断使能开关。默认关闭。0: 关闭1: 使能|
|\[28\]|CHG_IE|HALL信号变化中断使能开关。默认关闭。0: 关闭1: 使能|
|\[27\]|SW_RE|软件触发HALL信号变化DMA请求使能，高电平有效。有效此位后，INFO\[18\]写1，将手动产生HALL信号变化DMA请求。|
|\[26\]|OV_RE|HALL计数器溢出DMA请求使能开关。默认关闭。0: 关闭1: 使能|
|\[25\]|CHG_RE|HALL信号变化DMA请求使能开关。默认关闭。0: 关闭1: 使能|
|\[24\]|HALL_EN|HALL模块使能开关。默认关闭。0: 关闭1: 使能|
|\[23:21\]||未使用|
|\[20\]|FIL_75|7/5滤波开关（连续采样7次，5次值一致）。默认关闭。0: 关闭1: 使能|
|\[19:18\]||未使用|
|\[17:16\]|CLK_DIV|HALL时钟分频系数。默认不分频。00：不分频01：2分频10：4分频11：8分频|
|\[15\]||未使用|
|\[14:0\]|FIL_LEN|滤波宽度，低于对应脉冲宽度的信号将被硬件自动过滤掉。滤波宽度的计算公式为\[14:0\] + 1。|

### HALLx_INFO 模块信息寄存器 (x = 0,1)

地址分别是：0x4001_1804,，0x4001_1C04

复位值：0x0

表15-3 HALL模块信息寄存器HALLx_INFO

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
||||||||||||||SW_IF|OV_IF|CHG_IF|
||||||||||||||RW|RW|RW|
||||||||||||||0|0|0|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
||||||RAW_DATA||||||||FLT_DATA|||
|RW|||||RO|||RW|||||RO|||
|0|||||0|||0|||||0|||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:19\]||未使用|
|\[18\]|SW_IF|软件触发HALL信号变化中断。写1触发，自动清零。|
|\[17\]|OV_IF|HALL计数器溢出事件标志，写1清空|
|\[16\]|CHG_IF|HALL信号变化事件标志，写1清空|
|\[15:11\]||系统保留，必须写入0，读出0|
|\[10:8\]|RAW_DATA|HALL值，未滤波结果|
|\[7:3\]||系统保留，必须写入0，读出0|
|\[2:0\]|FLT_DATA|HALL值，滤波结果|

通常由于SW_IF自动清零，软件无法观测到SW_IF置位，但是软件触发HALL信号变化会使得CFG_IF置位，因此只要使能CHG_IE或CFG_RE，并写入软件触发即可产生HALL中断或DMA请求事件。

### HALLx_WIDTH 宽度计数值寄存器(x = 0,1)

地址分别是：0x4001_1808,，0x4001_1C08

复位值：0x0

表15-4 HALL宽度计数值寄存器HALLx_WIDTH

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|||||||||CAP_CNT||||||||
|||||||||RO||||||||
|||||||||0||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|CAP_CNT||||||||||||||||
|RO||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:24\]||未使用|
|\[23:0\]|CAP_CNT|HALL 宽度计数器值|

### HALLx_TH 模块计数器门限值寄存器(x = 0,1)

地址分别是：0x4001_180C，0x4001_1C0C

复位值：0x0

表15-5
HALL模块计数器门限值寄存器HALLx_TH

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|||||||||TH||||||||
|||||||||RW||||||||
|||||||||0||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|TH||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:24\]||未使用|
|\[23:0\]|TH|HALL计数器门限值|

### HALLx_CNT 计数寄存器(x = 0,1)

地址分别是：0x4001_1810,，0x4001_1C10

复位值：0x0

表15-6 HALL计数寄存器HALLx_CNT

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|||||||||CNT||||||||
|||||||||RW||||||||
|||||||||0||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|CNT||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:24\]||未使用|
|\[23:0\]|CNT|HALL计数值，写入任意值可清零|

