程序移植中的常见问题总结

现象:

芯片驱动正常,功能应用单独实现也没有任何问题。但是将其移植到主程序中出现了时钟显示停止、触屏失效、参数显示出现问题的现象。

原因:

在芯片驱动程序的开发中,忽略了一个问题。那就是该芯片引脚占用的IO资源在初始化的时候不应该改变其他引脚的正常功能工作。初始化芯片时人为的改变了其余功能引脚的作用。将其功能复用功能人为了改成了输出引脚。只关注了该芯片正常工作时的IO引脚,忽略了其余各IO口的复用状态。后逐条分析查看原主程序中 IO的初始化操作,逐口比对发现了该问题。

解决方案:

重新对接口进行初始化,保留其余引脚的功能复用作用。        

总结:

工作要细致,不要犯想当然的毛病。出现问题后要冷静,咬人是不对的,呵呵。。。

一、关于延时

芯片时序要求非常严格,最基本的时间单位一定要非常精确,精确到微秒级。这是进行后续工作的基础。因为C语言来编程,不是很好控制延时的长短。故采用测试的方法进行,为了最大可能的 减小误差,采用延长测试时间的方式进行。其基本思想是延时一定时间后,将其时间在屏幕上打印出来,并分析各两次时间的间隔和具体延时参数之间的关系。例如:当延时参数为60000000时,各两次时间间隔是否小于1分钟。【备注:60000000us=1min】

二、对芯片的读写操作验证

进行芯片自我验证,向芯片暂存器的固定字节写入数据,然后一个字节一个字节读出来,比对写入和读出的数据是否一样。 

三、非易失操作的必要性

RAM数据暂存器用于内部计算和数据的存取,数据在掉电后丢失。为长期保存需要保存的数据信息,需要将相关数据信息由暂存器拷贝到EEPROM中。

上电复位后,芯片自动将EEPROM中相关字节拷贝到RAM中。

四、非必需操作的必要性

芯片读取操作,首先读取数据的低8位,再读取数据的高8位。无论是低8位还是高8位,都是从最低位一位一位的读。即使低位是不需要的字节也要读出来,这叫规则。

永不止步步 发表于11-14 10:17 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:345327个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号