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

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

# CMP

## 概述

比较器信号处理模块(以下简称CMP模块，为便于区分后续图示中模拟比较器使用Comparator表示，数字比较器信号处理模块使用CMP表示)，用于处理2个模拟轨到轨比较器产生的输出信号，由一系列使能、极性控制、滤波等数字电路组成。信号处理时钟由系统主时钟分频得到，此模块也用于向CPU产生比较器中断。

CMP0/1可以使用MCPWM的4路P通道进行开窗控制。

模拟比较器未经滤波的原始输出值，可以通过读取CMP_DATA值获得。同时模拟比较器未经滤波的原始输出值也可以通过配置GPIO的第二功能送出，具体GPIO第二功能配置及引进位置，请参考器件datasheet。

关于模拟比较器的更多说明，包括其输入端信号的选择，迟滞的配置，请参考章节5.1.6。

## 寄存器

### 地址分配

CMP模块寄存器的基地址是0x4001_0200，寄存器列表如下:

表10-1比较器寄存器列表

||||
|---|---|---|
|名称|偏移地址|说明|
|CMP_IE|0x00|比较器中断使能寄存器|
|CMP_IF|0x04|比较器中断标志寄存器|
|CMP_TCLK|0x08|比较器分频时钟控制寄存器|
|CMP_CFG|0x0C|比较器控制寄存器|
|CMP_BLCWIN|0x10|比较器开窗控制寄存器0|
|CMP_DATA|0x14|比较器输出数值寄存器|

### CMP_IE 中断使能寄存器

地址:0x4001_0200

复位值:0x0

表10-2
CMP_IE比较器中断使能寄存器

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||CMP1_RE|CMP0_RE|||||||CMP1_IE|CMP0_IE|
|||||||RW|RW|||||||RW|RW|
|||||||0|0|||||||0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:10\]||未使用|
|\[9\]|CMP1_RE|比较器1 DMA请求使能，高有效|
|\[8\]|CMP0_RE|比较器0 DMA请求使能，高有效|
|\[7:2\]||未使用|
|\[1\]|CMP1_IE|比较器1中断使能，高有效|
|\[0\]|CMP0_IE|比较器0中断使能，高有效|

### CMP_IF 中断标志寄存器

地址:0x4001_0204

复位值:0x0

表10-3
CMP_IF比较器中断标志寄存器

|||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1||0||
||||||||||||||||CMP1_IF||CMP0_IF|
||||||||||||||||RW||RW|
||||||||||||||||0||0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:2\]||未使用|
|\[1\]|CMP1_IF|比较器1中断标志，高有效，写1清零|
|\[0\]|CMP0_IF|比较器0中断标志，高有效，写1清零|

当使能CMP
DMA请求时，即CMP_IE.CMPx_RE=1，在DMA收到相应请求并开始进行数据搬移时，DMA自动将对应的CMPx_IF位清除，不再需要软件清除。

### CMP_TCLK 分频时钟控制寄存器

地址:0x4001_0208

复位值:0x0

表10-4
CMP_TCLK比较器分频时钟控制寄存器

||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27||26||25|24|23||22|21|20|19||18||17|16|
||||||||COMM_DIV||||||||||||||
||||||||RW||||||||||||||
||||||||3’h4||||||||||||||
|15|14|13|12|11||10||9|8|7||6|5|4|3||2||1|0|
|FIL1_CLK_DIV16|||||CLK1_EN||FIL1_CLK_DIV2||||FIL0_CLK_DIV16|||||CLK0_EN||FIL0_CLK_DIV2|||
|RW|||||RW||RW||||RW|||||RW||RW|||
|0|||||0||0||||0|||||0||0|||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:27\]||未使用|
|\[26:24\]|COMM_DIV|比较器0/1共用滤波时钟分频系数，影响进入比较器中断的时间，最大支持到4|
|\[23:16\]||未使用|
|\[15:12\]|FIL1_CLK_DIV16|比较器1滤波时钟分频，基于MCLK进行1~16分频，影响进入比较器中断的时间|
|\[11\]|CLK1_EN|比较器1滤波时钟使能，高有效|
|\[10:8\]|FIL1_CLK_DIV2|比较器1滤波时钟分频0:1分频1:2分频2:4分频3:8分频4:16分频5:32分频,6:64分频7:128分频|
|\[7:4\]|FIL0_CLK_DIV16|比较器0滤波时钟分频，基于MCLK进行1~16分频，影响进入比较器中断的时间|
|\[3\]|CLK0_EN|比较器0滤波时钟使能，高有效|
|\[2:0\]|FIL0_CLK_DIV2|比较器0滤波时钟分频0:1分频1:2分频2:4分频3:8分频4:16分频5:32分频,6:64分频7:128分频|

以比较器0为例，CMP0滤波时间宽度使用如下公式进行计算

滤波时间宽度=
Period(FCLK)\*(2<sup>(COMM_DIV+CMP_TCLK.FIL0_CLK_DIV2)</sup>\*(CMP_TCLK.FIL0_CLK_DIV16+1)-1)，其中FCLK为CMP模块的主时钟，受SYS_CLK_FEN控制。需要注意的是，产生CMP滤波时钟需要使能CMP_TCLK.CLK_EN位。

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

图10-1
比较器滤波时钟产生

CMP模块使用此滤波时钟对模拟比较器的输出信号进行滤波，即只有信号稳定时间超过设定的滤波时间宽度才能通过滤波器，CMP模块输出的滤波后的信号才会发生变化，并产生相应中断。如果输入信号稳定时间不足滤波时间宽度即发生变化，则CMP模块输出的滤波后的信号维持原值不变。

因为滤波时钟可以进行分频，因此CMP信号的滤波宽度范围是0~128\*16\*16-1个总线周期，即1~32767个系统主时钟周期。

### CMP_CFG 控制寄存器

地址:0x4001_020C

复位值:0x0

表10-5
CMP_CFG比较器控制寄存器

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||CMP1_W_PWM_POL|CMP1_IRQ_TRIG|CMP1_IN_EN|CMP1_POL|CMP0_W_PWM_POL|CMP0_IRQ_TRIG|CMP0_IN_EN|CMP0_POL|
|||||||||RW|RW|RW|RW|RW|RW|RW|RW|
|||||||||0|0|0|0|0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:8\]||未使用|
|\[7\]|CMP1_W_PWM_POL|比较器1开窗PWM信号极性选择，在CMP_BLCWIN1使能情况下使用|
|\[6\]|CMP1_IRQ_TRIG|比较器1中断触发类型，0:电平触发，1:边沿触发|
|\[5\]|CMP1_IN_EN|比较器1信号输入使能|
|\[4\]|CMP1_POL|比较器1极性选择，0:高电平有效；1:低电平有效|
|\[3\]|CMP0_W_PWM_POL|比较器0开窗PWM信号极性选择，在CMP_BLCWIN0使能情况下使用|
|\[2\]|CMP0_IRQ_TRIG|比较器0中断触发类型，0:电平触发，1:边沿触发|
|\[1\]|CMP0_IN_EN|比较器0信号输入使能|
|\[0\]|CMP0_POL|比较器0极性选择，0:高电平有效；1:低电平有效|

比较器的极性及使能控制如图10-2所示。

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

图10-2
比较器控制及中断产生逻辑

比较器0和比较器1可以与MCPWM模块联合动作，其中MCPWM模块的P管控制信号可以作为比较器开窗的控制信号。但比较器自身的中断信号产生与开窗控制无关，仅仅受CMP_CFG寄存器影响。比较器2不支持开窗控制。

MCPWM的fail信号可以来自GPIO，也可以来自比较器模块，使用MCPWM0_CH_FAIL寄存器进行控制。如果MCPWM的fail信号来自比较器，则是经过比较器模块内部的开窗控制的。fail信号进入MCPWM后也会进行极性使能以及滤波等处理，与比较器模块的实现类似，但完全独立，由MCPWM内部的寄存器进行控制。MCPWM内部与fail相关的错误中断信号产生收到MCPWM内部有关极性使能滤波控制寄存器的影响。具体请参考MCPWM章节。

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

图10-3
CMP与MCPWM的联动

对于比较器的开窗功能，若CMP_CFG.CMP0_PWM_POL=1，则在对应MCPWM
CHNx_P信号为1时，比较器0可以产生比较信号输出，其他时刻比较信号为0；反之，若CMP_CFG.CMP0_PWM_POL=0，则在对应MCPWM
CHNx_P信号为0时，比较器0可以产生比较信号输出，其他时刻比较信号为0。比较器1的开窗控制信号极性由CMP_CFG.CMP1_PWM_POL位进行控制，逻辑相同。

注意:CMP_CFG.CMP0_PWM_POL和CMP_CFG.CMP1_PWM_POL同时会影响送入MCPWM模块作为FAIL信号的比较器信号，如图10-4所示。来自比较器的MCPWM
FAIL信号为模拟比较器输出的原始信号，未经过比较器数字接口模块的滤波处理，但是可以被MCPWM的通道信号进行开窗控制，开窗控制设置见比较器数字接口模块。FAIL信号进入MCPWM模块后，可以通过设置MCPWM_TCLK进行滤波。

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

图10-4
比较器开窗功能图示

### CMP_BLCWIN 开窗控制寄存器

地址:0x4001_0210

复位值:0x0

表10-6
CMP\_ BLCWIN比较器开窗控制寄存器

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||CMP1_CHN3P_WIN_EN|CMP1_CHN2P_WIN_EN|CMP1_CHN1P_WIN_EN|CMP1_CHN0P_WIN_EN|CMP0_CHN3P_WIN_EN|CMP0_CHN2P_WIN_EN|CMP0_CHN1P_WIN_EN|CMP0_CHN0P_WIN_EN|
|||||||||RW|RW|RW|RW|RW|RW|RW|RW|
|||||||||0|0|0|0|0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:8\]||保留|
|\[7\]|CMP1_CHN3P_WIN_EN|使用MCPWM模块CHN3_P通道输出的P管开关控制信号作为比较器1开窗使能|
|\[6\]|CMP1_CHN2P_WIN_EN|使用MCPWM模块CHN2_P通道输出的P管开关控制信号作为比较器1开窗使能|
|\[5\]|CMP1_CHN1P_WIN_EN|使用MCPWM模块CHN1_P通道输出的P管开关控制信号作为比较器1开窗使能|
|\[4\]|CMP1_CHN0P_WIN_EN|使用MCPWM模块CHN0_P通道输出的P管开关控制信号作为比较器1开窗使能|
|\[3\]|CMP0_CHN3P_WIN_EN|使用MCPWM模块CHN3_P通道输出的P管开关控制信号作为比较器0开窗使能|
|\[2\]|CMP0_CHN2P_WIN_EN|使用MCPWM模块CHN2_P通道输出的P管开关控制信号作为比较器0开窗使能|
|\[1\]|CMP0_CHN1P_WIN_EN|使用MCPWM模块CHN1_P通道输出的P管开关控制信号作为比较器0开窗使能|
|\[0\]|CMP0_CHN0P_WIN_EN|使用MCPWM模块CHN0_P通道输出的P管开关控制信号作为比较器0开窗使能|

### CMP_DATA 输出数据寄存器

地址:0x4001_0214

复位值:0x0

表10-7
CMP\_ DATA 比较器输出数据寄存器

||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9||8||7||6|5|4|3|2|1|0|
||||||||CMP1_FLT_DATA||CMP0_FLT_DATA||||||||CMP1_RAW_DATA|CMP0_RAW_DATA|
||||||||R||R||||||||R|R|
||||||||0||0||||||||0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:10\]||未使用|
|\[9\]|CMP1_FLT_DATA|比较器1经过滤波后的信号|
|\[8\]|CMP0_FLT_DATA|比较器0经过滤波后的信号|
|\[7:2\]||未使用|
|\[1\]|CMP1_RAW_DATA|比较器1原始输出信号，直接来自模拟比较器1|
|\[0\]|CMP0_RAW_DATA|比较器0原始输出信号，直接来自模拟比较器0|

