名人堂再聚首 2023-02-19 09:02 采纳率: 50%
浏览 14
已结题

IAP升级时输出保持正常

大家好!

我现在要将PIC单片机程序做在线升级,也就是IAP,而且需求是必须不断电升级,也就是单片机重启复位时外围的输出信号必须能保持住。前两天看到有人说用锁存器,不知道这个具体怎么用法,大家有没有比较好的不断电升级方案,在此先谢谢了!

  • 写回答

4条回答 默认 最新

  • 社区专家-Monster-XH 2023-02-19 09:28
    关注

    基于Monster 组和GPT的调写:
    实现不断电升级需要满足两个条件:

    在升级过程中保持数据存储的稳定性,以防止数据丢失。

    在单片机复位后,外围的输出信号能够保持住。

    其中,保持数据存储的稳定性可以通过使用锁存器来实现。锁存器可以将数据存储在寄存器中,并在需要时将其输出到下一级电路。在IAP过程中,当需要修改Flash存储器中的数据时,可以将数据读取到锁存器中,进行修改,然后再将修改后的数据写回Flash存储器。

    保持输出信号的稳定性可以通过在单片机复位时将输出信号的状态保存在EEPROM中,并在复位后将其恢复。具体实现方法如下:

    在代码中加入EEPROM读写函数,用于将输出信号的状态保存在EEPROM中,并在需要时将其恢复。

    在单片机复位时,先从EEPROM中读取输出信号的状态,并将其输出到对应的外围设备。

    在进行IAP过程时,先将输出信号的状态读取到锁存器中,并在IAP完成后将其写回EEPROM中。

    在单片机正常运行时,使用锁存器来保存输出信号的状态,并在需要时将其输出到对应的外围设备。

    需要注意的是,EEPROM的写入次数是有限的,因此需要控制好EEPROM的使用次数,以防止过度磨损。

    除了使用锁存器和EEPROM来实现不断电升级,还可以考虑使用双Flash或者双EEPROM来实现,即在进行IAP时,先将程序下载到备用存储器中,再将程序复制到主存储器中。这种方法可以避免在IAP过程中丢失数据,同时也可以保持输出信号的状态。不过需要注意的是,双存储器的使用需要占用额外的空间,因此需要在设计时进行考虑。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月7日
  • 已采纳回答 3月30日
  • 创建了问题 2月19日

悬赏问题

  • ¥30 使用matlab将观测点聚合成多条目标轨迹
  • ¥15 Workbench中材料库无法更新,如何解决?
  • ¥20 如何推断此服务器配置
  • ¥15 关于github的项目怎么在pycharm上面运行
  • ¥15 内存地址视频流转RTMP
  • ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
  • ¥15 有没有整苹果智能分拣线上图像数据
  • ¥20 有没有人会这个东西的
  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析