单片机与上位机通讯:软硬件开发经验分享

发表时间: 2022-02-16 17:06

万事开头难做软件的设计也是这样子的,无论是软件还是硬件,都离不开不停地调用和重复的应用。

唯一能做好的是保持思路清晰,逻辑严谨。

做到了以上2点,基本上就不会有太大的问题了。

软件要注意,不要有耦合性的故障和因素的出现,各种耦合性的东西出现了就会相互影响,引起连锁的错误出现。

通过搜索引擎检索相关的代码和电路是常规的操作,所有的代码需要经过尤其是引用代码,必须经过严格的测试测试,经过思维的验证,最好能画出结构框图流程图或者是状态图。

电路中各元件的选择需要经过计算和验算,模拟电路,数字电路进行严格的分开,对温度敏感,远离功率器件。

多阅读参考设计核心关键软件的参考设计都会有相关的注意事项,比如说远离谁,比如说靠近谁。

对于射频电路要做好屏蔽措施,对于输入输出接口要进行EMC的设计。

通过模拟的运行考量软件或者硬件中国剑逻辑运行的可靠性稳定度以及与需求的符合度。

对于一个完整的产品开发流程,通常是从市场调研开始的,通过调研数据或者用户的反馈形成需求文档, 然后根据需求文档进行概念的设计或者叫概要的设计,然后再进行详细的设计,每一次的射击的输出都需要进行讨论,以开会的形式或投票的方式进行,然后根据会议和投票的结果进行修正设计或者是更改需求,当设计实现存在问题的时候,也可能去调整需求,在调整需求的时候,需要争取市场部门产品部门等相关部门的意见。

无论是软件或者硬件,在设计过程中都要在过程中进行检验及设计中的检验。

检验的时候,不仅仅是自我检验,还要进行交叉检验,避免自我检验过程中出现一叶障目的情况出现。

任何产品都包括输入输出和中间的处理三个部分!输入有可能是开关量,模拟量,数字量,或者是语音图像声音等等输出,同样可以是文字声音显示存储运动等等

中间的处理过程就是把输入的东西进行分析,或者是加工制造,或者是。去粗取精,去伪存真,或者是从中分析读取相关的状态或者包含的信息,然后把这些信息以另一种形式形态展现出来,通过输出接口或者输出装置。

输入可以包括什么呢?对于汽车或者自动驾驶来说,可以包括各种雷达,包括激光雷达,毫米波雷达或者是超声波雷达,可以包括摄像头,可以是单目摄像头,也可以是双目摄像头,甚至有可能是多目摄像头。

对于汽车来说,输入还有运动状态的传感器,比如说三轴啊,九轴和六轴的传感器,可能还会有北斗GPS和其他的融合的位置传感器,还有4系或者5系的通讯模块,这种通讯也可以作为输入也可以输出,它作为通讯模块也可以作为输入输出模块,都是可以的

对于环境监测来说,那就可能是各种类型的传感器,比如说二氧化碳传感器,PM2.5的传感器和各种化学成分的传感器,温度湿度的传感器,气压的传感器包括可见度的传感器,也可能是雨水收集器,风速传感器也可能有辐射的传感器,照度的传感器。还可以有声音的传感器,因为有时候有噪音的监测。有声音传感器就可能会有超声的传感器

对于机电控制来说,可能会用到位置传感器,位置传感器可能是光电型的或耳形的或者是微动型的,对于电机来说可能会有编码器,编码器呢会有磁的编码器或者光电的编码器,慈悲码器有绝对性和增量型的,光电的也是有绝对性和增量性的,还有绕组作为传感器也就是相当于一个电机,他输出一个正弦波来反映它的位置,还有霍尔传感器。这个或者传感器是电机,后边的三相的霍尔传感器表示绕组的位置,对于精确测量还会有光栅尺。

当然最简单的输入还是按键输入或者是拨码输入码盘输入,手动的输入也可以是键盘鼠标作为输入,如果有触摸屏有可能是触摸屏的触摸输入。

对于输出来说可能是个指示灯的输出回光管或者LED管都有可能。可能是显示输出显示输出,有可能是电脑的显示器,电视的监视器。或者是数字墨水屏,LED屏,LCD屏或者是投影仪。还有的输出就是运动的输出,运动的输出,比如电机的旋转直线电机或者是旋转的电机。或者是继电器输出的电流的通断,它可以控制其他用电设备的通断。除了继电器的通断也可能是晶闸管去控制的,通断晶闸管是控制交流电通断的。也可能是直流通端的控制,那么可能就是用三极管,场效应管,达林顿管等等

当然数据的存储也可以看作是输出,可以把数据存储到芯片的flash上,存储到SD卡上,存储到移动硬盘或者是固态硬盘,或者通过网络存储到服务器上。

还有一个就是数据传输的问题,有至少有两种数据传输,一是在板卡内部的芯片之间的数据传输,小数据,小信号的传输控制数据的传输,通常可以通过I2C总线或者是 spi总线来进行,对于外部传感器有可能会接入1-WIRE总线,而对于板与板之间数据的传输,可能会通过串口RS232,RS485或者RS422传输,也可以通过CAN总线进行传输,对于板卡或者是部件与PC之间数据的传输,可以是串口的传输,CAN总线传输,网络的传输或者是USB的传输。

传述除了有线传输也可以包括无线传输,比如WiFi,蓝牙,zigbee等。

接入服务器或者云端就需要网络接入,可以是网线、WiFi或者是4G、5G路由器。

对于处理单一人可以是简单的,MCU就是单片机,也可以是fpga或者是DSP,当然也可能是他们一个两个或三个的组合。

可以通过模块化来降低软件或者是硬件之间相对的耦合度,并且可以提高各个部分部件或者是板卡的通用性和可重复使用的性质。

当然也可以选用市场上已经存在的成熟的产品模块作为整个产品和系统的一部分,这样可以降低产品和系统的开发的难度,提高产品的开发效率。

应用环境不同,需要考虑硬件所能承受的温度湿度的范围,成本不同也需要考虑各种器件的价格因素,供电不同,比如有的要电池供电,需要考虑低功耗的特点。

对于有的产品需要考虑元器件的可替代性,对于核心芯片的可替代性是不好衡量的,比如说PIC单片机芯片他根本都没有可替代的。

开发工具的选择,一定程度上也会决定开发的效率!不知道会编和机械语言是效率最高的,但是开发的效率是最低的,所以我们的开发工具都是用C语言的。

商业软件和开源软件如何选择?这也是一个问题,对于小的公司来说是无所谓的!对大公司一定要购买商业软件的版权,或者使用开源的软件工具!

更高的开发效率和更好的开发文档有的时候是一对矛盾!但是这一对矛盾有时候又是相辅相成的,写文档的时间固然需要比较长,但是这个文档对于后期程序的升级改造来说是至关重要的。

在很多小公司,通常都存在重代码轻文档的现象。

对于一个产品来说,需要多少种文档,多少类型的文档呢?首先要有需求的说明书需要细化的说明书,要有产品的概要设计,详细设计以及产品的操作使用的说明书,每个软件每个硬件都要有相应的文档,软件之间的接口以及软件与硬件与硬件与硬件之间接口需要有接口规范的文档和通讯协议的文档,对于硬件而言要有原理图,PCB版图已经BOM表和采购清单等等,原理图上各个元件需要有参数的计算书,原理图参考电路图资料等。

还要有生产工艺的相关文件,生产工艺的检验方法和检验步骤,以及产品的维修的方法的指导文件!对于文件的更新版本迭代需要进行及时调节。并做好详细的记录。

大凡有硬件的就一定会有壳体或者是安装机构和机械结构相连接的部分等等。

这就必然会有CAD图资料以及安装图。装配图以及生产加工工艺,装配工艺检验方法,检验步骤等等。

后面要连接生产加工的流程以及最后的包装发货销售以及售后服务的流程。

麻雀虽小,五脏俱全!软硬件设计在整个产品生命周期中有着独特的地位,并且他与相关的其他的部门相互联结,相互影响。很多时候是一荣俱荣,一损俱损。

一个产品始于市场的需求,从一个思路想法开始,借助软硬件的工具以及市场上已有的元件和部件经过选择装配链接调试而形成一个新的产品,满足于市场的新的需求。

我们的任何产品都是用来满足人们的某一种或者多种需求的。

无论是软硬件开发或者机械的开发,或者其他的化工之类的,都是应用自己的知识体系技能的基础通过组合现有的东西来实现新的功能新的技术,最终目的是满足人们的某种需求。

开发的目的是用最低的成本,最高的效率,最大的可靠性来满足客户的基础的需求和扩展的需求。