博文

目前显示的是标签为“hardware”的博文

fpga调试笔记

# 前言 调试过程中, fpga经常不通, 情况有很多种, 特在此记录 # 编译错误 之前编译的时候, 忘记把新的代码引用了, 导致一直引用老代码的头文件 # pll错误(记忆模糊) 这个是之前编译的时候, 有个信号被拉错了电平, 进口和国产的电平是相反的, 在切换芯片的过程中, 这一块忘记调整了 # mcu代码没移植好 我移植的时候, 是参考了mcu 405 -> 402的版本节点, 还没有移植fpga, 导致spi初始化fpga的时候, 相应的代码没有加上, 例如控制MODE0, MODE1 国产fpga的初始化条件: | | | | --- | --- | | CLKHOLD_N | 需要上拉 | | READY | 会呈现出高电平 | | RESET | 需要上拉 | | MODE0(IO2) | 需要上拉 | | MODE1(IO3) | 需要下拉 | | DONE | 满足上述条件并初始化后, 会呈现出高电平 | | TCK | 4.7k下拉 | # 引脚画错 移植一款产品的时候, fpga一直不通, 尝试过改中断信号里的选项, 反复检查手动修改GPIO功能的代码, 也不行 我们把一个理论上好的fpga固件烧录到另外一个产品里, 理论上应该是通的才对, 结果也不通 结果是spi的sck脚画错了, 因为这个方案用很多次了, 根本想不到会以这种方式出错, 所以这一块一开始没有检查 # GPIO配置错误 因为把IO3改为了GPIOC, 知道要添加一个GPIOC的配置, 添加如下: ``` gpio_init_type gpio_init_struct_c = { .gpio_drive_strength = GPIO_DRIVE_STRENGTH_MODERATE, .gpio_out_type = GPIO_OUTPUT_PUSH_PULL, .gpio_mode = GPIO_MODE_MUX, .gpio_pull = GPIO_PULL_NONE, .gpio_pins = qspi_io3.num }; ``` 但是怎么试都不行, 结果是因为用这个配置的时候, 没有指定用在GPIOC上: ``` gpio_init(GPIOB, ...

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 边沿方向和...

硬件故障 之 双mos上电就有电 #4

因为我们需要使用 pmos 和 nmos 去控制 35V 的通断, 但是测试过程中发现默认通电, 原因是使用的 nmos CJ1012, VGS导通电压只有 0.8V 左右, 可能有点残电就会导通, 后续换成导通阈值高一点的 2N7002, 还有把下拉换成 4.7k

带底座唤醒的自动关机电路

markdown # 电路图 ![](https://raw.githubusercontent.com/Baileyus/blog_img/main/2024-01-10_15-49.png) ![](https://raw.githubusercontent.com/Baileyus/blog_img/main/2024-01-10_15-52.png) # A区 主电路开关, 控制了一个pmos # B区 SW1 从 OFF 拨到 ON 的时候, 电流会短暂通过未充电的 C2, 将 Q2 的 1脚拉高, 外部供电使能 外部供电使能时, 外部CPU将SLEEP_SIGNAL第一时间拉高, 维持供电 当CPU需要软件关机时, 只需将SLEEP_SIGNAL拉低, 此时全部电源关闭, 且无法重新启动 # C区, D区 如果机器底座需要唤醒机器, 只需将V_BOTTOM短暂拉高, 此时 Q4 会短暂导通, 导通后CPU一样可以维持住开机状态 # Order [Power on/off key circuit](https://blog.d-l.io/key-on-off) END

硬件故障 之 墨盒驱动排阻发热 #2

markdown # 起因 给创客做一个板子, 里面有一个 24V 转 16V 的dcdc电路, 型号是 ti 的 TPS560430YF # 现象 有几个排阻连接墨盒之后, 上电就发热冒烟 # 排查 - 换了电感, 现象依旧 - 发现 16V dcdc 的 EN 脚下拉电阻虚焊 # 解决 16V dcdc 的 EN 脚下拉电阻虚焊, 导致 16V 信号时序不对, 导致墨盒一直导通 焊接完就好了 END

硬件故障 之 dcdc上电烧毁 #1

markdown # 起因 给创客做一个板子, 里面有一个 24V 转 16V 的dcdc电路, 型号是 ti 的 TPS560430YF. 这次贴片厂分两次给, 第一批次没问题, 第二批次一上电就炸芯片, 冒烟冒火花 # 现象 炸的板子 24V 的走线鼓起, 明显是 24V 处通过了大电流 炸了两个之后不敢乱试, 先用 12V 0.2A 小功率上电, 结果电流飙到 0.2A, 不正常, 赶紧断电, dcdc附近发热 # 排查 - 换 dcdc 芯片, 现象依旧 - 量了分压电阻, 没问题 - 量了对地有没有短路, 没问题 - 打算换电感试一下 # 解决 打算换电感的时候, 上网查了一下电感损坏的表现, 没想到网上也有人说这个情况, 看了一下跟我的情况很吻合 [[DCDC] 记录一次关于DCDC的TPS5430反复烧坏的经历](https://bbs.21ic.com/icview-3066202-1-1.html) 然后我就换了电感, 就好了, 怀疑是过炉的时候把电感弄坏了, 下次选用好一点的电感 END # 20240517 补充 之前电感由 [cjiang(长江微电)](https://item.szlcsc.com/902303.html) 换成 [Sunlord(顺络)](https://item.szlcsc.com/84589.html), 结果还是出现问题, 那跟电感的关系不大, 还是工艺或良品率造成的