搜索
bottom↓
回复: 66

奉献:使用M32的8通道逻辑分析仪

[复制链接]

出0入0汤圆

发表于 2006-12-22 10:47:11 | 显示全部楼层 |阅读模式
还记得“使用1200的8通道逻辑分析仪”吧?由于电路原因,自己用热转印做板或者用万用板搭电路比较麻烦,而M32内部自带2k的RAM,刚好与使用1200的8通道逻辑分析仪相符。

花了几天时间,解读了上位机的通讯协议后,重写了下位机程序,昨晚测试成功。不过,有个缺点,由于原“使用1200的8通道逻辑分析仪”在读入数据时只需提供给CD4040脉冲,而M32需要把数据写入RAM中,所以,在原理上M32处理数据的速度不及1200,正因为这样,在2us分辨率的处理时,目前不支持预触发,以后看有没有办法改进。

测试时我的电路板是用万能板搭的,电路图是今天早上画的,但是因为比较简单,应该没错,程序我测试过是没有问题的。如果大家做起来有什么问题提出一下。源程序暂时不提供,等我测试成熟后会公布。

点击此处下载armok01138645.rar

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2006-12-22 10:54:38 | 显示全部楼层
电路图发现有个错误,晕倒!

单片机正确是M32,电路图是M16。

出0入0汤圆

发表于 2006-12-22 11:17:04 | 显示全部楼层
顶先!

出0入0汤圆

发表于 2006-12-22 12:40:14 | 显示全部楼层
虽然没源代码,但还是支持一下吧.



大家向我的共享精神学习哦,我基本把我的能给大家带来帮助的好东西都共享了的.搜索我发布的帖子就知道了.呵呵.

出0入0汤圆

 楼主| 发表于 2006-12-22 13:22:15 | 显示全部楼层
源码还是会共享的,但是昨晚才调试好的,估计会有些bug,所以迟些再公布

出0入0汤圆

发表于 2006-12-22 13:36:43 | 显示全部楼层
呵呵.好人一个,继续努力吧!

出0入0汤圆

发表于 2006-12-22 13:38:36 | 显示全部楼层
支持你主要是因为原来那个1200做的比较复杂了一些,你的这个实在太简单了。够强。



没钱置办家当,不知道这个逻辑分析仪可否替代示波器?

出0入0汤圆

发表于 2006-12-22 16:05:59 | 显示全部楼层
支持下,可否共享下(上位的下发那些命令),下位机上传数据的格式,谢谢!

出0入0汤圆

发表于 2006-12-23 16:33:52 | 显示全部楼层
支持下

出0入0汤圆

发表于 2006-12-23 16:34:04 | 显示全部楼层
支持下,请谈通讯协议

出0入0汤圆

发表于 2006-12-23 16:34:47 | 显示全部楼层
支持下,请谈通讯协议

出0入0汤圆

发表于 2006-12-23 17:13:00 | 显示全部楼层
顶一顶

出0入0汤圆

 楼主| 发表于 2006-12-24 20:12:46 | 显示全部楼层
PC发送到单片机的命令共7个字节:

第一字节是触发信号,每bit对应一路信号,1为高电平触发,0为低电平触发;

第二字节是触发有效信号,每bit对应一路信号,1为忽略,0为有效;

第三、四字节是采样时间,对应如下:

2us=0x0402,5us=0x0a02,10us=0x1402,10us=0x2802,50us=0x6402,100us=0xc802,200us=0x3203,500us=0x7d03,1ms=0xfa03,2ms=0x7d04,4ms=0xfa04,8ms=0x7d05,16ms=0xfa05;

第五、六字节是一样的,为预触发:8=0%,7=12.5%,6=25%,5=37.5%,4=50%,3=62.5%,2=75%,1=87.5%

第七字节为模式,0=普通模式;1=外部时钟,上升延;2=外部时钟,下降延;3=外部触发,上升延;4=外部触发,下降延;5=静态模式;6没有查到,不知道是什么;7为测试模式的二进制信号;8为测试模式的AA、55;9为测试模式的清零。
头像被屏蔽

出0入0汤圆

发表于 2006-12-24 21:36:34 | 显示全部楼层
先置cool, 期待源码的上传。

出0入0汤圆

发表于 2006-12-25 11:19:22 | 显示全部楼层
有通信协议最好了,不知道这个东东的速度还能不能进一步提高呢(上位机)。



发现图纸上单片机复位脚没加上拉电阻。

出0入0汤圆

 楼主| 发表于 2006-12-25 18:51:14 | 显示全部楼层
源码还是上传吧,大家发现有什么问题就上来通知一声。

编译环境为WinAVR-20060421,AVRStudio412SP4。

点击此处下载使用M32的8通道逻辑分析仪源代码.rar

出0入0汤圆

发表于 2006-12-25 23:26:37 | 显示全部楼层
终于等到了,顶!!!

出0入0汤圆

发表于 2006-12-29 20:56:10 | 显示全部楼层
谢谢。图上是M16呀,用M16可以吗?

出0入0汤圆

发表于 2006-12-29 23:01:06 | 显示全部楼层
顶!!!

出0入0汤圆

 楼主| 发表于 2006-12-30 08:52:07 | 显示全部楼层
图纸错了,是M32的,M16的RAM不够,不能用

出0入0汤圆

发表于 2006-12-30 16:08:04 | 显示全部楼层
谢谢!

出0入0汤圆

发表于 2006-12-30 16:12:36 | 显示全部楼层
先支持一下

出0入0汤圆

发表于 2006-12-30 17:42:29 | 显示全部楼层
支持,

谢谢

出0入0汤圆

发表于 2007-1-4 17:24:07 | 显示全部楼层
索性也讲讲通讯协议中"单片机向PC返回的数据格式"



支持脉冲发生器功能吗?

出0入0汤圆

 楼主| 发表于 2007-1-5 08:33:58 | 显示全部楼层
单片机向PC返回的数据就是逻辑数据啊,当接收到正确的命令后,单片机先返回0X0D,然后就是逻辑数据,每bit对应一个通道。

脉冲发生器还没有加上,近来忙,还没时间改善。

出0入0汤圆

发表于 2007-1-5 12:03:06 | 显示全部楼层
明白了,谢谢

出0入0汤圆

发表于 2007-1-30 11:14:46 | 显示全部楼层
前些日子在调AD7712 24BIT模数转换器的串行接口,一直有问题,心想要是有个逻辑分析仪就好了,终于找到这个够简单,正好手头上芯片都有,这两天就下手做一个试试,感谢楼主分享^_^

出0入0汤圆

发表于 2007-5-25 18:44:02 | 显示全部楼层
"

预触发值只有在触发发生前已有足够的数据被采

样到时才有效, 因此,如果在启动后触发马上发生

的话就只有触发以后的数据被记录, 屏幕上触发标

记左边为"空"(数据为00)。

"



上位机软件是如何知道 是否"触发发生前已有足够的数据被采样到"的?

这个我从下位机的程序中没看出来.



哪位兄弟给解释下?
-----此内容被everglen于2007-05-25,18:44:31编辑过

出0入0汤圆

 楼主| 发表于 2007-5-25 20:10:15 | 显示全部楼层
下位机处理的,例如预触发深度为256,才采集到40字节就遇到了触发条件,就会产生触发动作,于是,触发前的40字节是有效的,而40字节之前的数据就为0x00。

出0入0汤圆

发表于 2007-5-25 21:21:00 | 显示全部楼层
有时间我来做个用用!想问一下,手上没有ATMEGA32,只有ATMEGA8515、ATMEGA162来代替,行不?

出0入0汤圆

发表于 2007-5-26 01:51:19 | 显示全部楼层
To roasn 冰封的心:



1. 关于数据采样速率的控制的请教

const prog_uchar delay_lo[] = {0,  3,  8,  28,  88,  188,  132,  220, 6,148,52, 116,244};

//                                                           2us,5us,10us,20us,50us,100us,200us,500us,1ms,2ms,4ms,8ms,16ms

const prog_uchar delay_hi[] = {0,  1,  1,   1,   1,   1,    2,    4,    8,  16, 32, 63, 125}

中的数值是怎么确定的?



还有程序中的nop主要是用来延时的吧,是如何得到nop指令数目的,难道还要根据时钟+指令周期推算?

2. 外部触发下降延的疑问?

"

case 4:                               

        trig = 0xfe;

        trig_disable = 0xfe;

        pre_trig = 8;

        goto start;

        break

"

程序中 "if(trig == (temp | trig_disable))"用来判断是否满足触发条件.

按此来说,只要temp的最低位(ch0通道) 是0就满足触发了,即外部触发低点平触发.

我哪分析错了???

出0入0汤圆

 楼主| 发表于 2007-5-26 10:12:23 | 显示全部楼层
to 【30楼】 sonic:

用m32是因为它内部有2k的RAM,少于2kRAM的不行。

to 【31楼】 everglen:

1、延时时间都是通过软件仿真一点点调试出来的,因为采用的是C语言,不如汇编能控制执行时间,只能通过尝试。delay_hi和delay_lo,以及nop的指令数目都是通过仿真确定的。

2、你没有分析错,你没有看注释?注释很清楚了啊。case4的程序为外部下降沿触发,就是说,ch0通道下降沿时就满足触发。同理,case3的程序相反,外部上升沿触发。

出0入0汤圆

发表于 2007-5-26 15:02:32 | 显示全部楼层
case 4 情况下,

"外部触发低电平触发"  vs  "通道下降沿时就满足触发"



我认为是ch0通道低电平出发,not 下降沿。

从程序中,我没发现有检测这个下降沿的语句。



if(trig == (temp | trig_disable))  //只能用来判定ch0是不是低电平。

出0入0汤圆

发表于 2007-5-26 15:13:58 | 显示全部楼层
这几天用了一下周立功的LA5034高速逻辑分析仪,感觉不爽,主要是深度太低。以下是其拆机照片。准备自己动手做逻辑分析仪:10M速度,32通道,4M/通道深度。主芯片采用Altera的EP2C5Q208 FPGA。





出0入0汤圆

发表于 2007-5-26 15:16:00 | 显示全部楼层
周立功的LA5034是采用的FPGA,内部RAM,这么简单一个东西,居然要卖2900元。晕喔。

出0入0汤圆

发表于 2007-5-28 21:38:13 | 显示全部楼层
图片太大,缩一下就好了

出0入0汤圆

发表于 2009-2-27 16:49:28 | 显示全部楼层
现在才看这么好的东西!就是是9钍串口的,要是能做成USB口的就更好了。使用PL2303等串口转USB芯片或用M32模拟USB。

出0入0汤圆

发表于 2009-4-14 00:38:41 | 显示全部楼层
谁能帮我把那程序编译成HEX 文件啊 万分感激 我编译了很多次都出错 估计我是新手不知道哪里搞错 了

出0入0汤圆

发表于 2009-4-14 01:49:14 | 显示全部楼层
下载下来学习,谢谢分享

出0入0汤圆

发表于 2009-4-14 08:18:39 | 显示全部楼层
牛!

出0入0汤圆

发表于 2009-4-14 09:49:51 | 显示全部楼层
各位 会的帮帮我 帮我生成HEX文件

出0入0汤圆

发表于 2009-4-14 10:50:12 | 显示全部楼层
这个熔丝位怎么配置 麻烦知道的告诉我一下

出0入0汤圆

发表于 2009-4-14 10:52:00 | 显示全部楼层
俺是个菜鸟 搞这个设置错误两块了

出0入0汤圆

发表于 2009-4-14 13:38:20 | 显示全部楼层
谁制作成功的分享点经验啊

出0入0汤圆

发表于 2009-4-24 19:30:21 | 显示全部楼层
哈哈,我焊了个万有板做的,还没有试,请问上位机程序是哪个呢?

出0入0汤圆

发表于 2009-4-27 16:51:55 | 显示全部楼层
cd4040支持不了那么高的频率。我做了一个放到那里歇了。我用pld写了一片cd4040就好用。

出0入0汤圆

发表于 2009-7-3 16:18:32 | 显示全部楼层
留名

出0入0汤圆

发表于 2009-8-2 22:00:46 | 显示全部楼层
实验结果是不行,根本就通信不上,不知道怎么回事,我一个一个字节发送的话是没有问题的,但是一串数据发送的时候,仿真发现出现帧错误。
而且源程序里面有几个错误,
#define addr                    (*(volatile unsigned char *)(10))      //RAM地址------本人认为这里的char应该改为int
#define addr_lo                    (*(volatile unsigned char *)(10))      //RAM地址低位
#define addr_hi                    (*(volatile unsigned char *)(11))      //RAM地址高位
#define addr_trig                     (*(volatile unsigned char *)(14))      //预触发地址------本人认为这里的char应该改为int
#define addr_trig_lo            (*(volatile unsigned char *)(14))      //触发地址低位
#define addr_trig_hi            (*(volatile unsigned char *)(15))      //触发地址高位

出0入0汤圆

 楼主| 发表于 2009-8-2 22:06:54 | 显示全部楼层
【48楼】 yanrz 严荣智
我用很久了,没有发现通讯不了的问题啊

出0入0汤圆

发表于 2009-8-4 16:25:02 | 显示全部楼层
那就奇怪了,走这边确实是不行,程序就是运行不过去。因为我是用8MHz晶振,所以程序更改了那个地方,然后再将波特率改为38400,就出现问题了。

出0入0汤圆

 楼主| 发表于 2009-8-4 18:51:28 | 显示全部楼层
【50楼】 yanrz yanrz
那就不奇怪了,晶振改动后几乎整个程序都要改。
君不见,源代码用了很多汇编、C延时来做延时?
如果改了晶振,那些延时都会跟着变化。
另外,用不同版本的GCC编译都会有不同的延时结果。

出0入0汤圆

发表于 2009-8-7 18:55:44 | 显示全部楼层
我用的是ICC,GCC我没装,一直都会出错。不知道是怎么回事,程序我没仔细看。

出0入0汤圆

 楼主| 发表于 2009-8-7 22:33:27 | 显示全部楼层
【52楼】 yanrz yanrz
编译器都不一样,你就别怪它工作不正常了

出0入0汤圆

发表于 2009-8-7 22:58:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-8 00:49:06 | 显示全部楼层
这次终于做好了.上次由于太晚下了资料没看留言,这次换上m32就成了!非常好用!感谢lz

出0入0汤圆

发表于 2009-8-8 09:41:17 | 显示全部楼层
楼上的已经做出来了?我今天也去买几个片子,自己动手打造一个。遇到问题的话,希望LS和LZ多多指点。

出0入0汤圆

发表于 2009-8-8 10:53:49 | 显示全部楼层
我已经买了一个周立功的LA1232,不再做了,呵呵,不过喜欢楼主的那个100M16通道的,有时间的话想好好研究下!!!
非常感谢楼主的回答和帮助,谢谢!

出0入0汤圆

发表于 2009-8-8 23:32:19 | 显示全部楼层
今天自己动手用万用板焊了一个。现在通讯都正常,但显示的波形不对。我只在CH1加了周期性脉冲信号,此时显示有脉冲,但是高电平期间显示的却是频率更高的脉冲,而且别的通道没有输入却有脉冲信号。麻烦各位帮我看看是什么问题? 多谢。
触发方式试了没问题,每个通道都测试过,都能正常识别信号的有无。
另外还有一个问题就是,大家用的时候都使用什么模式?是不是只能用模式1:内部触发,内部时钟?别的方式基本没用!现在这个软件还不太会用,各种模式的区别分不清。希望版主能帮忙解答一下,谢谢

采集到的波形 (原文件名:shishi1.jpg)

出0入0汤圆

 楼主| 发表于 2009-8-9 08:52:15 | 显示全部楼层
【58楼】 jxc827
你这种情况我没有碰到过,实在抱歉,建议检查一下输入的接口芯片。
至于模式的问题,帮助里面有比较详细的说明

出0入0汤圆

发表于 2009-8-9 09:31:46 | 显示全部楼层
谢谢楼主的回复。仔细分析发现三个问题:1. 楼主的原理图中没有输入下拉电阻; 2.没有信号输入通道采集到得脉冲波形频率为50Hz; 3.我电脑串口使用的USB转串口,信号源也是通过电脑USB口供电。
总结以上三点,得出初步结论:由于HC573的输入端悬空,未接下拉电阻,导致状态不确定,同时由于电脑-信号源-LA三者电源存在耦合,从而将50hz的工频干扰引入输入管脚,被LA采集上来。
初步尝试解决方案:在电源输入端加上大电容将低频滤掉,同时573输入端接上下拉电阻,不过手头没有大阻值电阻。
测试结果回头发上来,希望楼主也帮忙分析一下。谢谢

出0入0汤圆

发表于 2009-8-9 12:20:43 | 显示全部楼层
昨天弄了个16MHz的晶振,焊上后可以了。楼上说的我也看到了,输入的东西确实是不好,因为我只输入一个5V电压,但是测试出来的却是首先一段低电平,然后才是高电平,其余悬空状态的是方波,具体频率没有研究。

出0入0汤圆

发表于 2009-8-9 12:21:34 | 显示全部楼层
其实我感觉程序里面应该启用上拉电阻,那样可能就把这些东西去掉了

出0入0汤圆

发表于 2009-8-9 12:37:20 | 显示全部楼层
楼上的悬空输入通道也是显示方波?你试过输入脉冲信号吗?是不是跟我发的波形一样?
输入端需要的是下拉电阻,而且必须是大阻值电阻(一般至少100K吧)。内部的电阻为上拉电阻,并且作为输出管脚时是无法使能的。

出0入0汤圆

发表于 2009-8-9 14:39:03 | 显示全部楼层
终于成功了。针对上面帖子中提到的解决办法,其中电源加滤波电容作用不大,看来50HZ工频信号是感应进来的。在573的输入端加100K下拉电阻,同时将电源独立,此时功能一切正常。很高兴,谢谢楼主的好东西。这个东西的制作告一段落,后面再分析一下软件代码,有什么问题我再找楼主帮忙。呵呵

出0入0汤圆

发表于 2011-9-6 11:28:36 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-9-6 13:39:38 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-16 04:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表