这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
adc实验_电源监控 [2020/07/04 11:21] zgf [二、 实验设备及平台] |
adc实验_电源监控 [2022/03/22 10:18] (当前版本) sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801**||| | |技术支持电话|**0379-69926675-801**||| | ||
|技术支持邮件|Gingko@vip.163.com||| | |技术支持邮件|Gingko@vip.163.com||| | ||
- | |技术论坛|http://www.eeschool.org||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-07-04 | gingko | 初次建立 | | | V1.0 | 2020-07-04 | gingko | 初次建立 | | ||
行 48: | 行 47: | ||
* 常规通道转换期间可产生DMA请求 | * 常规通道转换期间可产生DMA请求 | ||
=== 3、ADC框图 === | === 3、ADC框图 === | ||
+ | {{ :icore4:icore4_arm_hal_9_1.png?direct |}} | ||
=== 4、ADC寄存器介绍 === | === 4、ADC寄存器介绍 === | ||
(1)ADC控制寄存器(ADC_CR1和ADC_CR2) | (1)ADC控制寄存器(ADC_CR1和ADC_CR2) | ||
- | + | {{ :icore4:icore4_arm_hal_9_2.png?direct |}} | |
- | ADC_CR1的SCAN位,该位用于设置扫描模式,由软件设置和清除,如果设置为1,则使用扫描模式,如果为0,则关闭扫描模式。在扫描模式下,由ADC_SQRx或ADC_JSQRx寄存器选中的通道被转换。如果设置了EOCIE或JEOCIE,只在最后一个通道转换完毕后才会产生EOC或JEOC中断。ADC_CR1[25:24]用于设置ADC的分辨率,详细的对应关系如图所示: | + | * ADC_CR1的SCAN位,该位用于设置扫描模式,由软件设置和清除,如果设置为1,则使用扫描模式,如果为0,则关闭扫描模式。在扫描模式下,由ADC_SQRx或ADC_JSQRx寄存器选中的通道被转换。如果设置了EOCIE或JEOCIE,只在最后一个通道转换完毕后才会产生EOC或JEOC中断。ADC_CR1[25:24]用于设置ADC的分辨率,详细的对应关系如图所示: |
- | + | {{ :icore4:icore4_arm_hal_9_3.png?direct |}} | |
- | ADC_CR2寄存器的各位描述如图所示: | + | * ADC_CR2寄存器的各位描述如图所示: |
- | + | {{ :icore4:icore4_arm_hal_9_4.png?direct |}} | |
- | ADON位用于开关AD转换器,而CONT位用于设置是否进行连续转换,SWSTART 位用于开始规则通道的转换。 | + | * ADON位用于开关AD转换器,而CONT位用于设置是否进行连续转换,SWSTART 位用于开始规则通道的转换。 |
(2)ADC通用控制寄存器(ADC_CCR) | (2)ADC通用控制寄存器(ADC_CCR) | ||
- | + | {{ :icore4:icore4_arm_hal_9_5.png?direct |}} | |
- | TSVREFE位是内部温度传感器和Vrefint通道使能位,这里我们直接设置为0。ADCPRE[1:0]用于设置ADC输入时钟分频,00~11分别对应2/4/6/8分频,MULTI[4:0]用于多重ADC模式选择。 | + | * TSVREFE位是内部温度传感器和Vrefint通道使能位,这里我们直接设置为0。ADCPRE[1:0]用于设置ADC输入时钟分频,00~11分别对应2/4/6/8分频,MULTI[4:0]用于多重ADC模式选择。 |
- | (3)ADC采样时间寄存器(ADC_SMPR1和ADC_SMPR2),这两个寄存器用于设置通道0~18的采样时间,每个通道占用3个位。ADC_SMPR1的各位描述如图所示: | + | (3)ADC采样时间寄存器(ADC_SMPR1和ADC_SMPR2),这两个寄存器用于设置通道0~18的采样时间,每个通道占用3个位。 ADC_SMPR1的各位描述如图所示: |
- | + | {{ :icore4:icore4_arm_hal_9_6.png?direct |}} | |
- | ADC_SMPR2的各位描述如下图所示: | + | * ADC_SMPR2的各位描述如下图所示: |
- | + | {{ :icore4:icore4_arm_hal_9_7.png?direct |}} | |
- | 对于每个要转换的通道,采样时间建议尽量长一点,以获得较高的准确度,但是这样会降低ADC的转换速率。ADC的转换时间可以由以下公式计算: | + | * 对于每个要转换的通道,采样时间建议尽量长一点,以获得较高的准确度,但是这样会降低ADC的转换速率。ADC的转换时间可以由以下公式计算: |
- | Tcovn=采样时间+12个周期 | + | * **Tcovn=采样时间+12个周期** |
- | 其中:Tcovn为总转换时间,采样时间是根据每个通道的SMP位的设置来决定的。例如,当ADCCLK=27Mhz的时候,并设置3个周期的采样时间,则得到:Tcovn=3+12=15个周期=0.55us。 | + | * 其中:Tcovn为总转换时间,采样时间是根据每个通道的SMP位的设置来决定的。例如,当ADCCLK=27Mhz的时候,并设置3个周期的采样时间,则得到:Tcovn=3+12=15个周期=0.55us。 |
(4)ADC状态寄存器(ADC_SR),该寄存器保存了ADC转换时的各种状态。该寄存器的各位描述如图所示: | (4)ADC状态寄存器(ADC_SR),该寄存器保存了ADC转换时的各种状态。该寄存器的各位描述如图所示: | ||
- | + | {{ :icore4:icore4_arm_hal_9_8.png?direct |}} | |
- | 这里仅介绍将要用到的是EOC位,通过判断该位来决定是否此次规则通道的AD转换已经完成,如果该位位1,则表示转换完成了,就可以从ADC_DR中读取转换结果,否则等待转换完成。 | + | * 这里仅介绍将要用到的是EOC位,通过判断该位来决定是否此次规则通道的AD转换已经完成,如果该位位1,则表示转换完成了,就可以从ADC_DR中读取转换结果,否则等待转换完成。 |
- | 本实验中iCore4的所有电源经过电阻分压或者直接接入STM32的ADC的输出通道内,输入电流经过高端电流检测芯片ZXCT1009F输入到ADC的输入通道内,从而实现电源监控功能。 | + | * 本实验中iCore4的所有电源经过电阻分压或者直接接入STM32的ADC的输出通道内,输入电流经过高端电流检测芯片ZXCT1009F输入到ADC的输入通道内,从而实现电源监控功能。 |
==== 四、 实验程序 ==== | ==== 四、 实验程序 ==== | ||
行 228: | 行 227: | ||
* 串口一直向终端输出输入电源的数据。 | * 串口一直向终端输出输入电源的数据。 | ||
+ | {{ :icore4:icore4_arm_hal_9_9.png?direct |}} | ||