早期的微控制器都具有固定的I/O,虽然可以将一个内部外设连接到I/O引脚,但这些引脚受到限制,也不可能调节这些输出。而一些现代的微控制器不仅能够将外设路由到任何I/O引脚,还可以对输出进行配置和定制以满足特定需求。本文将讨论如何在PSoC上利用这种功能来简化项目测试。
我曾经写过关于对我所设计的产品进行测试的方法(参见《测试的艺术第1部分:线路板、组件和产品》、《测试的艺术第2部分:控制测试》、《测试的艺术第3部分:经验教训》)。我尝试将这些概念构建到一个新产品中(见图1),可以看到有很多I/O连接。所用的嵌入式微控制器是PSoC5LP,我已经对这一器件谈论了很多,我将再做一次!
我认为解决这个问题的最佳方法是使用内置测试来激活输出以响应某些输入。这将使测试夹具更加简单,因为它只需要硬件而不需要对外部器件进行额外编程。
图1:一个基于PSoC5LP的控制器,其中大多数组件安装在底部。请注意胶带用于保护相关个人信息。这让我想起了Dilbert卡通。 (来源:作者)
有一个问题困扰着我。该产品有一个串口,其RS-485接口(半双工)使用常见普通的MAX485。如果没有某种形式的外部UART,你将如何测试?也许可以使用示波器来检查接收,但是相反方向的数据怎么办?以前有摩托罗拉(MC14469)的UART转接器件,但它已经停产了,所以这个主意行不通。
我理智地想了一下,我不是要检查UART是否正常,而是要看支持硬件是否正常。因此,我所要做的就是在第一次测试中激发微控制器输出,并在第二次测试中激发微控制器输入并读取它。我本来可以使用UART的中断功能(如果它有这个功能的话,并且要在PSoC5LP器件上实现这个功能),尽管它涉及额外的中断。实话实说,我是开始写这篇文章时才冒出这个想法。
图2:微控制器上典型的嵌入式UART,带有半专用I/O引脚。 (来源:作者/ PSoC Creator)
在一颗典型的微控制器上,UART连接被引出到一组或多组I/O引脚,然后通过配置寄存器来启用,如图2所示。在某些可重配置微控制器上,特别是PSoC5LP,可以添加寄存器,并设置UART引脚与微控制器物理I/O引脚之间的器件,如图3所示。
图3:硬件配置允许为测试重新配置输出。 (来源:作者/PSoC Creator)
SerInRead:
Status Reg:状态寄存器
clock:时钟
status:状态
modbus:网络通讯协议
interrupt:中断
reset:重置
Mbus Test:MBUS测试
control Reg:控制寄存器
control:控制
UART的输出引脚通过多路复用器连接到I/O引脚。控制寄存器选择多路复用器端口,以便微控制器可以直接控制输出引脚,从而完全排除UART。 Rx输入馈送到与UART Rx输入并行的数字输入寄存器。
当控制寄存器的第2位为低电平时,UART输出连接到物理输出引脚,UART就正常工作。TX引脚通过外部接线连接到PCB上的MAX485的DI引脚。TxEN引脚用于控制数据流的方向(!RE和DE在MAX485上短接)。MAX485的RO引脚驱动Rx输入引脚。当控制寄存器的第2位设置为高电平时(在测试软件中),另外两个控制寄存器位连接到物理输出引脚。然后,微控制器可以设置这些引脚以生成硬件信号,以便可视化地检查输出。当通过TxEN输出改变MAX485的方向时,可以在状态寄存器(Status Reg)中读取输入。
这不仅允许在器件内部进行重新配置,我也不需要更改我的PCB设计。我只需设计一个小型接线板,它带有另一个MAX485和一个LED灯以指示输出状态,以及两个开关,一个改变通信方向,另一个可以被所测器件读取。
有谁不喜欢可配置性呢!