
MCSDK 6.2.1 位置模式过冲
hrtim里update reset和reset update同时打开不会互相激励吗,另外为什么现在定时器周期值不用-1了
hrtim 下Single-shot Non-retriggerable模式 reset信号到来时Repetition counter会减少吗,手册没说这一点
F334 hrtim pwm输出没有单独的预装载影子寄存器控制位吗
STM32F373 SDAC1+DMA,数据只能更新一次?
STM32F373的VDDSD电压一直处于2.5v左右,其他电压正常,附上原理图,求指导
stm32的同一个定时器,不同的通道,可以不同时的输出pwm波形吗
STM32F334如何配置PB1输出HRTIM同步信号
STM32的上电启动过程
STM32中如何实现数据加密
楼主,最好能贴出ADC的配置,应该采集的值时多少,实际采集到的是多少。这样好帮助分析。
先从配置进行分析,也可以单独进行10 11 15的数据采集来判断是不是配置的问题。
如果确认通道2、5结果正确,那ADC模块相关硬件及供电一般来讲不会有啥大问题。你检查下目前有问题的通道10/11/15外部线路有无影响AD采用的地方。再就是确认下软件配置方面,重点检查下这块。另外,初始化配置方面尽量使用CubeMx来完成,这样帮你省却很多工作量。
IO初始化如下
ADC配置如下
楼主,能详细说一下你的芯片类型吗?我用CubeMx查到
PA6
用的是ADC2,你看一下CubeMx的硬件配置。[md]芯片型号是STM32F302R8T6。
启用的通道6,7,8也能正常工作。
现在通道3和15接一起,通道3测出0x03F正确。通道15测出0xFBD-0xFBE。
通道10现在没接信号,也没复用其他功能,浮空的,测出来是0x777-78A。
之前怀疑是高速通道和低速通道可能不一样,现在可以排除了。
ADC使用Cube配置,用户代码里面就开启DMA连续采集,没有改动。
hadc1.Init.NbrOfConversion = 10;
看一下这里,我看你配置的是要采集11个AD值,这里写的是10个。除了检查电源外,再确认下有无干扰问题。
我刚用F302测试10 11 15通道,结果很好,下面是3组数据。CH10接地,CH11悬空,CH15接VDDA.
我使用CubeMx进行配置的,没啥特别的。
static void MX_ADC1_Init(void) {
/ USER CODE BEGIN ADC1_Init 0 /
/ USER CODE END ADC1_Init 0 /
ADC_ChannelConfTypeDef sConfig = {0};
/ USER CODE BEGIN ADC1_Init 1 /
/ USER CODE END ADC1_Init 1 / / Common config */ hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1; hadc1.Init.Resolution = ADC_RESOLUTION_12B; hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; hadc1.Init.ContinuousConvMode = DISABLE; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING; hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T1_TRGO; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.NbrOfConversion = 3; hadc1.Init.DMAContinuousRequests = ENABLE; hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc1.Init.LowPowerAutoWait = DISABLE; hadc1.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN; if (HAL_ADC_Init(&hadc1) != HAL_OK) { Error_Handler(); } /* Configure Regular Channel / sConfig.Channel = ADC_CHANNEL_10; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SingleDiff = ADC_SINGLE_ENDED; sConfig.SamplingTime = ADC_SAMPLETIME_181CYCLES_5; sConfig.OffsetNumber = ADC_OFFSET_NONE; sConfig.Offset = 0; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { Error_Handler(); } / Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_11; sConfig.Rank = ADC_REGULAR_RANK_2; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { Error_Handler(); } /* Configure Regular Channel / sConfig.Channel = ADC_CHANNEL_15; sConfig.Rank = ADC_REGULAR_RANK_3; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { Error_Handler(); } / USER CODE BEGIN ADC1_Init 2 /
/ USER CODE END ADC1_Init 2 /
}