单片机实例分享,简易网络测试仪
网络已经融入了当今生活的各个方面,成为绝大多数人生活中不可或缺的重要组成部分。因为职业的关系,笔者经常会接触到网线的铺设以及网络的测试等方面工作,在工作中我发现借助专业的网络测试仪,可以极大地减少网络故障的排查时间,并能很好地提高工作效率。
专业的网络测试仪功能很强大:电缆查找、扫描线序、PING功能、寻找端口以及数据包分析等。然而,不容忽视的是,尽管一个专业的网络测试仪功能很强大,但价格往往不菲,动辄上万,因此相对于国外来说,国内使用范围还很有限。能不能自己设计一个简单实用的网络测试仪呢?当然可以。
网线制作的线序可以使用网线测试仪进行测试,并且价格也很便宜,因此,暂且忽略这个功能。综合考虑常用的几个功能,笔者设计的简易网络测试仪(以下简称测试仪)支持:PING功能、DHCP功能测试以及网络访问测试,也就是说,此测试仪建立在网络数据传输之上,能直观地反映网络传输性能。
笔者的设计思路如图30.1所示。
图30.1 简易网络测试仪结构
元器件选择
图30.2所示是此测试仪所用元器件,使用的元器件清单如表30.1所示。
图30.2 元器件实物
表30.1 元器件清单
1.网络传输接口芯片网络传输接口是本测试仪的重点,选择一款合适的接口芯片对于简化制作及日后工作的稳定性都尤为重要。在这里,笔者选择了 ENC28J60,ENC28J60 是 Microchip Technology(美国微芯科技公司)2005年推出的28引脚封装独立以太网控制器。自从推出以来,应用极其广泛,这得益于它的引脚非常少、外围电路很简单、使用3线SPI串行接口和单片机通信。由于它占用芯片引脚非常少,所以焊接容易,甚至可以直接在洞洞板上进行电路布局。
2.MCU 主控芯片由于选定ENC28J60作为网络接口芯片,MCU的引脚只需保证以下条件即可:
(1)支持3/4线SPI接口,用于与ENC28J60通信,当然,用I/O模拟也可,只是速度会稍慢;
(2)网络需要一定的数据包RAM缓存,因此主控芯片RAM至少为1KB以上;
(3)网络协议占用大量的代码空间,考虑到扩展性,片内Flash最好大于32KB。
在此,从通用与易上手方面综合考虑,笔者选用了51内核的1T单片机STC12C5A60S2,此单片机的特点为:改进传统51单片机12T的指令运行周期,达到了1T,速度大大提高;内部Flash空间达到了60KB,不用担心因程序代码的空间过大而放不下的问题。
电路设计规划
此测试仪的电路非常简单,主体由3片IC组成,外加带网络变压器的RJ45接口座HR911105A以及少量的阻容元器件。
显示器采用最常用的LCM1602字符型液晶显示屏,虽然只能显示16×2个字符,但经过优化的主菜单看起来效果也不错。
电路图如图30.3所示。
图30.3 简易网络测试仪电路图
工作流程简介
从笔者的设计思路中可以看出,测试仪采用菜单的形式对功能进行分类,包括TCP网页测试页面、PING命令以及通过DHCP功能从路由器自动获取IP这3大功能。其中,对网络协议的数据包处理与分发是测试仪工作的重点,在此,笔者就对此进行简要的介绍。
网络数据传输中,最常用的协议组就是“TCP/IP协议”,是一个协议组。相对测试仪系统而言,用到的协议有以下几个。
(1)ARP协议:该协议为大部分数据传输的前提,用于询问对方的MAC地址,以便在后期点对点传输中发送含有正确MAC的数据包。
(2)IP 协议:该协议用于点对点数据传输过程,通过 IP 地址判别接收方的数据包,它是ICMP、UDP和TCP协议的“容器”。
(3)ICMP协议:换个通俗的说法,该协议就是PING,用于确认对方的连接状态,正常连接就能收到PING回应。
(4)UDP协议:该协议是简单的面向数据包的传输层协议,不需要通过复杂的握手协议,只需要知道对方的IP地址和MAC即可进行数据传输,因此具有高效、却不可靠的特点。
(5)TCP协议:该协议是高可靠性的包交换传输协议,通过复杂的握手、重发、回应协议机制进行传输,和UDP相反,具有冗余、可靠的特点。
(6)DHCP协议:该协议是用来实现自动从路由器上获取IP地址、子网掩码以及网关IP地址的功能,免去了手动设置IP的麻烦。
这6个常用的协议只是众多网络协议中的很小一部分,但却负担着大部分网络传输任务,因此,网络传输其实并非很多人想象得那么不可捉摸。
焊接安装与调试
由于元器件不多,电路结构比较简单,遂采用Protel 99SE设计,完成后的PCB布局如图30.4所示。只要焊接无误,上电烧写程序后即能正常工作。笔者试制了几个均一次成功。
图30.4 PCB 布局
实际效果
焊接完成之后的效果如图30.5所示,之后进行液晶显示屏装配,效果如图30.6所示。
图30.5 焊接完成图
图30.6 装配上液晶显示屏
上电初始化完成后,进入主菜单,如图30.7所示,可以按动Next按键选择相应的功能,按Enter按键确认。
选择功能1是WebServer,是运行TCP网页测试的页面,用于网络中的电脑对测试仪进行数据访问测试。与测试仪在同一网络中的电脑均可以通过IE浏览器访问测试仪,在浏览器地址栏输入测试仪的地址即可,图30.8所示为测试仪运行界面,图30.9所示为电脑访问测试仪的网页,网页上可以显示电脑的IP地址以及MAC地址。
图30.7 主菜单
图30.8 运行网页服务器
选择功能2为PING功能,它是用于测试仪对网络中的电脑进行数据交换测试,不仅可以对同一局域网内的电脑进行测试,也可对跨越路由器的远程IP地址进行PING。如果对端电脑未能对测试仪进行回应,测试仪就会显示“Response TTL= ???”;如果收到回应,则显示TTL=064(也可能是255、128、32等);如果对端的电脑跨越路由器,则每跨越一层路由器,TTL的数值就会减1,这个数据也可以粗略地估计数据包经过的路由器层数。All后的数据表示总共进行了几次PING,Succ后的数据表示成功的PING次数,All与Succ之差就是丢包的次数。网络状况良好时,一般All和Succ的数据相等。图30.10为PING功能的PING通状态。
图30.9 电脑访问网页服务
选择功能3为设置功能,可以对测试仪的IP地址、子网掩码以及网关进行设置,也可在开启DHCP功能的路由器网络内,通过打开测试仪的DHCP功能从路由器处自动获取上述3个参数,这样就更加方便使用了,图30.11所示为设置的参数。
图30.10 PING 功能的PING 通状态
图30.11 设置菜单
总结
测试仪在设计之初,就本着尽量精简的原则,在完成支持ARP、ICMP、DHCP以及TCP协议的情况下,删除不必要的协议。因此,系统代码相当精简,只占用了大约16KB的代码空间。当然,它也仅能完成菜单选择PING命令、自动获取IP和网页显示电脑参数等简单的功能,一些复杂的网络功能,例如数据协议分析显示、网络数据包存储等,由于体积和硬件所限,在本测试仪中尚未涉及。
经过一段时间的试用,该系统运行稳定,在日常工作中与网线测试仪搭配,能够完成大部分测试和故障判断工作,完全可以满足日常的应用。
■ 为了方便大家制作,下位机、上位机的代码与 PCB 文件均可从qq群657864614下载。
单片机软件测试详细介绍
单片机软件测试是指对单片机程序进行验证和评估的过程,旨在确保程序能够按照预期工作,并满足相关要求和标准。下面将从单片机测试的意义、流程、技术、常见问题及解决方法等方面进行详细讲解。
一、单片机测试的意义
在单片机程序开发过程中,由于硬件设备的特殊性和复杂性,程序出现问题后会直接影响到整个系统的稳定性和性能。因此,单片机软件测试的意义在于:
1. 确保程序的正确性。通过测试可以发现程序中的错误,修复这些错误可以提高系统的稳定性和可靠性。
2. 提高软件质量。测试可以发现程序中存在的缺陷,提出改进建议,优化程序性能,进而提高软件质量。
3. 减少测试成本。测试可以发现缺陷,提前发现问题,使问题早发现、早解决,从而节约了测试成本。
4. 保障用户利益。测试可以发现并修复问题,防止问题给用户带来损失,提高用户满意度。
二、单片机测试的流程
单片机测试的过程通常包括如下步骤:
1. 确定测试目标和范围。首先要确定测试的目的和范围,并设定测试标准和测试指标,以便测试时能够把握重点、科学有序地进行测试工作。
2. 制定测试计划。根据测试需求和测试目标,制定测试计划,确定测试用例、测试环境、测试人员、测试时间以及测试评估方法。
3. 编写测试用例。测试用例是测试的基本单位,要尽可能地覆盖程序中的所有功能,对各种情况进行全面测试,涵盖正常情况、异常情况以及边界情况等。
4. 进行测试。测试工程师按照测试计划和测试用例进行测试,对程序进行功能测试、性能测试、兼容性测试、安全测试等不同类型的测试,收集测试数据和测试结果,并制定测试报告。
5. 整理和分析测试结果。将测试结果进行整理和分析,找出其中的问题和缺陷,并根据优先级进行分类和排序。
6. 修复问题和缺陷。根据测试结果,开发人员修复程序中存在的问题和缺陷。
7. 重复测试。在修复完问题后进行重复测试,检查已修复的问题是否已经解决,确保程序已经达到了预期效果。
三、单片机测试的技术
单片机测试的技术包括手工测试、自动化测试和模拟测试等。
1. 手工测试。手工测试是通过人工对程序进行测试,以发现其中的缺陷。手工测试简单易行,适用于针对单个模块的测试、针对新功能的测试等场景。但手工测试效率低下,不利于持续集成和持续交付。
2. 自动化测试。自动化测试是通过自动化测试工具对程序进行测试,以减少人力和时间成本。自动化测试主要包括单元测试、集成测试、系统测试和验收测试等方式。自动化测试效率高,可以减少人员的劳动强度,也可以简化测试流程。
3. 模拟测试。模拟测试是通过仿真仿真器或者调试工具,对软件进行测试,以检测电路的正确性、时序的正确性等。在硬件还没有生产出来的时候,可以通过模拟器来对程序进行调试,减少硬件的物理组装成本。
四、单片机测试中的常见问题及解决方法
1. 功能测试不充分。常见原因包括测试用例编写不全面、测试用例没有考虑到各种异常等情况。解决方法是增加测试用例,完善测试数据,考虑到各种异常情况。
2. 测试时间不够充分。常见原因包括没有充分估计测试时间、测试时间过短等。解决方法是合理规划测试时间,并进行任务优先级的分配。
3. 测试环境不稳定。常见原因包括测试环境的搭建不完善、测试环境的使用不规范等。解决方法是保证测试环境的稳定性和完整性,同时要提供完善的测试工具和测试数据。
4. 缺乏测试经验。测试工程师对硬件结构和程序特性不熟悉,测试流程不规范。解决方法是提供充足的测试培训,加强测试人员的专业技能培养。
5. 缺乏测试工具。缺乏测试工具,无法实现自动化测试和模拟器仿真测试,影响测试效率和效果。解决方法是提供充足的测试工具库,加强测试团队的研发管理能力。
总之,单片机测试是保证系统可靠性的重要手段之一,要求测试人员熟悉硬件特性、掌握测试技巧,做好测试计划和测试技术方面的规划和准备工作。
相关问答
单片机 怎么检测好坏?单片机好坏的检测可以通过以下方法进行:1.使用测试仪器检测:现今市场上有很多专业的测试仪器和设备可以检测单片机的好坏,例如USBEEPROMProgrammer,即可...
单片机 电压检测?一般检测io电平的变化通过两种方式,下面分别介绍这两种方法。第一种:查询法,cpu通过程序不断的查询单片机IO引脚的状态,如果检测到电平变化,比如由高电平变...
单片机 硬件测验是怎么弄的,就是硬件做好之后,要怎么检查焊接...3.通电测试功能,如果功能都正常,基本就测试合格。一是可以用万用表测量,而是通电用用程序检测。这个主要是谈价钱,看配置,不要上当,现在假的很少行货带票的...
如何判断 单片机 的好坏?1、视觉判断机械损坏;2、外用表测量电源及各个端口的对地电阻,具体阻值与好的芯片对比;3、烧录一个使用相关IO口的程序,在线测试,最好是做一块每个IO口都...
单片机 如何测量选择性漏电?如果只是检测是否漏电,没必要使用单片机,电压比较器即可。在电热水器与接地点之间串接一个100欧的电阻,按照漏电保护器的动作值30mA计算,漏电电流30mA时,电...
单片机 如何进行电平和脉冲信号检测?电平分两种,一为高电平,二为低电平.当单片机检测到高电平或者低电平时给单片机做出相应的动作就好了。还有脉冲信号也是电平一样的。至于于单片机相连你就直接...
STC89C52烧 程序 时一直检测正在检测目标 单片机 ,刚买的板子-ZO...5.点下载后再给单片机上电6.更换下载软件7.实在不行,换一个芯片试一下,可判断是芯片问题,还是下载线和软件问题前提是确保下载线或模块的驱动安装正常将下载...
单片机 编程高手,有16个开关8个IO口用2个74HC245进行输入扩展, 单片机 是怎样检测输入信号的,怎样写 程序 ?我估计你的问题没有描述得很清晰,最好能说清楚设计的目的,看你的意思是想进行输入扩展,将8路输入扩展为16路输入;74HC245是方向可控的八路缓冲器,常用于提高...
51 单片机 如何检测k1是否按下?在51单片机中,可以通过读取K1的引脚电平状态来检测K1是否按下。可以将K1连接到单片机的一个GPIO引脚上,然后通过读取该引脚的电平状态(高电平或低电平),来确...
单片机 没有办法检测到按键,可能是有什么问题?1.按键损坏,按下不导通,或没有焊好。2.接按键的单片机引脚损坏了。3.程序有问题,没有检测按键程序,或检测引脚错误。属于哪条,你自己根据现象排除。1.按键...