目录
1. GPIO详解
2. ADC配置
3. TIME1 PWM配置
4. 比较器1配置
5. TIME2配置
6. 比较器1、2配置
7. 电机启动换向过程及参数调试
电动工具主要外设资源总览
1、GPIO详解
输出:支持推挽输出和开漏输出(带上拉/下拉控制)
输入:支持浮空、上拉/下拉、模拟输入
每个 IO 速度可选
支持位操作(置位/复位寄存器 GPIOx_BSRR)
GPIOA 和 GPIOB 支持锁定配置
支持复用功能选择和模拟功能
支持 GPIO 快速翻转(2 clock)
输入模式
输入施密特触发器激活
由 GPIOx_PUPDR 寄存器激活上拉/下拉电阻控制
通过读取输入数据寄存器获取 I/O 状态
开漏模式:
输出数据寄存器写 0 激活输出 N-MOS(输出低),写 1 端口处于高阻态(P-MOS 不被激活)
推挽模式:
输出数据寄存器写 0 激活输出 N-MOS(输出低),写 1 激活输出 P-MOS(输出高)
上拉/下拉电阻控制
通过读取输入数据寄存器获取 I/O 状态
通过读取输出数据寄存器获取最后写入该寄存器的值
I/O 配置复用功能模式
输出缓冲器可被配置为开漏或推挽
外设信号(发送使能或数据)控制输出缓冲器
由 GPIOx_PUPDR 寄存器激活上拉/下拉电阻控制
通过读取输入数据寄存器获取 I/O 状态
芯片数据手册
引脚定义查询
端口功能复用
当 I/O 配置为模拟功能模式
输出缓冲器关闭
输入施密特触发器禁止输入, 施密特输出(数字输入)固定为 0
弱上拉/下拉电阻硬件关闭
读取输入数据寄存器固定为 0
2、ADC 配置
ADC 共有 16 个模拟通道
10 个外部模拟输入,从 GPIO 引脚引(ADC_IN0~9)
6 个内部模拟输入(温度传感器、内部参考电压、 VBAT 通道、 3 个运算放大器输出)
转换单一通道或自动扫描一个序列通道
每个模拟输入通道有专门的一位选择位 (CHSEL0~CHSEL21, 其中 CHSEL10~CHSEL15 位保留)
SCANDIR=0:正向扫描, 从通道 0 到通道 21
SCANDIR=1:反向扫描:从通道 21 到通道 0
温度传感连接到 ADC_IN16 通道,内部参考电压 VREFINT 连接到 ADC1_IN17 通道。VBAT 连接到 ADC1_IN18 通道。
模拟通道选择,配置模拟输入
a) ADC 异步时钟(16M HIRC),ADC 最大 ADC 时钟频率;
b) APB 时钟/2 或/4 ,避免时钟不同步,当 ADC 由定时器触发,且应用要求精确触发 ADC 时。
总的转换时间计算如下:
tCONV = 采样时间 + 12.5 x ADC 时钟周期
数据右对齐12bit
时钟选择独立时钟源16MHz
1.5个采样时钟周期
反向序列采样
独立的 ADC 供电和参考电压
VDDA 供电或作为参考电压必须大于等于 VDD 电压
使用内部参考电压计算实际 VDDA 电压
单次转换模式;执行一次序列转换 ,转换所有被选的通道
TIME_TRGO信号触发ADC启动
禁止断续模式
溢出结果寄存器保持为原数据
ADC中DMA数据传输配置
ADC数据RAM缓存地址
ADC结果寄存器
DMA传输方向外设到内存
DMA数据传输个数
外设地址不自增
内存地址自增
外设数据位为半字16bit
内存数据位为半字16bit
DMA模式为循环模式
DMA通道优先级最高级
开启DAM传输完成中断
3、TIME1 PWM配置
输出IO口配置&开启复用功能
定时器基本配置
预分频为零
中心对齐模式(向上/向下计数)
自动重载计数器为PWM周期
重复计数器为1
在计数值为0时输出更新中断
输出通道配置
PWM 模式 1
输出通道使能输出
输出有效电平选择
驱动输出有效电平时序图
下管低有效输出
下管高有效输出
刹车和死区配置
运行模式下“关闭状态”使能
运行模式下“空闲状态”使能
死区时间设置
刹车控制使能
刹车高电平有效
自动输出使能关闭
COMG事件预装载
预装载使能
只能COMG事件允许更新通道输出
中断开启
开启刹车、更新中断
开启通道1中断
比较器通道选择宏定义
H_PWM_L_ON调制模式换向函数
H_PWM_L_ON调制模式
电机三相波形
6路PWM换向输时序图
4、比较器1配置
反电势采样比较器1配置
正向输入通道根据电机运行实时切换通道(BEMFU/ BEMFV /BEMFW )
反向输入通道BEMFN
滤波时间设定
输出极性选择
比较器输出端不要作为定时器1的刹车输入
开启比较器输出中断
通道21外部中断开启
ADC1_COMP_IRQHandler
5、TIMER2 配置
Timer2 基本定时器
时钟预分频1us计数周期
向上计数模式
时钟分频因子为0
自重复计数为0
Timer2 中断配置
溢出中断
通道1中断 T1时间触发实现换向
通道2中断 T2时间触发开启过零点检测
6、比较器1、2配置
比较器过零点检测原理
硬件过流比较器2配置
正向输入通道选择运放3输出
反向输入通道选择内部参考电压
内部参考电压档位选择
滤波时间设定
输出极性选择
比较器输出端作为定时器1的刹车输入
参考电压选择
选择外部 AVDD 作为参考电压 CRV
选择内部 VREF(2V) 作为参考电压 CRV
开启比较器输出中断
通道22外部中断开启
ADC1_COMP_IRQHandler
7、电机启动换向过程及参数调试
启动阶段过零检测
设定初始换向时间
等待过零点
如果没有过零点,强制换向
换向强拖阶段参数设定
ADC_ZeroCross_Commutator
初始启动参数设定
ADC_Commutator_Init
运行阶段过零检测
初始阶段过零点扇区时间逐步收敛
运行阶段扇区时间以实际过零点时间加入滤波
检测到过零点参数设定
ADC_ZeroCross_Processed