用AT32 F415 START V1.3开发板测试,基础例程为AT32F415_Firmware_Library_V2.1.2下的tmr_trigger_automatic_preempted示例工程
时钟配置如下
* system clock (sclk) = hext / 2 * pll_mult
* system clock source = pll (hext)
* - hext = HEXT_VALUE
* - sclk = 144000000
* - ahbdiv = 1
* - ahbclk = 144000000
* - apb2div = 2
* - apb2clk = 72000000
* - apb1div = 2
* - apb1clk = 72000000
* - pll_mult = 36
* - flash_wtcyc = 4 cycle
ADC时钟div为6分频 也就是apb2/adcdiv=12MHz
修改外设配置如下
ADC普通通道为ADC_CHANNEL_4、ADC_CHANNEL_5、ADC_CHANNEL_6,触发方式为TMR1 CH1触发,数据由DMA搬运(DMA buffer大小3,循环模式)。
ADC抢占通道为ADC_CHANNEL_7、ADC_CHANNEL_8、ADC_CHANNEL_9,触发方式也为TMR1 CH1触发。
所有通道采样周期都设置为239.5周期
通过监测TMR1 CH1开始触发后,DMA传输中断完成时间与抢占通道转换完成中断时间分别为125us和65us。
所以请问下为什么ADC普通通道+DMA的方式与ADC抢占的方式两者时间相差会这么大 |