目录
概述
1 相关寄存器
2 功能描述
3 AWDx 标志和中断
4 模拟看门狗 1
4.1 模拟看门狗 1 说明
4.2 模拟看门狗通道选择
4.3 阀值选择
5 模拟看门狗 2和3
6 ADCx_AWDy_OUT 信号输出生成
6.1 功能介绍
6.2 输出信号案例
7 模拟看门狗 1、 2、 3 比较
概述
本文主要介绍STM32H750外设ADC之模拟窗口看门狗的功能,包括与之相关的寄存器配置、模拟窗口看门狗的实现,各类型看门狗的功能等内容。
1 相关寄存器
和模拟窗口看门狗相关有如下这些:( AWD1EN、 JAWD1EN、 AWD1SGL、 AWD1CH、
AWD2CH、 AWD3CH、 AWD_HTRy、 AWD_LTRy、 AWDy)。
2 功能描述
三个 AWD 模拟看门狗会监测一些通道是否保持在配置的电压范围(窗口)内。
3 AWDx 标志和中断
可通过将 ADCx_IER 寄存器( x=1、 2、 3)中的 AWDyIE 置 1 的方式分别为 3 个模拟看门狗使能中断。AWDy( y=1、 2、 3)标志可通过由软件向其写入 1 的方式来清零。在对齐之前,会将 ADC 转换结果与阈值上限和下限进行比较。
ADC x 中断使能寄存器 (ADCx_IER)( x=1 到 3)
ADC x interrupt enable register
偏移地址: 0x04
复位值: 0x0000 0000位 9 AWD3IE:模拟看门狗 3 中断使能 (Analog watchdog 3 interrupt enable)
此位由软件置 1 和清零,用于使能/禁止模拟看门狗 2 中断。
0:禁止模拟看门狗 3 中断
1:使能模拟看门狗 3 中断
注: 仅当 ADSTART=0 且 JADSTART=0 时(这可确保当前未进行任何转换),才允许通过软件对此位执行写操作。位 8 AWD2IE:模拟看门狗 2 中断使能 (Analog watchdog 2 interrupt enable)
此位由软件置 1 和清零,用于使能/禁止模拟看门狗 2 中断。
0:禁止模拟看门狗 2 中断
1:使能模拟看门狗 2 中断注: 仅当 ADSTART=0 且 JADSTART=0 时(这可确保当前未进行任何转换),才允许通过软件对此位执行写操作。
位 7 AWD1IE:模拟看门狗 1 中断使能 (Analog watchdog 1 interrupt enable)
此位由软件置 1 和清零,用于使能/禁止模拟看门狗 1 中断。
0:禁止模拟看门狗 1 中断
1:使能模拟看门狗 1 中断注: 仅当 ADSTART=0 且 JADSTART=0 时(这可确保当前未进行任何转换),才允许通过软件对此位执行写操作。
4 模拟看门狗 1
4.1 模拟看门狗 1 说明
将 ADCx_CFGR 寄存器中的 AWD1EN 位置 1,可使能 AWD 模拟看门狗 1。该看门狗监测一条已选通道或所有已使能通道(1) 是否仍在配置的电压范围(窗口)内。
位 23 AWD1EN:常规通道上的模拟看门狗 1 使能 (Analog watchdog 1 enable on regular channels)
此位由软件置 1 和清零
0:在常规通道上禁止模拟看门狗 1
1:在常规通道上使能模拟看门狗 1
4.2 模拟看门狗通道选择
应如何配置 ADCx_CFGRy 寄存器才能在一条或多个通道上使能模拟看门狗
位 24 JAWD1EN:注入通道上的模拟看门狗 1 使能 (Analog watchdog 1 enable on injected channels)
此位由软件置 1 和清零
0:在注入通道上禁止模拟看门狗 1
1:在注入通道上使能模拟看门狗 1位 22 AWD1SGL:在单一通道或所有通道上使能看门狗 1 (Enable the watchdog 1 on a single channel or onall channels)
此位由软件置 1 和清零,用于在通过 AWD1CH[4:0] 位确定的通道或所有通道上使能模拟看门狗。
0:在所有通道上使能模拟看门狗 1
1:在单一通道上使能模拟看门狗 1
4.3 阀值选择
如果 ADC 转换的模拟电压低于阈值下限或高于阈值上限,则 AWD1 模拟看门狗状态位会
置 1。这些阈值编程到模拟看门狗 1 的 ADCx_HTR1 寄存器的 HTR1[25:0] 位和 ADCx_LTR1 寄存器的 LTR1[25:0] 位。
ADC x 看门狗阈值寄存器 1 (ADCx_LTR1)( x=1 到 3)
ADC x watchdog threshold register 1
偏移地址: 0x20
复位值: 0x0000 0000
位 25:0 LTR1[25:0]: 模拟看门狗 1 阈值下限 (Analog watchdog 1 lower threshold)
这些位由软件写入,用于定义模拟看门狗 1 的阈值下限。
ADC x 看门狗阈值寄存器 1 (ADCx_HTR1)( x=1 到 3)
ADC x watchdog threshold register 1
偏移地址: 0x24
复位值: 0x03FF FFFF
位 25:0 HTR1[25:0]: 模拟看门狗 1 阈值上限 (Analog watchdog 1 higher threshold)
这些位由软件写入,用于定义模拟看门狗的阈值上限。
阈值最高可达到 26 位( 16 位分辨率,过采样, OSR=1024)。如果转换的数据分辨率小于 16 位(取决于 RES[2:0] 位),编程阈值的 LSB 必须保持清零状态,并且会在内部对完整的 16 位转换数据进行比较(左对齐到半字边界)。
ADC x 配置寄存器 2 (ADCx_CFGR2)( x=1 到 3)
ADC x configuration register 2
偏移地址: 0x10
复位值: 0x0000 0000
位 25:16 OSR[9:0]:过采样率 (Oversampling ratio)
此位域由软件置 1 和清零,用于定义过采样率。
0: 1x(不进行过采样)
1: 2x
2: 3x
...
1023: 1024x
5 模拟看门狗 2和3
第二个和第三个模拟看门狗更加灵活,可通过编程 AWDCHy[19:0]( y=2、 3)中的相应位来保护多条已选通道。
以模拟看门狗 2为例,介绍寄存器配置:
ADC x 模拟看门狗 2 配置寄存器 (ADCx_AWD2CR)( x=1 到 3)
ADC x Analog Watchdog 2 Configuration Register
偏移地址: 0xA0
复位值: 0x0000 0000
位 19:0 AWD2CH[19:0]:模拟看门狗 2 通道选择 (Analog watchdog 2 channel selection)
这些位将由软件置 1 和清零。它们用于使能和选择由模拟看门狗 2 监控的输入通道。
AWD2CH[i] = 0:不通过 AWD2 监控 ADC 模拟输入通道 i
AWD2CH[i] = 1:通过 AWD2 监控 ADC 模拟输入通道 i
当 AWD2CH[19:0] = 000..0 时,会禁止模拟看门狗 2
AWDCHy[19:0]( y=2、 3)的任何位置 1 时,会使能相应的看门狗。阈值最高可达到 26 位(16 位分辨率,过采样, OSR=1024) ,通过 ADCx_HTR2、 ADCx_LTR2、ADCx_LTR3 和 ADCx_HTR3 寄存器进行编程。
如果转换的数据分辨率小于 16 位(取决于 RES[2:0] 位),编程阈值的 LSB 必须保持清零
状态,并且会在内部对完整的 16 位转换数据进行比较(左对齐到半字边界)。
6 ADCx_AWDy_OUT 信号输出生成
6.1 功能介绍
每个模拟看门狗都关联到一个内部硬件信号 ADCx_AWDy_OUT( x = ADC 编号, y = 看门狗编号),该信号直接连接到一些片上定时器的 ETR 输入(外部触发)。请参见片上定时器部分以了解如何选择 ADCx_AWDy_OUT 信号作为 ETR。
当关联的模拟看门狗使能时, ADCx_AWDy_OUT 会激活:
1)当受保护的转换超出编程阈值时, ADCx_AWDy_OUT 会置 1。
2)在编程阈值范围内的下一受保护转换结束后, ADCx_AWDy_OUT 会复位(如果下一受保护转换仍超出编程阈值范围,该位仍保持置 1)。
3)禁止 ADC 时(将 ADDIS 置 1 时), ADCx_AWDy_OUT 也保持复位状态。请注意,停止常规转换或注入转换(将 ADSTP 或 JADSTP 置 1)对 ADCy_AWDx_OUT 的生成没有任何影响。
ADC x 控制寄存器 (ADCx_CR)( x=1 到 3)
ADC x control register
偏移地址: 0x08
复位值: 0x2000 0000
位 1 ADDIS: ADC 禁止命令 (ADC disable command)
该位由软件置 1,用于禁止 ADC( ADDIS 命令)并使其进入掉电状态( OFF 状态)。
ADC 已有效禁止后,会立即通过硬件将该位清零(此时也会通过硬件将 ADEN 清零)。
0:当前未执行 ADDIS 命令。
1:写入 1 可禁止 ADC。读取值为 1 表示正在执行 ADDIS 命令
6.2 输出信号案例
1)ADCy_AWDx_OUT 信号生成(所有常规通道上)
2)ADCy_AWDx_OUT 信号生成( AWDx 标志未通过软件清零)
3)ADCy_AWDx_OUT 信号生成(单条常规通道上)
4)ADCy_AWDx_OUT 信号生成(所有注入通道上)