1.
这就是为什么我用规则三重ADC模式,ADC3接到PA4上为什么就得不到数据,这种问题只能定心慢慢找。
2.
交替模式,三重ADC模式,DMA传输模式2
在此模式下,每当出现 2 个可用数据项时,就会生成一个 DMA 传输请求(如果 ADC_CCR
寄存器中的 DMA[1:0] 位等于 0b10)。此请求首先会将存储在 ADC_CDR 32 位寄存器低位
半字中的第一批转换数据传输到 SRAM,然后将存储在 ADC_CDR 高位半字中的第二批转
换数据传输到 SRAM。具体顺序如下:
● 第 1 个请求: ADC_CDR[31:0] = ADC2_DR[15:0] | ADC1_DR[15:0]
● 第 2 个请求: ADC_CDR[31:0] = ADC1_DR[15:0] | ADC3_DR[15:0]
● 第 3 个请求: ADC_CDR[31:0] = ADC3_DR[15:0] | ADC2_DR[15:0]
● 第 4 个请求: ADC_CDR[31:0] = ADC2_DR[15:0] | ADC1_DR[15:0], …
交替模式的意义在于应该是可以采集用几个ADC才采集同一个通道,只要采样的时刻避开就行。
3.扫描模式vs连续模式
连续转换模式
在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。此模式可通过外部触发启
动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。
每个转换后:
● 如果一个规则通道被转换:
─ 转换数据被储存在16位的ADC_DR寄存器中
─ EOC(转换结束)标志被设置
─ 如果设置了EOCIE,则产生中断。
扫描模式
此模式用来扫描一组模拟通道。
扫描模式可通过设置ADC_CR1寄存器的SCAN位来选择。一旦这个位被设置, ADC扫描所有被
ADC_SQRX寄存器(对规则通道)或ADC_JSQR(对注入通道)选中的所有通道。在每个组的每个通道上执行单次转换。在每个转换结束时,同一组的下一个通道被自动转换。如果设置了CONT位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。
如果设置了DMA位,在每次EOC后, DMA控制器把规则组通道的转换数据传输到SRAM中。而
注入通道转换的数据总是存储在ADC_JDRx寄存器中。