我做这个,主控花了19块(某宝),74HC245PW-Q100J当时某宝七毛一个,剩下的元件在立创买的,电阻电容大部分一块钱买50个,AT24C02买了10个三块一毛八,RT9013-33GB买了10个花了四块五。
没仔细算,50应该能搞定。

一、什么是逻辑分析仪?

逻辑分析仪是分析数字系统逻辑关系的仪器。逻辑分析仪是属于数据域测试仪器中的一种总线分析仪,即以总线(多线)概念为基础,同时对多条数据线上的数据流进行观察和测试的仪器,这种仪器对复杂的数字系统的测试和分析十分有效。逻辑分析仪是利用时钟从测试设备上采集和显示数字信号的仪器,最主要作用在于时序判定。由于逻辑分析仪不像示波器那样有许多电压等级,通常只显示两个电压(逻辑1和0),因此设定了参考电压后,逻辑分析仪将被测信号通过比较器进行判定,高于参考电压者为High,低于参考电压者为Low,在High与
Low之间形成数字波形。 [1]

说说我个人的理解,逻辑分析仪就是用来分析电路的数字信号的,先设置好一个阈值电压,采集到的电压高于这个电压,则将其认为是高点平,如果低于阈值电压,则将其认为是低电平。(这很数字电路啊,不是0,就是1)。而且一般的逻辑分析仪都有很多通道,我这次做的是八通道。

二、逻辑分析仪和示波器又有什么区别呢?

1、输出的形式不一样:

比如,用逻辑分析仪和示波器同时观测一个正弦波,示波器可以很清楚地看到波形(毕竟叫示~ 波~ 器~ 啊),但是逻辑分析仪就只能看到忽高忽低(取决于设置的阈值)的电平信号,并不能看出来原来的波形。

2、通道数不一样:

目前我接触到的见到的示波器最多四通道,大部分都是双通道的(应该);但是逻辑分析仪可以很离谱,某宝似乎有32通道的,啧。

可能是逻辑分析仪更偏向于数字电路,示波器更偏向于模拟电路。

三、制作

1、电路

电路是白嫖一个大佬的,亲测有用,直接拿着打样买元件焊就完了。

2、成品

打样那当然首选嘉立创啦!(大家打样记得选个好看的颜色,绿色看腻了,我是当初草率了啊,懒得折腾了)

3、烧录(重要)

我就是这一步卡住了然后不想弄了就拖了好久啊

烧录器

这个是用I2C烧录的,某宝一搜就有,我用的是优信买的CH341A模块。

这里也以这个模块举例。

烧录软件

烧录的软件用的是沁恒的CH341A软件,这是它的驱动链接。
(PS:买了上面的那个模块找客服要资料,资料里都有。)

固件

固件就是需要烧录进去的东西啦,是个bin文件。

动手烧录

1)双击打开ch341a.exe,选择芯片


其中:

类型选择【24 EEPROM】
厂商选择【ATMLE】
名称选择【AT24C02】

2)连接电路

模块的电平信号选择3.3V、下载模式选择I2C(需要改跳线帽,具体如下图)。

然后将CH341A模块插入电脑的USB接口(笔记本随意一个均可,台式要是主机上的)。
接线就模块的SCL接逻辑分析仪的SCL、SDA接SDA。

但是啊,逻辑分析仪没有留下载接口,需要“手动飞线”,但是啊,CY7C68013A有56个管脚,而且还是QFN封装的!难搞。
看了电路就会发现,芯片的SCL和SDA接到了AT24C02上,一看这芯片的封装——SOP8,那就很好办了!
我是这么接线的:

3)擦除&查空


4)烧录

鼠标左键单击【打开】、选择好固件,然后确保电路连接“稳定”,点击【编程】,等软件提示烧录成功就好了。

手不够可以找人帮忙

四、上位机

逻辑分析仪接到电路后不像示波器那样需要一个大屏幕,用数据线连接到电脑,电脑就是显示屏,而且在他的时间刻度里随意缩放,很奈斯。

1、什么是上位机?

上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机single chip microcomputer/slave computer/lower computer之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。简言之如此,实际情况千差万别,但万变不离其宗:上下位机都需要编程,都有专门的开发系统。
在概念上,控制者和提供服务者是上位机,被控制者和被服务者是下位机,也可以理解为主机和从机的关系,但上位机和下位机是可以转换的。

2、下载

这个项目用到的上位机是saleae的上位机软件,下载地址(点这里)。

3、使用

安装完成之后,用type c的数据线(是数据线,不是充电线,一般买手机配的就是数据线)连接电脑和逻辑分析仪,打开软件点右上角的绿色箭头即可。

五、点灯

用51写个点灯的程序试试效果。

代码:

/*
这里测试取的是P1的八个口,具体可以随意发挥
*/
#include <reg52.h>        // 包含51头文件
#include <intrins.h>  // 包含移位标准库函数头文件#define uint unsigned int
#define uchar unsigned charuchar temp;              // LED灯相关变量void delay(uint z)
{uint x,y;for(x = z; x > 0; x--)for(y = 90; y > 0 ; y--);
} void main()//main函数自身会循环
{P1 = 0xfe;delay(2);while(1){P1 = _crol_(P1, 1);delay(2); }
}

接线:

我一开始发现我的有点异常啊,通道5和通道6有尖刺,灯亮的也和程序不一样(但是我忘记截图了),我就把通道6的线拔了试试,预期应该是一条直线,结果它出波了,如下图:

吓得我赶紧看电路,果然短路了:

把这个小珠子用镊子弄出来(轻点,别弄坏管脚了哦)就好了:

但是啊,我的通道0一直没有信号,后面检查发现是有个地方没焊好:

补上点锡就行了:


大功告成!
至此,一个八通道的逻辑分析仪就做好了。

六、注意事项

1、主控

主控QFN的封装可能8大好焊,可以试试这个:鹿仙子加热台

我用的就是这个。
锡膏别抹多了,不然到处是小珠子。

2、type c

type c的母座是16pin的,没风枪没技术还是推荐铁板烧,焊完了记得把母座的四个支柱也焊一下!

我第一个就没焊,上电测试直接怼上去,好家伙直接对下来了,铜皮给掀起来了,我也裂开了。

3、多加助焊剂

嫌脏可以用洗板水洗掉的

资料链接:

百度云

提取码: 5zbd

CSDN

2021-8-12更新

上次写完文章之后又去jp打样了,tb买的CY7C68013A,烙铁焊的,没成功,买了俩都没成功,离谱。

后面一狠心上风枪了,热风枪yyds!

这次去jlc打的样,8月11号到的板子(还是黑色的板子好看),这次焊的挺顺利的,碰到了些烧录的问题,烧录器用不来,害。

元件清单:

封装 数量 备注
0.1uF 0603 16 50个1.15元
22pf 0603 2 50个1.35元
1N4148W SOD-123 8 50个2.39元
6V 0.75A保险丝 F0805 1 10个2.32元
2*5排针 HDR-F-2.54_2X5 1 10个2.77元
LED 0805 1 20个2.26元
10k 0603 5 100个0.75元
1k 0603 2 100个0.77元
100R 0603*4 2 50个1.72元
100k 0603*4 2 50个2.07元
CY7C68013A-56LTXC QFN-56 1 1个19元
RT9013-33GB SOT-23-5 1 10个4.5元
AT24C02 SOP-8 1 10个3.18元
74HC245PW TSSOP-20 1 1个1.16元
TYPEC-16Pin USB-C-SMD 1 5个2.96元
24MHz SMD-3225_4P 1 5个2.65元

总计花费51元(计算器没按错的话我加起来刚好51)

虽然买这些东西加起来花了五十多了,但是剩下的还可以接着用的嘛,tb找家元件全的店铺下单就完了,我给的价格出来斜体的是在淘宝买的,剩下的都是lc的价格,可能会比tb贵一点。四舍五入五十搞定。

关于烧录的问题

不知道是我的问题还是烧录器被我弄坏了(我在我室友电脑上插上去之后,电脑没反应,我一开始没在意,后面去摸那个烧录器,挖槽是真滴烫啊,但是后面打开软件似乎又可以识别),反正就是,我只在第一次烧录成功了,本来当时还想着再烧录一次截个图放进博客里的,但是我没成功过第二次(这也是为啥博客里没有烧录成功的图的原因了23333)。

AT24C02还可以用51烧录的,学了51的应该都学了的…吧,就是关于I2C和EEPROM之类的。

用CH341A打开固件,那些数写到数组里完了就烧录。

具体原理请自行了解,我贴个我烧录的代码:

/*********************************************************************************
* 【作    者】:  清翔电子:向量
* 【版    本】:  V1.0
* 【网    站】:  http://www.qxmcu.com/
* 【淘宝店铺】:    http://qxmcu.taobao.com/
* 【实验平台】:    清翔 QX-MCS51 单片机开发板
* 【外部晶振】:    11.0592mhz
* 【主控芯片】:    STC89C52
* 【编译环境】:    Keil μVisio4
* 【程序功能】:    IIC通信,AT24C02读写数据,数码管显示数据。
* 【使用说明】:
**********************************************************************************/
#include <reg52.h>
#include <intrins.h>#define uint unsigned int
#define uchar unsigned char
#define At24c02ADDR 0XA0    //AT24C02硬件地址
#define I2cRead 1           //I2C读方向位
#define I2cWrite 0          //I2C写方向位sbit DU = P2^6;               //数码管段选
sbit WE = P2^7;                //数码管段选
sbit SCL = P3^1;           //I2C时钟总线
sbit SDA = P3^0;           //I2C数据总线
uchar num;                  //数码管显示的值
bit AckFlag;                //应答标志位//共阴数码管段选表0-9
uchar code SMGduan[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};
//数码管位选码
uchar code SMGwei[] = {0xfe, 0xfd, 0xfb};// 逻辑分析仪固件
uchar code logic_bin[] = {0xc0, 0x25, 0x09, 0x81,0x38, 0x01, 0x00, 0x00,0x7d, 0x2c, 0x5d, 0x84,0x8e, 0x2c, 0xe2, 0xa3 };/*====================================
函数  : delay(uint z)
参数  :z 延时毫秒设定,取值范围0-65535
返回值 :无
描述  :12T/Fosc11.0592M毫秒级延时
====================================*/
void delay(uint z)
{uint x,y;for(x = z; x > 0; x--)for(y = 114; y > 0 ; y--);
} /*====================================
函数  :display(uchar i)
参数  :i 显示数值,取值范围0-255
返回值 :无
描述  :三位共阴数码管动态显示
====================================*/
void display(uchar i)
{static uchar wei;      P0 = 0XFF;//清除断码WE = 1;//打开位选锁存器P0 = SMGwei[wei];WE = 0;//锁存位选数据switch(wei){case 0: DU = 1; P0 = SMGduan[i / 100]; DU = 0; break;case 1: DU = 1; P0 = SMGduan[i % 100 / 10]; DU = 0; break;   case 2: DU = 1; P0 = SMGduan[i % 10]; DU = 0; break;     }wei++;if(wei == 3)wei = 0;
}//定时器0初始化
void timer0Init()
{EA = 1;   //打开总中断ET0 = 1;//打开定时器0中断TR0 = 1;  //启动定时器0TMOD |= 0X01; //定时器工作模式1,16位定时模式TH0 = 0xED;TL0 = 0xFF; //定时5ms
}/****************************************************
IIC通信代码
****************************************************//*====================================
函数  :delay5us()
参数  :无
返回值 :无
描述  :5us延时函数
====================================*/
void delay5us()
{_nop_();
}/*====================================
函数  :I2cStart()
参数  :无
返回值 :无
描述  :I2C总线起始信号
====================================*/
void I2cStart()
{//时钟总线为高电平期间数据总线又高变低产生起始型号SCL = 1; SDA = 1;delay5us();//状态保持5usSDA = 0;delay5us();//状态保持5us
}/*====================================
函数  :I2cStop()
参数  :无
返回值 :无
描述  :I2C总线停止信号
====================================*/
void I2cStop()
{//时钟总线为高电平期间,数据总线从高变低产生终止信号SCL = 0;SDA = 0;SCL = 1;delay5us();//状态保持5usSDA = 1;delay5us();//状态保持5us
}/*====================================
函数  :ReadACK()
参数  :无
返回值 :1非应答,0应答
描述  :I2C总线读从机应答信号
====================================*/
bit ReadACK()
{SCL = 0;//拉低时钟总线,允许从机控制SDASCL = 1;//拉高,读SDAdelay5us();if(SDA)//NOACK{SCL = 0;return(1);//返回1}else//ACK{SCL = 0;return(0);//返回0}
}/*====================================
函数  :SendACK(bit i)
参数  :1主机发送非应答,0发送应答
返回值 :无
描述  :主机发送应答信号
====================================*/
void SendACK(bit i)
{SCL = 0;//拉低时钟总线,允许主机控制SDAif(i)    //发非应答SDA = 1;else //发应答SDA = 0;SCL = 1;  //拉高总线,让从机读SDAdelay5us();//保持5usSCL = 0; //拉低时钟总线,允许SDA释放SDA = 1;//释放数据总线
}/*====================================
函数  :I2cSendByte(uchar DAT)
参数  :DAT需要发送的数据
返回值 :无
描述  :I2C发送一个字节数据
====================================*/
void I2cSendByte(uchar DAT)
{uchar i; for(i=0; i<8; i++) //分别写8次,每次写1位{SCL = 0;//拉低时钟总线,允许SDA变化if(DAT & 0x80)//先写数据最高位SDA = 1;  //写1elseSDA = 0;  //写0SCL = 1;    //拉高时钟,让从机读SDADAT <<= 1;      //为发送下一位左移1位}SCL = 0; //拉低时钟总线,允许SDA释放SDA = 1;//释放数据总线
}/*====================================
函数  :At24c02Write(uchar ADDR, DAT)
参数  :ADDR 单元地址0-255,DAT 需要输入的数据0-255
返回值 :无
描述  :At24c02指定单元写入一个字节数据
====================================*/
void At24c02Write(uchar ADDR, DAT)
{I2cStart();//I2C起始信号I2cSendByte(At24c02ADDR + I2cWrite);//发送器件地址加读写方向位if(ReadACK()) //读从机应答AckFlag = 1;  //NOACKelseAckFlag = 0;    //ACKI2cSendByte(ADDR);//发送储存单元地址字节if(ReadACK())//读从机应答AckFlag = 1;    //NOACKelseAckFlag = 0;    //ACKI2cSendByte(DAT);//发送一字节数据if(ReadACK())//读从机应答AckFlag = 1;    //NOACKelseAckFlag = 0;    //ACKI2cStop(); //I2C停止信号
}/*====================================
函数  :I2cReadByte()
参数  :无
返回值 :返回读出的一字节数据
描述  :I2C总线读一字节数据
====================================*/
uchar I2cReadByte()
{uchar i, DAT;for(i=0; i<8; i++)//分别读8次,每次读一位{DAT <<= 1; //数据左移1位,准备接收一位SCL = 0;   //拉低时钟总线,允许从机控制SDA变化SCL = 1;   //拉高时钟总线,读取SDA上的数据if(SDA)DAT |= 0X01;//为1则写1,否则不行执行写1,通过左移补0}return(DAT); //返回读出的数据
}/*====================================
函数  :At24c02Read(uchar ADDR)
参数  :ADDR 单元地址   0-255
返回值 :返回指定单元的数据
描述  :读AT24C02指定单元内数据
====================================*/
uchar At24c02Read(uchar ADDR)
{uchar DAT;I2cStart();//I2C起始信号I2cSendByte(At24c02ADDR + I2cWrite);//发送器件地址加读写方向位if(ReadACK())//读从机应答AckFlag = 1; //NOACKelseAckFlag = 0;    //ACKI2cSendByte(ADDR);//I2C发送一个字节ReadACK();//读从机应答I2cStart();//再次产生I2C起始信号I2cSendByte(At24c02ADDR + I2cRead);//发送器件地址加读写方向位 读if(ReadACK())//读从机应答AckFlag = 1;    //NOACKelseAckFlag = 0;    //ACKDAT = I2cReadByte();//读一字节SendACK(1);//主机发送非应答I2cStop(); //I2C停止信号return(DAT);//返回读出数据}void main()//main函数自身会循环
{   uchar i = 0;timer0Init();                      // 定时器0初始化EA = 0;//屏蔽中断for(i=0;i<16;i++){At24c02Write(i, logic_bin[i]);  // 前16个单元写入固件delay(10);                     // 延时等待AT24C02处理}for(;i<255;i++){At24c02Write(i, 0xFF);            // 擦除后面的单元的内容delay(10);                     // 延时等待AT24C02处理}num = At24c02Read(0x0f);          // 读出第3单元内数据送给显示变量if(AckFlag)                           // 当从机非应答P1 = 0;                           // 亮P1所有灯elseP1 = 0XFF;                        // 灭P1所有灯EA = 1;                               // 开中断while(1);
} //定时器0中断函数
void timer0() interrupt 1
{TH0 = 0xED;TL0 = 0xFF;                   //定时5msdisplay(num);                    //数码管显示函数
}

这个程序,亲测有效

关于焊接

有一个逻辑分析仪,我固件也烧录成了,插上电电源指示灯也亮了,电脑也叮咚响了一声,打开软件确实也连接上了。

但是啊,我点个灯测试的时候发现有3个通道是坏的!

我查了那些排阻、二极管、74HC245PW,都没有问题,目测实测都是好的,连接稳定。

后来我觉得可能是QFN的CY7C68013A没焊好,就用风枪吹下来又焊上去,意思一下,完了就多了一个通道。

然后我就开始检查CY7C68013A的焊接情况,简直离谱到家,这也能虚焊:

确实啊,补点焊锡连上了就好了。

焊接这个QFN56的时候中间散热焊盘的锡膏(或者焊锡)千万千万千万别加多了,多了就感觉被垫高了,万一哪个点虚焊了急死人。
还有一件事,热风枪yyds
我之前铁板烧+手焊,一个能焊一天,而且但凡QFN的没焊好就很难受,拆又不好拆,铁板烧又没用了,就只能烙铁硬拆,很难受,真的难受。
但是风枪350℃轻轻松松,而且吹完正面,背面照样可以用热风枪吹,用风枪的话我最多一个小时就能焊好一个。

【已验证成功】【DIY小项目】基于CY7C68013A的逻辑分析仪相关推荐

  1. 树莓派练手小项目---基于树莓派构建天气查询系统,实现内容的网页自动化检索功能

    目录 一.写在前面 二.基于树莓派构建天气查询系统 三.基于树莓派实现网页内容的自动化检索 四.有关于树莓派的其他小提醒,小技巧 Author:qyan.li Date:2022.6.19 Topic ...

  2. [carla入门教程]-6 小项目:基于carla-ros-bridge构建一个小型比赛赛道

    本专栏教程将记录从安装carla到调用carla的pythonAPI进行车辆操控并采集数据的全流程,带领大家从安装carla开始,到最终能够熟练使用carla仿真环境进行传感器数据采集和车辆控制. 第 ...

  3. 小项目---基于局域网的P2P文件共享工具

    项目名称:P2P文件共享神器 项目介绍: 该项目完成了一个基于本地局域网的P2P文件共享小工具.本项目分为客户端与服务端.以下是功能介绍: 能够进行搜索匹配局域网中运行此工具的在线主机:获取到局域网在 ...

  4. Java初学练手小项目---基于awt库,swing库以及MySQL数据库制作简易电影管理系统(一)

    前言 本人是个小小白,初学Java语言,想与一众身为程序猿的各位分享一下自己的知识和想法,达到共同学习的目的,所以想通过写博客的方式分享自己的心得体会,这也是本人第一次写博客,希望能够帮助同样在学习的 ...

  5. Qt网络编程小项目-基于Tcp协议的文件传输项目

    目录 项目描述 Qt下Tcp服务器端和客户端流程: 具体流程: 客户端: 服务器端: 源码: 服务器端: 服务器头文件: 服务器源文件: 服务器端ui 客户端: 客户端头文件: 客户端源文件: 客户端 ...

  6. Java初学小项目--基于awt库,swing库的可视化电影管理系统(三)

    前言 这是电影管理系统项目的第三篇博客,也是该程序最后一篇博客,前面两篇博客已经介绍了管理系统的可视化实现,看了前面博客的朋友对于各个功能可视化的实现应该都可以完成了,最后一步就是将我们要执行的指令传 ...

  7. MTCNN移植java_android小项目----基于mnn的mtcnn人脸检测

    阿里巴巴MNN框架 https://github.com/alibaba/MNN 项目代码 https://github.com/Danicaai/android-mnn 一. 简介 Android ...

  8. 矩阵键盘基于51(UcosII)计算器小项目

    矩阵键盘 最近要给学弟学妹(应该没有)培训矩阵键盘,正好写一写我写矩阵键盘的思路,顺便分享一个之前做的基于ucosii的计算器小项目 原理 原理就不介绍了,CSDN有很多分享的,推荐两篇参考一下: 参 ...

  9. 仿qq左滑删除listview_Java基于Swing和Netty仿QQ界面聊天小项目

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 来源:b ...

最新文章

  1. IDEA IntelliJ 如何给web项目配置tomcat
  2. 用Quartus II Timequest Timing Analyzer进行时序分析 :实例讲解 (一)
  3. java继承关键字super_java学习笔记-继承中super关键字
  4. 使用FIT2CLOUD在青云QingCloud快速部署和管理Kubernetes集群
  5. linux内核镜像sd卡,【原创】Linux QT镜像的制作--制作SD卡启动盘
  6. apache2 wordpress目录权限_小白指南:WordPress中的用户角色和权限
  7. Anaconda如何重新在开始菜单显示
  8. iphone怎么看wifi密码_无线网密码正确但是手机连接不上wifi怎么回事?
  9. HBase基本操作-java api
  10. mysql %3e -u -r_mysql基础
  11. 有弹性的 net/http 服务
  12. hbase集群 数据写入_HBase神器 | BDSHBase集群之间数据迁移同步的利器
  13. linux 格式化 lvm2,fedora 23 lvm2格式 根目录磁盘空间不足 扩容方法
  14. java 四级联动,省市区镇四级联动附代码和数据库
  15. Flink POJO类状态使用注意事项
  16. C rgb565转rgb888
  17. LCN分布式事务(Java)
  18. 从Trie树(字典树)谈到后缀树(10.28修订)
  19. adblock plus去广告插件下载与安装
  20. d435i 深度相机运行踩坑大合集

热门文章

  1. JVM参数类型大揭秘
  2. 985高校的毕业生年薪大概有多少?看完你还会不努力读书吗
  3. 辛与欣(2008.12.31)
  4. “带电栽培”助力中国新农业革命
  5. 有人知道报软件测试培训班需要多少钱吗?
  6. HHUOJ 1400 素数圆环
  7. android-沉浸状态栏以及状态栏背景色如何设置
  8. 隐私合规:移动SDK指纹收集
  9. LOAM学习-LM方法
  10. lvgl 电池电量显示