f407的ADC是否可以不用TIM自动触发?那采样频率怎么算?

2019-07-21 02:39发布

[mw_shl_code=c,true] STM324xG_LCD_Init(); /* 初始化LCD液晶屏 */ SRAM_Init(); *(uint16_t*)(0x68008000) = 0xaaaa; //ceshi SRAM_DMA_Config(); ADC1_CH13_DMA_Config(); /* Start ADC1 Software Conversion */ ADC_SoftwareStartConv(ADC1); com_init(); LCD_Clear(Black); LCD_WriteRAM_Prepare(); //-------------------------------- NVIC_GroupConfig(); SZ_STM32_KEYInit();[/mw_shl_code]
ADC_SotwareStartConv()这个函数的作用是什么?   我看了一下数据手册,发现是将SWSTART置位。程序中我没有使用定时器,程序依然可以运行,ADC依然可以采样。是不是只要把这个位置位,单片机就可以自动采样?那这采样频率又怎么算?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
yzl
2019-07-21 13:06

回复【2楼】正点原子:
---------------------------------
ADC_SoftwareStartConv(ADC1);这个设置完成之后,总转换时间就是固定的?

数据手册上是这么写的.

总转换时间的计算公式如下:
Tconv
= 采样时间+ 12 个周期
示例:
ADCCLK = 30 MHz 且采样时间= 3 个周期时:
Tconv
= 3 + 12 = 15 个周期= 0.5 μs(APB2 为60 MHz 时)


按照我的理解。
软件触发不能改变总采样时间,但是外部触发可以通过改变定时器来控制ADC的转换速度。
是这样吗?

还有一个问题,DMA里面有M2M模式,这个模式不支持循环模式,传输完数据之后就停止了。现在我想达到一个目的,就是每隔一段时间进行一次M2M的传输,那这DMA请求怎么触发?

一周热门 更多>