在这里爆爆我使用NXP遇到的问题。我使用LPC9XX系列的单片的时间已经超过5年了,也不算是个新手,大大小小使用LPC9XX做过的产品也有10个以上了,以前也没有遇到这种无法解决的问题,这次遇到的问题很蹊跷,我想了很多办法,没能解决,希望周公出来陈清下市这个批次的芯片出现的工艺,或质量问题,还是新版IC设计原因。不管怎么样,不过,即便是得意解决,我以后也会尽可能不选用NXP了,这次很受伤。我想还是不要成为不完善的IC的牺牲品。
首先问题1:LPC935内部的EEPROM读出的数据老是变化。开始的时候,调试人员以为是内部EEPROM不能写入,后来我测试,写入正确,而是读出数据时出错。我的系统使用的是内部RC振荡器,电源使用的是1117M3.3.最小系统,外部使用了一片MAX202和ADS1110。这个产品是1年前投产的,没有遇到这样的问题,这次突然出现传感器标定后,仍然测量超限(内部没有标定值),我使用串口将内部EEPROM读出的数据发送出来,发现,每3-5次读取EEPROM,就有一次数据是错误的。我怀疑是芯片打磨了,渠道不对,当即在ZLG订购了20片LPC935进行测试,结论一样。我的EEPROM读写程序参考了ZLG的代码,应用在别的芯片LPC932和别的产品没有发现问题,操作EEPROM时也关闭了中断,排除了程序问题。后来,我没有别的办法可想,只好对EEPROM连续读取5次,5次读出的结果都一样,才认为数据正确,总算勉强过了关。
问题2. EEPROM的问题刚解决,新问题又接踵而至,测试人员反映一开机电机狂转,紧接着复位。电机调速使用了PWM,使用了CCU的PWM模式。现象是一旦启动电机调速,CPU复位。最后发现问题在PLL问题上。我使用的内部RC振荡器分频后给PLL提供时钟,一旦启动PLL后,PLL不能锁定,程序死在
while(PLLEN==0);// wait until PLL locked
的位置上,紧接着,WDTC让CPU复位了。去掉了这句代码程序可以正常运行了,只是不能调速了。
我希望ZLG的客服不要一出来就怀疑程序怎么样,当然我不是说我的程序就一定OK,但是,或许他不完美,但是你们不要扇自己耳光,以为CCU的初始化代码原版照抄的你的示例代码,更关键的是,这是个成熟产品,快2年了,已经生产了好几百台的东西,难道还不能说明是程序时可靠的吗?
我都怀疑,NXP是不是被山寨了?宏晶代工的?或者瑕疵IC都流入了中国? |