大部分的OTP单片机开发流程是先用仿真器进行仿真,f仿真完成之后再烧录OTP单片机芯片进行验证,但是很多少时候会发现有一个问题,仿真器仿真都是OK的,但是一旦焊接在板上了,就往往发现有问题,因为硬件条件变化,会出现,比如ADC不准,流程不对等,这要怎么样破解呢?
解决方法就是去查看寄存器/内存,根据单片机状态去判断对应流程或是数据。那离开了仿真器,怎么样去查看这些数据呢?
可以根据需要选择以下方法:
1.预留1个IO口,当程序运行的时候,用点灯方式进行验证,有运行则亮灯;没有运行,不亮灯。但是这种效率比较低,毕竟只有 一个bit变量,要么0,要么1
2.同样是预留一个IO口,但是这个IO可以输出PWM波形,用PWM的占空比多少,表示程序的运行状态,OK,这个方法感觉好一点了,可以有8bit/10bit的状态输出
3.还是预留一个IO口,把这个IO口变成uart口打印输出,但是很多otp单片机,不带串口控制器,需要用IO口去模拟串口,这样就可以输出更多的状态。但是因为时钟不匹配的关系,串口的波特率输出不能太高,导致串口打印毕竟耗时,当串口打印数据多了,会影响流程。串口打印数据还必须串口连接PC,在PC上开个串口调试助手,查看数据。
除了上面3种方法,还有没有其他方法呢。
下面就介绍第4种方法,这是在第3种方法上去做扩展
1.调高通信速率,使用高速串口,比如1M,2M这种,或是使用红外编码,单总线编码方式,大幅度提高通信速率,减少打印耗时,减少对程序流程影响
2.把串口助手显示换成OLED屏显示。
3.控制显示数据量,减少对正常运行流程影响。
下面是我做的一个打印调试样品,
1.串口命令格式共有6个字节 分别为 头(1byte) 命令(1byte) 数据1( 2byte)数据2(2byte)
2.只显示2通道数据,每个通道为16bit数据,分别为CH1和CH2
3.通道数据10进制数和16进制数同时显示。
4.波形显示,由于屏幕比较小,波形显示不能做到很精细,只做参考。
用法:<目标单片机》====== 地线 和一个IO ====== <调试工具>,目标单片机高速发送数据,调试工具端把对应数据显示出来。
基本是这样了,欢迎提出意见和建议!