ADC通道切换在GD32和PY32(STM32)区别

GD32 与 PY32/STM32 (LL库) 在 ADC 架构和寄存器操作上的核心差异。

核心差异总结

1. GD32 (基于标准库/寄存器直接操作):

机制: 使用 RSQ (Regular Sequence) 寄存器。

操作: adc_regular_channel_config(rank, channel, ...) 实际上是修改序列中第 rank 个位置对应的通道号。

特性: 这是一个"写通道号"的操作。在大多数 GD32 型号中,只要不改变序列长度或触发源,动态修改 RSQ 中的通道值通常不需要关闭 ADC,因为硬件是在转换开始那一刻读取 RSQ 的当前值。

2. PY32 / STM32 (基于 LL 库):

机制: 使用 CHSELR (Channel Selection Register)。

操作: LL_ADC_REG_SetSequencerChannels() 是写入一个位图 (Bitmap)。例如,选通道 3 就是置位 bit 3。

特性: 这是一个"配置有效通道集合"的操作。根据 ARM Cortex-M0/M0+内核的 ADC 设计规范(以及 PY32/STM32 参考手册),当 ADEN (ADC Enable) 为 1 时,CHSELR 寄存器是只读的 (Write protected)。

后果: 如果在 ADC 使能状态下强行写入 CHSELR,写入会被忽略,或者导致总线错误(取决于具体系列),通道不会切换。因此,必须先 Disable -> 等待完全关闭 -> 修改寄存器 -> 重新 Enable -> 等待就绪。

相关推荐
碧海银沙音频科技研究院4 小时前
基于炬芯ATS308X 设计的上位机usb 串口音乐EQ调节工具
stm32·单片机·嵌入式硬件
三佛科技-134163842128 小时前
过认证72W碳化硅方案(12V6A)主控HN1562+HN36228V 典型应用电路、变压器参数分享
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
Zwawa9 小时前
串口为什么会丢字节:从轮询到中断和环形缓冲区
c语言·单片机·嵌入式
Brilliantwxx9 小时前
【STM32】 内部 Flash 详解:寄存器逐位拆解 + 工作流程顺序全讲 + EEPROM再实现
stm32·单片机·嵌入式硬件·1024程序员节
木子单片机9 小时前
基于单片机的DS18B20温度传感器测温系统设计
单片机·嵌入式硬件·51单片机·keil
华清远见IT开放实验室9 小时前
实验室建设案例 | 安徽三联学院物联网实验室
stm32·单片机·嵌入式硬件·物联网·华清远见
Zw-awa10 小时前
串口为什么会丢字节:从轮询到中断和环形缓冲区
stm32
深圳光特通信豆子11 小时前
TTL 光模块在工业控制与串口通信中的应用指南(10M BIDI 单模系列)
单片机·嵌入式硬件
桀人11 小时前
SPI概念引入
stm32·单片机·嵌入式硬件
离凌寒12 小时前
一、基于stm32+freertos下LD2410D和R60ADB1两款雷达的使用效果
stm32·单片机·嵌入式硬件