谁做过att7053计量芯片,stm32模拟spi控制

[复制链接]
6784|30
 楼主| mgfzhh 发表于 2014-12-22 17:53 | 显示全部楼层 |阅读模式
我做的 读写寄存器值没反应?
谁做过,参考下
不羁的峰 发表于 2014-12-23 16:47 | 显示全部楼层
QQ153690322 说
mmuuss586 发表于 2014-12-23 18:58 | 显示全部楼层

也许你读写寄存器的值不对吧,用示波器看看发的数据是否正确;
 楼主| mgfzhh 发表于 2014-12-24 16:22 | 显示全部楼层
mmuuss586 发表于 2014-12-23 18:58
也许你读写寄存器的值不对吧,用示波器看看发的数据是否正确;

stm  发出来的数据没问题,时序移植修改的,可以读出来度寄存器的复位值,但是 写个数据却读不出来
 楼主| mgfzhh 发表于 2014-12-24 16:25 | 显示全部楼层
本帖最后由 mgfzhh 于 2015-8-10 16:11 编辑
不羁的峰 发表于 2014-12-23 16:47
QQ153690322 说


mmuuss586 发表于 2014-12-24 18:15 | 显示全部楼层
mgfzhh 发表于 2014-12-24 16:22
stm  发出来的数据没问题,时序移植修改的,可以读出来度寄存器的复位值,但是 写个数据却读不出来 ...

那就是计量芯片问题了;
伏尔加的鱼 发表于 2014-12-25 18:01 来自手机 | 显示全部楼层
我用的51
 楼主| mgfzhh 发表于 2014-12-26 09:17 | 显示全部楼层
本帖最后由 mgfzhh 于 2015-8-10 16:11 编辑
伏尔加的鱼 发表于 2014-12-25 18:01
我用的51

问下,校表怎么做的,有效值和功率 校表没有寄存器,只能用户计算么?频率根据寄存器算出来只有48hz左右。。。femu选择900Khz的。。。。。

 楼主| mgfzhh 发表于 2014-12-26 09:20 | 显示全部楼层
mmuuss586 发表于 2014-12-24 18:15
那就是计量芯片问题了;

,额 这个问题解决了,初始化复位,写保护,写电流增益的延时不够。。。有效值和功率 校表没有寄存器,只能用户计算么? 那么功率校正寄存器,电压,电流通道偏置校正寄存器是干吗用的
Zacking 发表于 2014-12-26 09:47 | 显示全部楼层
楼主你好,我也是做这个项目,不过我是用att7022e+stm32,请问那个spi操作,stm32的spi需要做像下面这样的模式配置(主从)、帧格式这些配置吗?
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //设置 SPI 全双工   
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;          //设置 SPI 工作模式:设置为主 SPI   
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;         // 8 位帧结构   
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;            //选择了串行时钟的稳态:时钟悬空低   
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;            //数据捕获于第二个时钟沿   
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                //NSS 信号由软件管理   
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; //预分频 256   
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;         //数据传输从 MSB 位开始   
SPI_InitStructure.SPI_CRCPolynomial = 7;                   //CRC 值计算的多项式   
SPI_Init(SPI2, &SPI_InitStructure); //            根据指定的参数初始化外设 SPIx 寄存器   
为什么我看到下面连接的帖子spi只有io口配置而已,这样能通信吗?
https://bbs.21ic.com/forum.php?mo ... D195%26typeid%3D195
请多多指教,谢谢!!
 楼主| mgfzhh 发表于 2014-12-26 10:19 | 显示全部楼层
Zacking 发表于 2014-12-26 09:47
楼主你好,我也是做这个项目,不过我是用att7022e+stm32,请问那个spi操作,stm32的spi需要做像下面这样的 ...

我们是用io 模拟spi时序的,那个连接的帖子也是io模式spi时序的。。。你这个是用单片机的硬件spi,需要初始化结构体。你需要调用库函数进行spi 读写操作
u8 SPI2_ReadWriteByte(u8 TxData)
{
u8 retry=0;           
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET) //等待发送区空
{
retry++;
if(retry>200)return 0;
}     
SPI_I2S_SendData(SPI2, TxData);            //通过外设 SPIx 发送一个数据
retry=0;
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET) //等待接收
//完一个 byte
{  retry++;
if(retry>200)return 0;
}
return SPI_I2S_ReceiveData(SPI2);    //返回通过 SPIx 最近接收的数据
}

仅供参考。。。我从来不用硬件的spi  iic  之类的 ,都是用io口模拟时序的
Zacking 发表于 2014-12-26 10:29 | 显示全部楼层
mgfzhh 发表于 2014-12-26 10:19
我们是用io 模拟spi时序的,那个连接的帖子也是io模式spi时序的。。。你这个是用单片机的硬件spi,需要初 ...

你这个是原子的例程吗?我也是看他的,我还以为他的例程是用io模拟的,这么说我发的哪个连接里面的配置和读写都是完整和对的?不用像上面那样配置stm32的模式帧格式之类的吗?
 楼主| mgfzhh 发表于 2014-12-26 10:53 | 显示全部楼层
Zacking 发表于 2014-12-26 10:29
你这个是原子的例程吗?我也是看他的,我还以为他的例程是用io模拟的,这么说我发的哪个连接里面的配置和 ...

对与不对 需要仿真验证,你好好看看资料 分清硬件spi   和io模拟spi的区别吧
Zacking 发表于 2014-12-26 15:52 | 显示全部楼层
mgfzhh 发表于 2014-12-26 10:53
对与不对 需要仿真验证,你好好看看资料 分清硬件spi   和io模拟spi的区别吧 ...

好吧,现在也没硬件可以验证,我先了解好spi,后续再跟你交流讨论
Zacking 发表于 2014-12-31 13:46 | 显示全部楼层
请问那个校表的到底是怎么做的呀,不太明白需要哪些步骤。
cnb12345 发表于 2015-1-2 22:12 | 显示全部楼层
仔细看看Datasheet 吧
Zacking 发表于 2015-1-8 15:54 | 显示全部楼层
cnb12345 发表于 2015-1-2 22:12
仔细看看Datasheet 吧

看了Datasheet,应该是把计算出的校准值写入校表寄存器;上次跟一个网友交流说写入校表寄存器就行了,说之后校表寄存器会自动校准的,这样还有必要用eeprom存放校表值吗?
myeo2006 发表于 2015-1-16 01:48 | 显示全部楼层
选择RN8209C吧,价格和性能都很好,加我QQ604170839
jjjkkk00 发表于 2015-1-24 14:30 | 显示全部楼层
直接读取固定寄存器,7053B0。
以此检验时序是否OK
 楼主| mgfzhh 发表于 2015-3-20 14:41 | 显示全部楼层
Zacking 发表于 2015-1-8 15:54
看了Datasheet,应该是把计算出的校准值写入校表寄存器;上次跟一个网友交流说写入校表寄存器就行了,说 ...

校表寄存器是不会存储  数据的,需要每次上电初始化时候,读取iic存储的数据,写到计量芯片相应的寄存器中,主要是 HFconst,Gphs1,GP,P1_offset,I1_rmsoffset,当然还有一些不需要写入芯片校正值,例如电压系数,电流系数,功率系数等
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

166

帖子

5

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