#申请原创# 使用芯片MM32F103系列芯片,CAN波特率为250K,主要功能为采集信号主动发送给主机。
现象:发送一段时间数据后,就不再发送数据。
仿真现象:CAN1_PELI->MOD值变为9了,也就是说进入了复位模式
如果软件主动强行进行正常模式,过段时间也会反复进入。CAN1_PELI->TXERR有错误产生。CAN1_PELI->RXERR也有错误产生。
刚开始以为是波特率太高,晶振存在有一定的偏差倒至的,实际上在显波器看定时器输出波形误差才不到0.5%。把波特率降低到10K,确实好很多了,进入复位模式的时间变长了,有可能是一天才会出现一次,这样会倒至问题变得更加扑朔迷离。如果进入复位模式不加软件强行进入正常模式的话,设备就无法发送和接收数据了。
灵动微这个芯片主频为96M,实际运行的频率才48M。经过几个晚上的摸鱼。终于才捉住尾巴。
那就是把芯片的时钟主频降低至12M。实际上24M也行。怕出问题,还是改到了12M,好在这个设备实际使用的频率并不需要太高。波特率调回250K也没问题了。
以前使用的ST用的36M没有此问题。
本项目以前使用的是ST的芯片,后来ST涨价,不得不换成低成本的国产芯片。在程序的移植过程中可能会碰到一些问题,如果花点时间在这方面下功夫,还是可以把产品做好的,现在的国产也不错。但有些特殊用途的,一定也要考虑清楚替换料能不能把产品做稳定。
之前电话给厂家的技术,无耐技术有点不给力,答应帮忙弄的,但是一直没有收到回复,希望厂家能给力一点。同时希望大家使用国产,这样才会让厂商在欠缺方面有所提升。
|