|
之前做的一个板子上有两个芯片,一个主控,一个协处理器,两个都有调试接口。PCB面积有限,只留了一个SWD插座,想着调试哪个就飞线切过去。 调试主控的时候没问题,切到协处理器的时候就出事了。用调试器连协处理器,烧录正常,但是断点经常打不上,单步走也不稳,时而能跑时而卡死。折腾了好几天,开始还以为是这个协处理器型号的调试功能有bug。 后来试了一下把主控的复位引脚拉低,让主控处于复位状态,再去调试协处理器,一切正常。问题找到了。主控没复位的时候,它的SWD引脚虽然没被复用成GPIO,但仍然会对外部调试总线的信号产生一点微小的影响。协处理器响应调试命令的时候,主控的SWD引脚也在监听总线,两个芯片都接到了同一组SWD信号线上,电平竞争导致信号质量变差。 解决方案就是在调试某个芯片的时候,把另一个芯片的调试接口用跳线帽断开,或者用GPIO控制一个模拟开关来物理隔离。从那以后画板子,两个芯片如果有独立的调试接口,要么分开布局各自留插座,要么用跳线或开关做物理隔离,不直接飞线。 后来有一次做项目,主控和协处理器分别用了两个不同电压域,调试信号的电平也不一样,一个是3.3V一个是1.8V,飞线调试的时候还要注意电平匹配。这次经历之后,基本上所有多芯片共调试口的板子都会提前预留隔离电阻的位置,要么用0欧电阻做跳线,要么用模拟开关做切换,省得到时候飞线焊来焊去。
|