3367|2

5979

帖子

8

TA的资源

版主

楼主
 

【Altera SoC体验之旅】高速数据采集之数据显示(1) [复制链接]

  本帖最后由 chenzhufly 于 2015-5-5 14:53 编辑

【Altera SoC体验之旅】高速数据采集之数据显示(1)
作者:chenzhufly  QQ:36886052
    隔了好久没有进展了,主要原因是装matlab2005a的时候把win8的系统搞崩溃了,搞了几天无法修复,只好忍痛重新装了新的系统,时间耗费了大把大把的,就是个悲剧啊!

    言归正传,前面已经完成了数据的传输,下面主要谈谈数据的显示,本来打算是用web来显示的,但目前对于我来说还是有不小的难度的,暂且用matlab来辅助显示,并分析一下数据的正确性吧

1、  硬件环境
       硬件平台: Embest SoC --LarkBoard
       软件平台:开发板-linux-3.10.31
                       Quartus 14.0

2、数据获取
      前面已经完成了ADC的驱动了,并且能够正确的获取到数据,这次的任务是把得到数据存入到文件中,便于后期的数据处理和分析,很自然的需要编写一个应用程序,把ADC通道0的数据存入adc0_source,把ADC通道1的数据存入adc1_source,程序如下:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <errno.h>
  4. #include <fcntl.h>
  5. #include <unistd.h>
  6. #include <math.h>

  7. #define  POINT   (1024)

  8. static unsigned int gSource_buff[POINT];

  9. int main(int argc, char* argv[])
  10. {
  11.   int i = 0;
  12.   int val;
  13.   FILE * adc0Fp;
  14.   FILE * adc1Fp;
  15.         unsigned int tmp = 0;
  16.        
  17.         int fd;

  18.         adc0Fp = fopen("/root/adc/adc0_source", "wb");
  19.         if(!adc0Fp){
  20.                 perror("adc0_source open failed\n");
  21.                 return 1;
  22.         }
  23.         adc1Fp = fopen("/root/adc/adc1_source", "wb");
  24.         if(!adc1Fp){
  25.                 perror("adc0_result open failed\n");
  26.                 return 1;
  27.         }        
  28.        
  29.     fd = open("/dev/adc/adc", O_RDONLY);  
  30.     if (fd ==  -1) {  
  31.                 perror("device open error\n");
  32.                 return 1;
  33.     }
  34.        
  35.         read(fd,gSource_buff,POINT*4);
  36.        
  37.         for(i=0;i<10;i++)
  38.                 printf("0x%x ",gSource_buff[i]);
  39.                 printf("\n");
  40.                
  41.         for(i = 0;i < POINT; i++ ){
  42.                 tmp = gSource_buff[i]&0x0000ffff;                        //chanel 0
  43.                 if( (tmp&0x800) != 0){                                                //negative
  44.                         tmp = (tmp | 0xfffff000);
  45.                 }
  46.                 fprintf(adc0Fp,"%d\n",tmp);
  47.                
  48.                 tmp = (gSource_buff[i]&0xffff0000)>>16;                //chanel 1
  49.                 if( (tmp&0x800) != 0){                                                //negative
  50.                         tmp = (tmp | 0xfffff000);
  51.                 }
  52.                 fprintf(adc1Fp,"%d\n",tmp);       
  53.         }
  54.        
  55.         return 0;
  56. }
复制代码

3、编写一个matlab程序,读取文件,并做FFT分析
  1. clear all;
  2. close all;
  3. N=1024;

  4. fid_adc1 = fopen('adc1_source','r');
  5. adc1_data = fscanf(fid_adc1,'%d');
  6. fclose(fid_adc1);

  7. figure;
  8. subplot(2,1,1);
  9. plot(adc1_data);

  10. x = adc1_data';                                                        
  11. y = fft(x,N);
  12. subplot(2,1,2);
  13. plot(2*abs(y(1:N/2+1)));     
复制代码

4、测试结果
1) 正弦信号


2)方波信号

3)三角波信号

5、小结
1) 方波信号感觉怪怪的,畸变的比较严重,看的很明显;三角波信号在下面的时候也有一点畸变,原因不是很明确,我估计是硬件电路设计的问题;
2) 从matlab分析的结果来看,信号获取应该是没什么问题了;
3) 怎么用web显示这些结果呢?对于我来说是个头疼的问题,进一步努力吧



此帖出自Altera SoC论坛

最新回复

本帖最后由 5525 于 2016-5-11 22:31 编辑 代码简洁 明了 “1) 方波信号感觉怪怪的,畸变的比较严重,看的很明显;三角波信号在下面的时候也有一点畸变,原因不是很明确,我估计是硬件电路设计的问题;” 我也赞同是电路的问题。 PG 生产后, 经过了模拟传输,再到ADC,“畸变”会有的。 用 LTspice IV 看一下,能看到变化特性的吧。   详情 回复 发表于 2016-5-11 22:25

赞赏

1

查看全部赞赏

点赞 关注(3)
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 

回复
举报

5

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
感谢分享。多向楼主学习
此帖出自Altera SoC论坛
 
 
 

回复

1950

帖子

4

TA的资源

版主

板凳
 
本帖最后由 5525 于 2016-5-11 22:31 编辑

代码简洁 明了

“1) 方波信号感觉怪怪的,畸变的比较严重,看的很明显;三角波信号在下面的时候也有一点畸变,原因不是很明确,我估计是硬件电路设计的问题;” 我也赞同是电路的问题。
PG 生产后, 经过了模拟传输,再到ADC,“畸变”会有的。
用 LTspice IV 看一下,能看到变化特性的吧。
此帖出自Altera SoC论坛
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表