无论您是在设计高速PCB还是复杂的嵌入式系统,都需要进行某种级别的测试。对于高速和RF系统,这通常意味着与VNA或示波器测量相比的仿真。对于嵌入式软件和固件,测试步骤可能会有很大不同。实际上,在原型设计中,您可以做一些事情来帮助您加速测试过程并消除使用万用表探测的需要。
在本文中,我将向您展示一些简单的技巧,可以使测试和调试原型变得更加容易。这意味着采取针对测试的设计方法,并将其应用于软件和硬件。这里有一个提示:嵌入式系统测试的最佳路径不仅仅是放置测试垫或测试点。
在PCB行业中,我们有很多流行词,而“针对测试的设计”通常与更广泛的DfX捆绑在一起。许多设计师在处理运行嵌入式代码的板子的测试时,会采取与测试任何其他板子相同的方法。
这通常意味着设计师会在重要信号上放置许多测试点,但可能不会有太多其他内容。许多嵌入式原型将开始看起来像Arduino开发板,其中主处理器上的所有可想到的内容都被引出到针脚头和测试点。
我并不反对在嵌入式系统板上或任何其他板上使用针脚头。但是,在尝试测试和调试板上运行的软件或固件的同时监控每个信号和针脚是困难的。在某些情况下,您必须实际编写一个应用程序来测试您的应用程序。有时,如果您看到设计功能中的错误,根本原因是在您的代码还是在您的PCBA中可能并不总是显而易见的。
在硬件方面,专注于采取这种简化的针对测试的设计方法:
这些概念中的一些已经被Ari Mahpour在他关于测试和持续集成的讨论中广泛讨论过了。查看这篇文章以了解更多关于这种方法的信息。如果你想将数据发送回你的电脑,最简单的方法是在你的原型中添加一个USB到串行接口。查看Zach Peterson的这个项目并获取链接设计文件。
接下来,如果你在系统上运行一个嵌入式应用程序,那么你可以在代码中包含错误处理或测试用例以帮助加速测试。添加与接口的连接,包括插头、测试垫和基本的串行接口,都是帮助你实时监控嵌入式板的重要步骤。目标是看到软件应用程序与硬件并行的行为。
那么,你如何同时监控你的应用程序和硬件的进展呢?借鉴软件开发人员的做法:添加错误处理和消息显示,以显示应用程序中每个功能的状态。这可以简单到显示消息,说明应用程序中重要功能是通过还是失败。编写所有这些错误检查需要一些额外的时间,但在应用程序执行期间,屏幕上的消息指示你的系统正在做什么,可以消除大量的调试工作。
这里有一个例子,展示了如何在C/C++中使用一个简单的函数(称为myFunction())和一个假设的GPIO库来实现这一点。假设你正在使用一个提供了像gpio_init()、gpio_read()等函数的简单GPIO库:
#include |
如果您的应用程序直接监控信号,您的应用程序可以在其核心功能的每个步骤中打印这些结果。在屏幕上打印这些结果以及您的关键指示信号,将准确告诉您应用程序的进展情况,您无需使用外部设备手动测量板上的每个信号。当然,这需要在设计板时引出一些额外的轨迹到 GPIO,但您可能会发现,一个明显的逻辑错误实际上只是您的 PCB 中的一个简单连接错误。
别忘了,您仍然可以将任何其他需要去探针的信号引出到一个头部。这样,这些信号仍然可以用示波器或数据采集卡进行测量。同时,串行端口将大大简化与应用程序逻辑交互的工作。
无论您想设计什么,您都可以使用 Altium Designer® 中的完整 PCB 设计功能集来实现创新的测试设计实践。为了在当今的跨学科环境中实现协作,创新公司正在使用 Altium 365™ 平台轻松共享设计数据并将项目投入生产。
我们只是略微触及了在 Altium 365 上使用 Altium Designer 的可能性。立即开始您的 Altium Designer + Altium 365 免费试用。