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

[复制链接]
1950|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 编辑
  1. Write_7022E(0xc9,0x005a);         //校表数据写使能
  2. delay();delay();delay();
  3. Write_7022E(0xc5,0x0000);        //停止同步采样,先停止再启动
  4. delay();delay();delay();
  5. Write_7022E(0xc5,0x0002);        //开启同步采样,自动0x0002,手动0x0003
  6. //while(SATflag<1022)               //采样完成标志位存在硬件bug,不使用,直接等待50ms
  7. //      {delay();SATflag = Read_7022E(0x7E);printf("%d ",SATflag);}
  8. delay_ms(50);                           //等待采样完成
  9. Write_7022E(0xC1,0x0000);       //重置数据读取指针,从0开始读取
  10. for(i=0;i<1024;i++)
  11.    {
  12.          r_WaveBuff[i]=Read_7022E(0x7F);                //将本次采样的1024个数据存入缓存空间
  13.    }
  14.       
  15. //进行Uc通道的谐波分析                                       
  16. for(i=0;i<64;i++)                     //分离Uc通道数据,7个数据一组,分别为Ua、Ub、Uc、Ia、Ib、Ic、In
  17.    {
  18.           Wave64[i]=r_WaveBuff[i*7+2];               
  19.          //printf("%+d ",Wave64[i]);
  20.     }


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

发送一次 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 命令,只能读回一个字节的数据,读取地 ...

谢谢 我试一下
 楼主| yanyanmolly 发表于 2017-9-1 10:35 | 显示全部楼层
2sxy2 发表于 2017-8-25 11:18
大概步骤就是这样,做太久了没仔细看,有错误请指出。

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

刚开始没解决,后来换了个板子解决了,同样的程序,好像之前我测试的芯片是个旧版本的芯片,怎么都出不来64个点,换了芯片之后就出来了 谢谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

12

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部