找回密码
 注册
关于网站域名变更的通知
查看: 244|回复: 1
打印 上一主题 下一主题

转——高速数据采集之数据显示(1)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-15 10:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
转——高速数据采集之数据显示(1)
隔了好久没有进展了,主要原因是装matlab2005a的时候把win8的系统搞崩溃了,搞了几天无法修复,只好忍痛重新装了新的系统,时间耗费了大把大把的,就是个悲剧啊!
) F, ^7 z; u6 p* d0 Q
    言归正传,前面已经完成了数据的传输,下面主要谈谈数据的显示,本来打算是用web来显示的,但目前对于我来说还是有不小的难度的,暂且用matlab来辅助显示,并分析一下数据的正确性吧

5 Z# [6 d9 a8 x1 p
1、  硬件环境
       硬件平台: Embest SoC --LarkBoard
       软件平台:开发板-linux-3.10.31
                       Quartus 14.0
* v  _; G. Y9 \$ n
2、数据获取
      前面已经完成了ADC的驱动了,并且能够正确的获取到数据,这次的任务是把得到数据存入到文件中,便于后期的数据处理和分析,很自然的需要编写一个应用程序,把ADC通道0的数据存入adc0_source,把ADC通道1的数据存入adc1_source,程序如下:
  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <errno.h>
  • #include <fcntl.h>
  • #include <unistd.h>
  • #include <math.h>
  • #define  POINT   (1024)
  • static unsigned int gSource_buff[POINT];
  • int main(int argc, char* argv[])
  • {
  •   int i = 0;
  •   int val;
  •   FILE * adc0Fp;
  •   FILE * adc1Fp;
  •         unsigned int tmp = 0;
  •         int fd;
  •         adc0Fp = fopen("/root/adc/adc0_source", "wb");
  •         if(!adc0Fp){
  •                 perror("adc0_source open failed\n");
  •                 return 1;
  •         }
  •         adc1Fp = fopen("/root/adc/adc1_source", "wb");
  •         if(!adc1Fp){
  •                 perror("adc0_result open failed\n");
  •                 return 1;
  •         }
  •     fd = open("/dev/adc/adc", O_RDONLY);
  •     if (fd ==  -1) {
  •                 perror("device open error\n");
  •                 return 1;
  •     }
  •         read(fd,gSource_buff,POINT*4);
  •         for(i=0;i<10;i++)
  •                 printf("0x%x ",gSource_buff);
  •                 printf("\n");
  •         for(i = 0;i < POINT; i++ ){
  •                 tmp = gSource_buff&0x0000ffff;                        //chanel 0
  •                 if( (tmp&0x800) != 0){                                                //negative
  •                         tmp = (tmp | 0xfffff000);
  •                 }
  •                 fprintf(adc0Fp,"%d\n",tmp);
  •                 tmp = (gSource_buff&0xffff0000)>>16;                //chanel 1
  •                 if( (tmp&0x800) != 0){                                                //negative
  •                         tmp = (tmp | 0xfffff000);
  •                 }
  •                 fprintf(adc1Fp,"%d\n",tmp);
  •         }
  •         return 0;
  • }
  • 5 y3 i) Q: J; V) \
# o7 X( ^6 M+ U3 Z  G# e6 k  P% ^

+ U. ~$ X' ~& r" V% C4 c4 H/ A+ t% Q- r2 T' y- p
3、编写一个matlab程序,读取文件,并做FFT分析
  • clear all;
  • close all;
  • N=1024;
  • fid_adc1 = fopen('adc1_source','r');
  • adc1_data = fscanf(fid_adc1,'%d');
  • fclose(fid_adc1);
  • figure;
  • subplot(2,1,1);
  • plot(adc1_data);
  • x = adc1_data';
  • y = fft(x,N);
  • subplot(2,1,2);
  • plot(2*abs(y(1:N/2+1)));0 i# s6 T  I: S4 z0 n: V
) D) w" R: V" r6 a' [, [- r$ ]
- r: l$ G) s! B7 ]; V* K
! e0 C, b1 q/ z* Q# |
4、测试结果
1) 正弦信号

% O, q$ l$ J7 r  X4 `: @; T& j$ U3 o4 K+ P0 l
2)方波信号
- d$ ~4 Y7 j( c+ J( @% L
3)三角波信号
. F; ^5 s5 F* `- I/ k- @  d
5、小结
1) 方波信号感觉怪怪的,畸变的比较严重,看的很明显;三角波信号在下面的时候也有一点畸变,原因不是很明确,我估计是硬件电路设计的问题;
2) 从matlab分析的结果来看,信号获取应该是没什么问题了;
3) 怎么用web显示这些结果呢?对于我来说是个头疼的问题,进一步努力吧

& }: e2 c* `1 N2 G0 f, w
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 23:02 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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