【IoT】 产品设计:如何从零设计一款产品(硬件角度)

1、需求定义 
 
需求定义用来描述产品的基本功能,对于公司来说,需求一般由该公司的市场销售部门或该公司的主要客户来制定。

例子:对于开发板产品来说,主要就是提供各种接口,为开发产品时提供借鉴。

需求定义: 
 
1)功能定义

系统的用途。
 
2)硬件选型

实际输入输出是何种方式实现。
 
3)系统选型

系统是否需要操作界面

示例:
 
系统描述:

水泵换水系统(用 STM32 神舟 III 号开发板模拟实现) 

电源输入:

变压器的 9V~12V 直流电 

水泵功率:375W 

1)使用单相交流电机,由机械电气进行控制 

2)如果温泉池处于低水位,则输入开关闭合信号,以禁止水泵继续运行 

3)用户可以自由设置水泵运行或关闭的时间长度 

4)除了自动设置控制外,还需要提供一种人工装置来允许维护人员灵活控制水泵进行维修 

5)水泵开启/关闭/人工干预的时间可以 30 分钟为单位,在 30 分钟到 23 小时的范围内进行调节 

6)显示设备可以指示水泵的开关状态,剩余时间,以及水泵是否处于人工干预模式 

7)具备监视低水位的功能,并显示在屏幕上 

电磁干扰(EMI)和电磁兼容性 (EMC)认证、安全认证以及使用环境(包括环境温度、湿度、盐雾腐蚀等)等需求。 
 
CPU选型:
 
要避免选择的处理器刚好满足当前要求,这样当以后事务要求逐渐提高,处理器性能如果还有一定空 间的话,那么就可以重用目前的产品;

第二个就是要选择不会即将停产的芯片,很多处理器用得很广乏。

I/O管脚数量:
 
多数处理器都是使用内存和外部管脚来控制输入输出设备的,通常处理器都会有内置 ROM 和 RAM 的,如 果内置的内存就已经满足需要,那么处理器就可以节省产生引用外部存储器信号的引脚,这样处理器可为 输入输出提供较多的设备管脚(某些处理器支持外部 RAM 或 ROM 的使用,但对外部存储器进行访问时, 处理器一般需要占用 8 条到 10 条 I/O 管脚)。 
 
还有,有些处理器带有专用的内部定时时钟,这类时钟也需要使用一个端口管脚来实现某些定时功能;某 些处理器中还具有漏极输出和高电流输出能力,可以方便的直接驱动继电器或电磁铁线圈,而不再需要额 外驱动硬件的支持。 
 
当对处理器 I/O 管脚进行计数时,我们一定要把使用处理器内部功能(如串行接口和定时器等)时限制使 用的某些管脚考虑在内。 
 
接口数量:
 
嵌入式处理器的主要功能是与应用环境中的硬件进行交互操作,这不仅需要外部硬件对接口具有实时处理 能力,而且还要求处理器必须以足够快的速度对接口数据进行有效处理。 

举例来说,STM32 神舟系列开发板的 CPU 是 ST 公司出品的一款工业级微处理器,它基于 CORTEX M3 的核心,处理主频可达 72MHZ,同时处理器内部配置了 USB、SPI、IIC 等接口,像 STM32 神舟 IV 号 的 107 处理器还支持 Ethernet 等输出接口,其目的是更方便的利用这些接口开发出嵌入式产品。 
 
内存容量:
 
决定内存容量的大小是嵌入式产品设计过程中的一个基本步骤,如果对所需内存容量估计过高,那么我们
就有可能会选择成本较高的解决方案;反之,如果低估了所需内存容量,就有可能因系统需要重新设计而 导致项目不能按时完工。 
 
中断数量:
 
中断的主要用途是向中央处理器通报当前发生的某类特殊事件,这类事件包括诸如定时器超时事件、硬件 引发的事件等。 
 
需要强调的是,多数系统设计师经常过多地使用中断功能,实际上,中断的主要作用只是中断现行程序的 执行,中断最适用于必须要求中央处理器立即提供服务的事件。 
 
在需要设计和使用中断的情况下,一定要首先确认实际需要的中断数量,然后必须考虑到系统内部占用的 中断资源,如果需要使用的中断资源超出了处理器可以接收的中断数量,我们就应借助于某些特殊手段来 减少所需中断信号的数量。 
 
实时处理:
 
实时处理是一个涉及范围很广的题目,其主要内容与系统的处理速度有密切联系,实时事件是嵌入式微处 理器需要关注的主要任务。 
 
例如:处理器跟串口进行通信时,通常通过上层软件(为了保证实时性,进行任务切换的时间足够短),
然后再占用处理器去执行从串口拿数据的任务,并且要保证处理器的速率比串口速率快,那么处理器可以 以最快的速度反应并处理串口的相关的任务,这样就可以达到最大的实时性; 
 
另一方面,如果处理器本身就内置了串口控制器、或 DMA、或 LCD 的控制器等,那么它就可以保证直接 使用这些处理器内置的接口去控制串口、液晶屏等对象,以达到最大的实时性能。 
 
厂商是否提供好的开发工具和环境:
 
选择一款新的处理器,很可能就要使用一个新的开发工具和开发环境,包括软件的编译环境等;对于开发
日程安排比较紧张的项目来说,开发人员往往无法抽出专门的时间来研究,熟悉新的开发工具,从而也无 法全面掌握开发工具的使用技巧。 
 
并且,有的开发工具价格也比较昂贵,而且很可能只能从制造商那里购买,还有仿真工具也是需要付费的, 这些对我们在选择一款处理器的时候,是都应该考虑进去的成本因素。 
 
2、开发文档
 
1)硬件文档
 
1)首先是需求定义或产品规格: 
 
如果这些是产品最终目标的话,那么产品对硬件和软件的要求就是技术方案的最终目标;对硬件和软件的 要求是从定义用户界面和系统功能开始的。

2)硬件接口的具体定义: 
 
定义硬件最有效的方法是从需求开始描述,由于硬件必须支持系统定义的所有功能,因此硬件定义是与系 统说明不可分割的; 

例如,我们设计一个定时器(事先需求说明定时器不能与个人电脑连接,故无法使用 CRT 显示时间),我 们只有两种选择:一种是使用发光二极管(LED),另一种是使用液晶显示器件(LCD);尽管 LCD 的显 示效果比较好,但考虑到定时器要常年位于户外,并且早期 LCD 显示器不能在低温下工作,最终还是选择 LED 设备(这整个过程描述了我们硬件选型时的一个思路,这个是密切跟需求挂钩的) 

3)系统设计: 
 
首先要对硬件说明的内容进行细化,包括添加能让工程师理解的设计意图,以及软件工程师围绕硬件进行 程序设计时需要使用的硬件信息等。 

完成硬件电路板说明文档后,我们还要在该文档中增加一个用来描述系统的原始要求的前言部分,包括说
明方案的设计思路和方法。
 
2)软件文档
 
1) 软件文档与硬件文档的组织方法类似,软件要求文档的主要内容则是定义软件要实现的功能;一种是在 简单项目设计过程中,软件定义也可以只对一种电路板使用的软件给予描述;对较复杂的项目来说,由于 参与这种项目的软件人员分别负责设计驱动不同硬件部分的代码(同一电路板),因此每个软件人员可能 会为自己的设计代码指定不同的定义,这类软件说明需要提供下列的内容: 
 
2) 软件与硬件所考虑的不同之处
 
a. 软件的灵活性远远大于硬件,要让软件人员搞清楚某个软件的内部格式是非常困难的任务,解决的办法: 详细定义其他程序员需要了解的编程接口具体内容,以及其他工程人员在实施开发项目过程中需要使用的 技术细节信息。 
 
b. 软件工程师只有在收到硬件说明文档后,才有可能知道如何对系统硬件进行操作;而硬件人员一般不需 要了解软件程序的技术细节。 
 
c. 由于软件易于更改,因此程序内容经常会按销售人员提供的要求发生变更,在某些情况下,软件文档的 内容无法及时反映程序的最新变化。 

d. 软件经常是工程项目最后完成的部分,因此其文档也经常因时间不够而欠缺完整。实际上,软件文档是 否详细、完整,在某种程度上是与公司或客户的要求有关的。例如,军事或国家工程一般要求开发商就其 所有软件实现的功能提供全面详细的文档。

原创文章 354 获赞 322 访问量 56万+

猜你喜欢

转载自blog.csdn.net/liwei16611/article/details/105777709