6702调试笔记

# 电机部分 at32 pwm功能介绍 https://blog.csdn.net/weixin_64557865/article/details/141779922 官方简略pdf https://arterytek.com/download/DS/DS_AT32F405_402_V2.03_CH.pdf 官方完整pdf https://arterytek.com/download/RM/RM_AT32F402_405_CH_V2.02.pdf pwm有几个重要参数, 周期, 比较值, 计数值, 通道有各种模式, A, B, 相等, 反转..., 强制高低 PWM AB: 以比较值为临界点, 当计数值大于或小于该点, 则输出高或低电平, 即我们平时用的pwm模式, 具体看链接 脉冲模式: 当计数值等于比较值时, 输出高或低电平, 一般用得很少 切换模式: 当计数值等于比较值时, 切换当前电平, 一般用得很少 强制模式: 当普通输出IO用, 一般用得很少 具体看链接 目前GPIO不够用, 只能用互补脚, 经过构思, CH2+PWMA = CH2C+PWMB 立即输出模式: 能够让第一个信号快速输出, 我们的应用应该用不到 ## 20260127调机 pwm互补输出: 2通道互补输出, 会输出和2通道相反的信号, 按照这种特性, 我认为应该把用pwmB模式, 才能负负得正, 把互补通道当作正常通道来用 但是实测下来, 2互补通道输出+pwmB模式 和 3普通通道输出+pwmA模式, 输出的波形却是一样的, 这就有点奇怪了, 跟我的设想有点不一样, 现在先用着, 以后慢慢研究 # 编码器 完整pdf: 297页 编码器模式 A:SMSEL=3’b001,计数器在 C1IFP1 边沿计数(上升沿和下降沿), 计数方向由 C1IFP1 边 沿方向和 C2IFP2 电平高低共同决定。 编码器模式 B:SMSEL=3’b010,计数器在 C2IFP2 边沿计数(上升沿和下降沿), 计数方向由 C2IFP2 边 沿方向和 C1IFP1 电平高低共同决定。 编码器模式 C:SMSEL=3’b011,计数器在 C1IFP1 和 C2IFP2 边沿计数(上升沿和下降沿), 计数方向 由 C1IFP1 边沿方向和 C2IFP2 电平高低、C2IFP2 边沿方向和 C1IFP1 电平高低共同决定共同决定。 ab可以简单理解为duke fpga写的步进电机模式, c就是普通正交信号模式 # 供电 上电发现电源不正常, 原因是因为硬件工程师画板子的时候, 符号选择错误, 我们最常见的mos管是GSD排序的, 他选了一个DGS排序的符号, 导致layout错误 临时把mos管逆时针旋转一个脚位就解决了 上电时bl直接掉电, 把pwr_off使能也没用, 我把绿灯改为红灯也不生效, 很明显是改动没有对板子生效 排查结果是因为复制项目时, 里面的烧录脚本, 还是指定了当前目录下旧的hex文件, 即: ``` pyocd flash build/旧.hex $AT32ARGS ``` 并且我make新项目的时候, 虽然改动的时候会重新编译, 导致了一种我在修改的假象, 但是没有make clean, 导致旧.hex还在目录里, 每次都在烧这个hex 后续改了脚本就可以了, 还是要养成make clean的习惯 # 485不通讯 调试中发现485不通讯, 排查了一下, 发现了一个bug, 头文件里的中断端口指定错误 ``` #define CD_IRQ EXINT2_IRQn ``` 正确的是 EXINT9_5_IRQn, 但是这个明显不是关键原因, 因为我之前别的机器也是用这个错误代码, 这个只是会导致抢占错误等小bug 再排查的时候, 发现这个机器做了低功耗处理, 需要手动开启485的3v3供电, 但是量了一下, 我无论是无配置的高阻态g脚, 还是配置了推挽的低电平, d脚都有2v的残电, 可能去掉上拉电阻就好了 但是这一块是后续的低功耗优化的部分, 仅作记录, 以后再慢慢排查调试

评论