打印
[测量]

求助ATT7022E中如何读取ADC采集后的波形缓冲区里面的数

[复制链接]
1739|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanyanmolly|  楼主 | 2017-8-24 09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求助ATT7022E中如何读取ADC采集后的波形缓冲区里面的数,数据手册中有写有1024*16bit的缓冲区,我想用同步模式后把数据读取出来进行傅里叶分析,求助怎么读出这个ADC的缓冲区。
我根据理解,用spi发送的7F指令,是不是我开始同步采集采集完后,一直读7F就行,还是需要对7E进行设置,数据手册上写的很模糊,求助高手。

相关帖子

沙发
lanpeng| | 2017-8-24 16:38 | 只看该作者

使用特权

评论回复
板凳
2sxy2| | 2017-8-25 11:18 | 只看该作者
本帖最后由 2sxy2 于 2017-8-25 21:29 编辑
Write_7022E(0xc9,0x005a);         //校表数据写使能
delay();delay();delay();
Write_7022E(0xc5,0x0000);        //停止同步采样,先停止再启动
delay();delay();delay();
Write_7022E(0xc5,0x0002);        //开启同步采样,自动0x0002,手动0x0003
//while(SATflag<1022)               //采样完成标志位存在硬件bug,不使用,直接等待50ms
//      {delay();SATflag = Read_7022E(0x7E);printf("%d ",SATflag);}
delay_ms(50);                           //等待采样完成
Write_7022E(0xC1,0x0000);       //重置数据读取指针,从0开始读取
for(i=0;i<1024;i++)
   {
         r_WaveBuff[i]=Read_7022E(0x7F);                //将本次采样的1024个数据存入缓存空间
   }
      
//进行Uc通道的谐波分析                                       
for(i=0;i<64;i++)                     //分离Uc通道数据,7个数据一组,分别为Ua、Ub、Uc、Ia、Ib、Ic、In
   {
          Wave64[i]=r_WaveBuff[i*7+2];               
         //printf("%+d ",Wave64[i]);
    }


大概步骤就是这样,做太久了没仔细看,有错误请指出。

发送一次 7F 命令,只能读回一个字节的数据,读取地址由7022从初始地址开始自动增加。初始地址由“Write_7022E(0xC1,0x0000);       //重置数据读取指针,从0开始读取”决定。

读回的数据是7个通道混在一起的,即Ua、Ub、Uc、Ia、Ib、Ic、In、Ua、Ub、Uc、Ia、Ib、Ic、In.......所以要自己分离,才能做后面的FFT之类的处理。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
yanyanmolly + 1 很给力!
地板
yanyanmolly|  楼主 | 2017-8-25 14:25 | 只看该作者
2sxy2 发表于 2017-8-25 11:18
大概步骤就是这样,做太久了没仔细看,有错误请指出。

发送一次 7F 命令,只能读回一个字节的数据,读取地 ...

谢谢 我试一下

使用特权

评论回复
5
yanyanmolly|  楼主 | 2017-9-1 10:35 | 只看该作者
2sxy2 发表于 2017-8-25 11:18
大概步骤就是这样,做太久了没仔细看,有错误请指出。

发送一次 7F 命令,只能读回一个字节的数据,读取地 ...

刚开始没解决,后来换了个板子解决了,同样的程序,好像之前我测试的芯片是个旧版本的芯片,怎么都出不来64个点,换了芯片之后就出来了 谢谢了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

12

帖子

1

粉丝