[测量]

ATT7022E的谐波数据怎么读取

[复制链接]
8441|30
手机看帖
扫描二维码
随时随地手机跟帖
jaywhitejay|  楼主 | 2014-6-30 15:13 | 显示全部楼层 |阅读模式
      使用ATT7022E制作一款多功能表,带谐波分析功能。
      目前阶段是写谐波分析这块的程序。
      首先我想读取谐波数据。在同步采样数据缓冲功能下,读取缓冲区的数据。缓冲区是一连串的数据。可是SPI通讯是采用固定长度(4个字节)的数据长度。我应该怎么读取?是4个字节这样读取,还是一下子就把一串数据读完?

相关帖子

yaojinghui| | 2014-6-30 15:38 | 显示全部楼层
ATT7022E只是具有波形缓冲的功能,你读取的只是波形数据,还需要利用FFT或者DFT对数据进行计算才能得到谐波含量数据。

使用特权

评论回复
mmuuss586| | 2014-6-30 22:39 | 显示全部楼层
芯片资料有介绍吧

使用特权

评论回复
jaywhitejay|  楼主 | 2014-7-1 08:05 | 显示全部楼层
yaojinghui 发表于 2014-6-30 15:38
ATT7022E只是具有波形缓冲的功能,你读取的只是波形数据,还需要利用FFT或者DFT对数据进行计算才能得到谐波 ...

是的,我是读取波形缓冲数据。资料上《通信接口》这一节里写这里的SPI采用长度固定的数据传输(一共4个字节);但是相应的寄存器的性质是:缓冲数据寄存器,内部自增益,重复读取直至读完缓冲数据长度。
我写的驱动应该是一次性读完的,还是4个字节一读的?

使用特权

评论回复
yaojinghui| | 2014-7-1 10:44 | 显示全部楼层
一次性读4个字节,只有后三个字节是一个点的有效值。用这样的策略读取整个缓冲区,然后送入FFT计算

使用特权

评论回复
jaywhitejay|  楼主 | 2014-7-2 08:09 | 显示全部楼层
yaojinghui 发表于 2014-7-1 10:44
一次性读4个字节,只有后三个字节是一个点的有效值。用这样的策略读取整个缓冲区,然后送入FFT计算 ...

谢谢。好像有点懂了,我赶紧去试试

使用特权

评论回复
jaywhitejay|  楼主 | 2014-7-3 08:53 | 显示全部楼层
yaojinghui 发表于 2014-7-1 10:44
一次性读4个字节,只有后三个字节是一个点的有效值。用这样的策略读取整个缓冲区,然后送入FFT计算 ...

你好,我想再问下,这个采样数据资料上是这么写的:是16bit的ADC数据(补码形式)。
这里提到的补码形式,没有提到标志位。那他的原码到底是正数还是负数呢?怎么区别?7022的电平没有被抬高,ADC数据应该是有正负的吧?

使用特权

评论回复
yaojinghui| | 2014-7-4 08:06 | 显示全部楼层
jaywhitejay 发表于 2014-7-3 08:53
你好,我想再问下,这个采样数据资料上是这么写的:是16bit的ADC数据(补码形式)。
这里提到的补码形式 ...

是的,本来正弦波就有正有负,所以采集出来的数据就有正有负。

使用特权

评论回复
myeo2006| | 2014-7-11 11:49 | 显示全部楼层
使用RN8302B可以完全替代,价格和性能非常有优势

使用特权

评论回复
Zacking| | 2014-11-20 18:02 | 显示全部楼层
樓主您好,請問用ATT7022E做這個有哪些具體的問題和難點嗎?可以指導一下嗎,謝謝!

使用特权

评论回复
Zacking| | 2014-11-24 13:59 | 显示全部楼层
yaojinghui 发表于 2014-7-4 08:06
是的,本来正弦波就有正有负,所以采集出来的数据就有正有负。

你好,我想請問一下下面這個程序是不是根據补码判斷原碼為正負的?
if(ADataTypeDef.P>0x800000){
ADataTypeDef.Rp=0x1000000-ADataTypeDef.P;
ADataTypeDef.Rp=-(ADataTypeDef.Rp/256.0);    //   2^15/2^23
}
else
ADataTypeDef.Rp=ADataTypeDef.P/256.0;
其中ADataTypeDef.P为补码,上面的减法是什么意思呢?可以讲解一下吗,谢谢!

使用特权

评论回复
yaojinghui| | 2014-11-24 21:18 | 显示全部楼层
Zacking 发表于 2014-11-24 13:59
你好,我想請問一下下面這個程序是不是根據补码判斷原碼為正負的?
if(ADataTypeDef.P>0x800000){
ADat ...

转为原码

使用特权

评论回复
Zacking| | 2014-11-24 21:36 | 显示全部楼层
yaojinghui 发表于 2014-11-24 21:18
转为原码

哦,一般都这样算的吗?后面除以256不是转为原码的算法吧

使用特权

评论回复
yaojinghui| | 2014-11-25 09:19 | 显示全部楼层
Zacking 发表于 2014-11-24 21:36
哦,一般都这样算的吗?后面除以256不是转为原码的算法吧

不是这样吧,你仔细看看补码转原码的过程

使用特权

评论回复
Zacking| | 2014-11-25 09:50 | 显示全部楼层
yaojinghui 发表于 2014-11-25 09:19
不是这样吧,你仔细看看补码转原码的过程

补码转原码的过程应该跟原码转补码过程一样吧,先取反再加1

使用特权

评论回复
yaojinghui| | 2014-11-26 13:34 | 显示全部楼层
Zacking 发表于 2014-11-25 09:50
补码转原码的过程应该跟原码转补码过程一样吧,先取反再加1

补码转原码是原码转补码的反向过程。减一再取反。

使用特权

评论回复
Zacking| | 2014-11-26 16:29 | 显示全部楼层
yaojinghui 发表于 2014-11-26 13:34
补码转原码是原码转补码的反向过程。减一再取反。

好,谢谢,不过上面那种算法好像是用什么模减去补码得到原码的绝对值。
另外,我想问一下FFT变换是不是对单个变量的运算啊,比如手册里说的同步缓存读到的数据每隔7一组:Ua、Ub、Uc、Ia、Ib、Ic、In,那他是单个Ua、Ub、Uc、Ia这样算还是7个数据一起算的啊?

使用特权

评论回复
yaojinghui| | 2014-11-26 22:17 | 显示全部楼层
Zacking 发表于 2014-11-26 16:29
好,谢谢,不过上面那种算法好像是用什么模减去补码得到原码的绝对值。
另外,我想问一下FFT变换是不是对 ...

每个通道的数据单独计算,比如说A相,把缓冲区中关于A相的缓冲数据全拿出来进行FFT,然后就可以分析谐波数据了。

使用特权

评论回复
Zacking| | 2014-11-27 13:38 | 显示全部楼层
本帖最后由 Zacking 于 2014-12-5 17:40 编辑
yaojinghui 发表于 2014-11-26 22:17
每个通道的数据单独计算,比如说A相,把缓冲区中关于A相的缓冲数据全拿出来进行FFT,然后就可以分析谐波 ...

谢谢。我还要测安时、瓦时这些测量值,我在另外一个手册上看到的定义:
2.PNG 1.PNG
请问这里的电压和电流指的是什么,是寄存器读取的有效值还是adc读取的值? 是如何读取的,自己利用定时器中断去读取吗?

使用特权

评论回复
yaojinghui| | 2014-11-28 08:24 | 显示全部楼层
Zacking 发表于 2014-11-27 13:38
谢谢。我还要测安时、瓦时这些测量值,我在另外一个手册上看到的定义:

请问这里的电压和电流指的是什么 ...

QQ上说

使用特权

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

本版积分规则

8

主题

23

帖子

0

粉丝