|
本帖最后由 sacq12 于 2015-1-28 17:35 编辑 有一个简单的平台,用于验证测试小规模的逻辑电路。比如:拿到一片数字IC,不能确认其好坏,或准备进一步对其逻辑功能进行确定。# l, Y* x9 N2 E ! y' b' q2 l$ X9 p 很早就有这个想法,一直没动手,拿到STM32F072NUCLEO板,觉得是动手的时候了。- }8 k3 D1 \2 E Arduino插座与mbed开发环境有可能办到:简单的事情简单做; 利用NUCLEO板现成的VCP便于与上位机通讯。7 C9 Z/ Y! V& _; n1 \ 简单地看做:8 i* ] |# \7 L* g IC 测试座 <---> NUCLEO板 <----> PC 2 H; A+ \& j. o; D 利用NUCLEO板的数字端口(D0~D15等),在LabVIEW环境下搭建“虚拟”平台,对外接的数字逻辑电路进行“真实”的测试。* J* Z( c- _8 \3 S0 V 虚拟的是:界面里的开关、指示灯等;, s0 h2 G% Z3 a1 i7 \* i$ v% e 真实的是:逻辑器件上的电平。, l. a2 m( O7 G5 E ; D5 A0 B, v# d* B2 I/ O5 F* [
(这个图只是为了指明几个感兴趣的插座与定义) NUCLEO板,利用mbed开发平台,硬件接口重点集中在Arduino部分的CN5和CN9,或利用CN10。 待测试的逻辑电路的输入、输出脚,都连接到D0~D15,并把逻辑电路的地、供电合适连接(3.3V)。5 @* _ i8 G" q, O 上位机用LabVIEW编程环境,利用串口与NUCLEO板进行数据交换。0 R: Z; ]% u+ ]- w6 V8 M 原理:在面板设置输入端电平,通过串口把数据送到NUCLEO板,NUCLEO板负责把对应的逻辑电路引脚置1或置0,并把逻辑输出状态通过串口送到 上位机,在LabVIEW界面即观测到输出端电平。 测试插座与Aduino插座间的连接图:
实物:) E2 c- @4 H: r/ V2 F; R5 _
$ H' I- c; j e0 {) B 串口通讯的约定: 波特率9600,数据8位,1停止位,等等没什么特别的;$ t% I+ N& m! L$ @; g4 d+ ` 约定Nucleo接受的命令: + O- W/ \- @6 I0 A# G9 ]: e F1 (脚号) (脚号)... [ 对应的引脚置1 ]. S' k4 J2 h+ O: G+ G6 Z% l F0 (脚号) (脚号)... [ 对应的引脚置0 ]1 U. X4 n7 h+ ], W3 X; G/ C 8X [ 查询引脚X的电平,答复格式:单字节 X0 或 X1 ] (X: 1...7,9...F) 88 [ 查询4个引脚的电平,答复格式:单字节 (80...8F) ] + i6 c2 k3 L" U5 [. u' B7 m+ e . _& t8 V" L( k% ^' ` : [$ C9 }; Z V+ C Y: d 软件/ H8 E; ^3 R* j( } v! V: y 现在以4000系列的几种逻辑门电路(4001,4011,4071,4077,4081,都是4个2输入)为例子,编写相应的软件。 在mbed里,编写NUCLEO板的代码,根据这几种IC的特点,确定引脚的输入或输出的配置。 (对NUCLEO板而言,输入输出的概念与待测试IC的输入输出是相反的)3 v! {: X( m+ o7 s% y% p- m# f + `9 {: s) v- Y5 L3 \! @
(mbed里的语句不过100行,简短) 8 k, I d; v3 R5 u LabVIEW程序局部截图:
(LabVIEW程序,“画”着庞大,原理简单)5 R& \; C" S* [. i/ h1 b, `& P1 C 6 U; @1 i' V Z* l7 m7 |! ~: w LabVIEW程序界面截图:
(开关设置输入端的高低电平,红灯指示高,绿灯代表低)& h% g; [- E) m+ W4 b5 S6 b( p+ p 3 O& y# X8 T+ a 对照下4001(或非门),逻辑正确吗?
再看看4011(与非门):6 D0 k5 j2 p' L |) f6 }! N 9 C9 W! T8 @" A+ u+ G
4077的:6 [3 g% l8 u6 Q5 h+ r, S
还有4071,4081。。。 先整理这么多。# t; k9 x: Q: k5 r" Z, T 有关文件存在这里: bin文件(可直接“拷贝”到STM32F072-NUCLEO板)
Nucleo_itest_2_NUCLEO_F072RB (11).rar
(10.83 KB, 下载次数: 2)
|
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
小白也能明白的STM32的低功耗与唤醒机制
STM32系统中2种数据掉电保护的方法
分享STM32F051中文参考手册(重制书签版)
AI工具训练营-用ChatGPT解决HID Keyboard实现的问题
STM32固件库分享,超全系列整理
STM32小白入门指南:从基础到OTA实现方案
STM32超详细学习笔记
新手必看!STM32单片机应该怎么学?
如果你解决了这些问题,就可以直接学STM32
微信公众号
手机版
# b! `1 k3 ^0 S4 K# f3 W& [
来点有意思的吧。
把上位机(LabVIEW的)程序改进一下,在原有的界面右侧加点指示灯,示意在的测试的逻辑门的类型(与非,或,异或......共6种),当所有输入端的开关,按图中设置时,右侧可直接给出待测的门的类型指示,直接上图:* b/ f( U' ?2 C s( ~' K& Y8 b
# D% E1 O* N( C) }8 \6 @! C% k
来几张实拍的吧:# T) M$ L/ ?: y2 h$ Z7 r
(4071 或门 OR)( @+ g$ q, {" i- f/ U. N U
(4077 异或非 NXOR) }% G* _7 ]0 w0 z
$ B( J1 f2 \* f( v6 W
(4011 与非门 NAND)# V: ?% @+ D0 b
7 l! [0 V& k: }
LabVIEW程序,只改动了一点点,保存在下面。8 \: [+ B( H, E$ k6 U9 I
u+ [4 s! f3 s" O6 B" ^9 |
BIN文件,不变哦,在顶楼。
0 r) a9 B3 z9 m! s& `. t, C5 y: l