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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
转——高速数据采集之数据显示(1)
隔了好久没有进展了,主要原因是装matlab2005a的时候把win8的系统搞崩溃了,搞了几天无法修复,只好忍痛重新装了新的系统,时间耗费了大把大把的,就是个悲剧啊!

% |+ Y9 M* n( L+ u, D. c
    言归正传,前面已经完成了数据的传输,下面主要谈谈数据的显示,本来打算是用web来显示的,但目前对于我来说还是有不小的难度的,暂且用matlab来辅助显示,并分析一下数据的正确性吧
+ h& x& C& Y9 _* r& Z
1、  硬件环境
       硬件平台: Embest SoC --LarkBoard
       软件平台:开发板-linux-3.10.31
                       Quartus 14.0

" d3 o- P5 `3 }& \  c( K
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;
  • }

  • # R  M9 n6 I: w8 \5 S  L

, z' Z* N* Z; ]4 s

! ?% O+ G- m; P, L) p% X- j$ M; W4 j6 v; d! |5 G; ]8 I
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)));( |8 O" D, g$ T$ Y% `# y9 x

  h( G1 F4 P9 m/ M- A
* H9 |2 H7 Q" h- F# V$ {

9 \4 q3 W( T# j3 I, B* q
4、测试结果
1) 正弦信号
9 ^5 J# M. B/ t' n; j
: J; [: T( p7 x$ i/ ~' h
2)方波信号

4 h5 f) F. x! Z" M  R
3)三角波信号
( L/ x, p+ N' p( |% F$ I
5、小结
1) 方波信号感觉怪怪的,畸变的比较严重,看的很明显;三角波信号在下面的时候也有一点畸变,原因不是很明确,我估计是硬件电路设计的问题;
2) 从matlab分析的结果来看,信号获取应该是没什么问题了;
3) 怎么用web显示这些结果呢?对于我来说是个头疼的问题,进一步努力吧
: N) B; y; Y3 Z/ f
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-30 06:42 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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