博文

目前显示的是 十一月, 2025的博文

MB2 开发笔记

# 座子错位 调试USB的时候发现通讯不上, 测量的时候发现引脚不对, 经检查发现是主板对sensor板3.3V没有加上, 导致所有引脚偏移了一位 # 16V电源异常 有个比较严重的问题, 机器带着墨盒上电, 会出现电流异常增大, 表现为2个16V的4504芯片和16Vdcdc发热, 电源电压从 4V 降到 3.3V 以下关机了, 经历了以下排查步骤: 1. 16V_EN 和 16V_CUR 标号弄反, 飞线之后好了, 后来又不行了, 本质只是概率降低, 并不是完全好了 2. 后来定位到电池升压到16V, 9V的地方, 没有用mos管拦住, 导致4V直接通到16V的地方, 上电之后会让4504芯片通电, fpga上电之后状态不确定, 导致墨盒一直通着电, 通电就会掉电, 导致机器无法越过bl这个坎, 无法初始化fpga, 上电时拆下墨盒是临时解决方案 3. 打印时总是有一定几率电流变得很大, 导致关机, 原因未知 4. 把dcdc芯片和4504芯片换了, 打印不出来了, 怀疑是板子问题 5. 上电时fpga总是有类似喷墨信号输出, 经查是fpga初始化代码有操作eeprom的操作, 是不用的, 我拷贝错了 # 鼠标传感器 ## 事务流程 1. 创建一个sen_buf[2]的数组, 把要读写的内容放到这个数组里, 再把这个数组地址配置到相应的DMA参数里, 通知DMA启动 2. 通过上述的流程, 可以把数据发给传感器, 做初始化, 例如设置开启, dpi等 3. 当通过配置后, 传感器检测到移动, 就会有中断, 此时在中断函数里发出一个读取0x02的指令, 并启动DMA 4. DMA成功读取到数据之后也会来一个中断, 此时我们在DMA中断里处理刚刚获得的数据, 这个数据就在sen_buf[2]里, 因为我们指定了获得的数据会填在这里 5. 因为我们需要3个数据, 这时我们在DMA中断里处理数据之后再次发起读取0x03, 0x13的指令, 并且处理相关计算, 例如获取的数据怎么转换成我们需要的形式, 滤波等... 6. 因为3个数据需要连续读, 如果此时又来一个普通中断, 会大乱顺序, 所以我们要通过一个flag来控制, 如果正在处理3个数据的过程中, 又来了中断, 则不处理, 直到处理完毕之后, 再读取一下中断脚, 如果有中断就处...