关于多芯片协作的探讨

前言

最近需要做一块工业设备的控制板,从方便编程和成本出发,选择了esp32 c3作为主控,但是在加入了屏幕、编码器后,全芯片就只剩下4个io可以用了,无法满足多路控制需求;所以,我打算加入一块mcu扩展出多个io接口,mcu与现有主控之间通过i2c协议通信。

现在有关两块控制芯片负责哪些内容无法定夺,写一篇文章,我自己也好梳理一下。

难点:通过自己设计硬件和软件,代替成熟的PLC,需要充分考虑到实际生产时控制板的稳定性,应急情况下如何快速停机/车。

大概分为两种方式,以A芯片代指esp32,B芯片代指mcu。

方式一

A芯片负责用户界面,即屏幕显示,编码器反馈,按钮反馈;负责把每一次指定接口开关信号指令给B芯片;并且把用户自定义的数值保存在flash中。

B芯片负责接收A芯片的指令,判断可行后,对具体io进行信号输出。

此种通信频率高。

方式二

A芯片负责用户界面;对于控制相关的信号,只输出行为指令给B芯片,由B芯片进行对信号输出可行性信号输出接口选择,信号输出时间的判断和操作。

利弊

方式一

利:将多数代码放在A芯片中,充分利用A芯片的大flash空间优势;工艺更新可以只升级A芯片的程序,编程简单。B芯片的指令兼容性高,可以一套固件应对多种生产需求。

开发时间成本和硬件成本低,控制板泛用性强。

弊:芯片间通讯频繁,每一个决定性指令均会经过一次芯片间通讯,若出现数据传输错误,可能导致生产安全事故,虽然B芯片能加入代码进行指令的可行性验证,但很难完全排错。A芯片可能会因为人为误操作导致死机/出错,此时控制信号不可信,也无法由B芯片判断对错;若在B芯片中写入完整的工艺流程判断指令对错,那与方式二无异。

传感器数据也需要由B芯片回传给A芯片,交其处理。

芯片间通讯出错概率高、出错事故率大(相对)。

方式二

利:代码执行与用户操作分开,A芯片只作为“赛跑”的发令员,“赛跑”的所有细节操作均交给B芯片处理、执行,能增加生产时的稳定性;传感器信息可以一并由B芯片处理,省去通讯时间,快速反馈。

稳定性高。

弊:每一套生产需求都得编写两套代码,程序后期升级困难;A&B芯片强绑定,若一颗芯片需要更换得一起换,售后成本高;对B芯片素质要求高,复杂控制仍会有出错空间。程序编程较为困难,调试时需要同时更新两个芯片的程序。

开发时间成本极高。

结语

这几天搞这些真的是花钱又花时间,有点撑不住了;此文我会分享一下,读者可以一起思考思考哈。

最后的解决方案一定是个取两者利处的最优解,还得让我思考一段时间,决定好了会写文章整理的。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇