我使用的是stm32g431这款芯片,现在想采样两路模拟信号,为了采样速度更快,想用adc1和adc2两个模块分别对这两路进行采样。使用ADC_DUALMODE_INJECSIMULT(双AD同步注入模式),CUBE配置如下所示,使用定时器更新事件触发ADC注入转换。 ADC1模块配置: ADC2模块配置(ADC1配置了同步触发,此时ADC2配置页面中无触发源选项配置,其他与ADC1保持不变) 在CUBE生成的初始化代码后添加一些ADC启动代码: 问题出现: 只有ADC1的注入通道有数据,ADC2的注入通道无数据。 想问一下这个是什么情况呢?我试过两个ADC模块都使用独立模式(ADC_MODE_INDEPENDENT),触发源与模块ADC1一致,这样是有数据的。如下: 修改的代码如下: |
stm32cubeide生成的lwip网络通讯任务跑起来都很正常,为什么一旦加独立看门狗之后就会卡死?
使用STM32CubeMX生成CMake工程中的FLASH.ld被更改的问题
请问:TOUCH GFX 与ST32CUBE-IDE是什么关系
写FLASH失败
STM32U5 偶尔出现无法进入shutdown模式
STM32CUBEIDE如何开启代码联想功能?
STM32和MCP2515通信
STM32U5+LPBAM需设置RAM为SRAM4的地址,否则LPBAM无法运行?
求助:PMSM电机编码器线数(分辨率)为80000线,超过MCSDK5.4.8软件所能设置的最大线数65535,请问如何解决
STM32CubeIDE MyST登录出现Proxy Error
使用上述配置的双ADC模式同步注入转换,CUBE生成的代码如下:(ADC2无数据)
然后循环查询转换结果,没有什么问题。
if( HAL_ADCEx_InjectedPollForConversion(&hadc1, 0xaaaa)== HAL_OK)
{
ResultADC1= HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_1);
ResultADC2= HAL_ADCEx_InjectedGetValue(&hadc2, ADC_INJECTED_RANK_1);
__HAL_ADC_CLEAR_FLAG(&hadc1, ADC_FLAG_JEOS);
__HAL_ADC_CLEAR_FLAG(&hadc2, ADC_FLAG_JEOS);
}
我也是ADC1 ADC2各用1个通道,ADC1的通道信号稳定,所以结果稳定。ADC2通道悬空,结果飘动。
谢谢回答!
请问你用的也是G431这款芯片验证的吗?我之前有用过F407的双ADC模块同步注入,印象中没出现过问题。。
还有就是,如果你的程序中不加你写的"循环查询转换结果"代码段,只从Watch里面去看寄存器数据hadc1.Instance->JDR1和hadc1.Instance->JDR2,这两个数据是不是也应该一直在刷新呢?我的程序中没有写ADC_IT_JEOS标志位的清除语句,但我觉得这对寄存器中的数据没有影响。
我把主循环代码 完全 屏蔽掉,只启动ADC1 /2 和TIMER,
依然可以看到结果的变化:
不行,你通过私信把邮件给我,我把配置给你参考下。