OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2255|回复: 6

求助大神

[复制链接]

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2017-9-11
在线时间
31 小时
发表于 2017-9-26 12:00:35 | 显示全部楼层 |阅读模式
6金钱
写的ATT7022EU芯片驱动程序,可以读取校表寄存器内的值,但是加上电,读取不到电压、电流等(全是0),检查2天了,也没查出什么毛病。

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2017-9-11
在线时间
31 小时
 楼主| 发表于 2017-9-26 12:00:36 | 显示全部楼层
回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2017-9-11
在线时间
31 小时
 楼主| 发表于 2017-9-26 15:39:43 | 显示全部楼层
只能读取电流的值,其他的如温度、电压等读取不了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-9-26 20:40:53 | 显示全部楼层
帮顶
回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2017-9-11
在线时间
31 小时
 楼主| 发表于 2017-9-28 09:55:54 | 显示全部楼层

原子哥,我这边续写程序都没有问题,只能读取电流,其他读不了。感觉问题就在校表程序里,查不出原因所在,你给看一下,下面是校表程序
void EMU_init(void)
{

                REST_0;
                delay(30);
                REST_1;
                delay(2);

                att7022eu_Write(0xC3,0x000000);  
                att7022eu_Write(0xc9,0x00005A);  
                                                                               
                att7022eu_Write(0x01,0xF87E);  
                att7022eu_Write(0x03,0xF884);  

                att7022eu_Write(0x31,0x3437);
                att7022eu_Write(0x02,0x0100);          
                att7022eu_Write(0x1E,0x0210);
                                                                                                                                       
                att7022eu_Write(0x1D, 0x9D);       
                att7022eu_Write(0x6D, 0xFF00);               
                att7022eu_Write(0x6E, 0x0DB8);               
                att7022eu_Write(0x6F, 0xD1DA);              
               
    att7022eu_Write(0x04,0);
                att7022eu_Write(0x05,0);
                att7022eu_Write(0x06,0);
               
                att7022eu_Write(0x07,0);
                att7022eu_Write(0x08,0);
                att7022eu_Write(0x09,0);
               
                att7022eu_Write(0x0A,0);       
                att7022eu_Write(0x0B,0);       
                att7022eu_Write(0x0C,0);
               
                att7022eu_Write(0x0D,0);       
                att7022eu_Write(0x0E,0);       
                att7022eu_Write(0x0F,0);  
       
                att7022eu_Write(0x17,0);       
                att7022eu_Write(0x18,0);  
                att7022eu_Write(0x19,0);
               
                att7022eu_Write(0x1A,0);                
                att7022eu_Write(0x1B,0);        
                att7022eu_Write(0x1C,0);        

                att7022eu_Write(0x35,0x080F);          
                att7022eu_Write(0xC5,0x000002);                       
                att7022eu_Write(0xc9,0x000000);        
                att7022eu_Write(0xC6,0x000000);           
}
下面是读取电压、电流和温度值的函数
void InitAmmeter(void)
{
       
//***************************读温度值********************************
        TM=att7022eu_Read(0x2A);       
        delay(1);
        if(TM>128)
        {
                        TMM=TM*10-256;
        }
        else
                        TMM=TM*10;
        TP=400-(0.726*TMM);       
        delay(1);
       
//***********************读取电流值*******************************
       
        CurrA=att7022eu_Read(0x10);       
        Ia=(CurrA/8192)*10/60;               
        delay(1);
        CurrB=att7022eu_Read(0x11);       
        Ib=(CurrB/8192)*10/60;               
        delay(1);
        CurrC=att7022eu_Read(0x12);       
        Ic=(CurrC/8192)*10/60;               
        delay(1);
        CurrIt=att7022eu_Read(0x13);       
        It=(CurrIt/4096)*10/60;               
        delay(1);
//***********************读取电压值*******************************       
        VolA=att7022eu_Read(0x0D);       
        Ua=(VolA*10)/8192;               
        delay(1);
        VolB=att7022eu_Read(0x0E);       
        Ub=(VolB*10)/8192;               
        delay(1);
        VolC=att7022eu_Read(0x0F);       
        Uc=(VolC*10)/8192;               
        delay(1);
        VolUt=att7022eu_Read(0x2B);       
        Ut=(VolUt*10)/4096;       
        delay(1);
}
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2017-9-28 11:15:58 | 显示全部楼层
操作内部寄存器可否在正常,电压、电流与外部电路相关的吧?将spi速率降低试试。
回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2017-9-11
在线时间
31 小时
 楼主| 发表于 2017-9-28 11:22:31 | 显示全部楼层
Acuity 发表于 2017-9-28 11:15
操作内部寄存器可否在正常,电压、电流与外部电路相关的吧?将spi速率降低试试。

已经试过了,SPI速率降低也不行
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 10:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表