OpenEdv-开源电子网

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

CS5460读取电流有效值寄存器,spi通信

[复制链接]

10

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-3
在线时间
44 小时
发表于 2017-6-30 09:50:59 | 显示全部楼层 |阅读模式
10金钱
现在在用CS5460,我读直流电流有效值寄存器的时候,不加电流负载都能从寄存器里读到值,而且值是没有规律的在变的,大神们有没有知道原因的。
另外就是直流电流有效值寄存器里读出来的值要怎么转成实际的电流值呢,请大神们指教。感激不尽。
void CS5460A_Init()
{
        u32 temp;
       
//        __nop(); __nop(); __nop(); __nop();
        CAN_SPI_Init();
        CS5460_CS=1;
        CS5460_RST=0;
        delay_ms(30);
        CS5460_RST=1;//¸′λ5460
        CS5460_CS=0;//5460Ƭѡ
//        __nop(); __nop(); __nop(); __nop();   
        WriteSPI(0xff);//SYNC1
        WriteSPI(0xff);
        WriteSPI(0xff);
        WriteSPI(0xfe);//SYNC0
        CS5460_CS=1;
//        __nop(); __nop(); __nop(); __nop();

       
       
/************¼Ä′æÆ÷ÅäÖÃ************///òéÎê?
        CS5460A_Write(0x00,0x000001);//写配置寄存器

        CS5460A_Write(0x0f,0xffffff);//清除状态寄存器
       
        CS5460A_Write(0x1A,0x000000);//写屏蔽寄存器
        CS5460A_Write(0x1C,0x000000);//写控制寄存器
        CS5460A_Write(0x05,0x000fa0);//写周期计数寄存器 N=400,1s计数一次
                                                                                                                         
                                         
        temp=CS5460A_Read(0x0f);
        CS5460A_Write(0x0f,temp);    //清除状态寄存器

/**********************************/       
       
        CS5460A_Write_CMD(0xe8);     //启动转换命令
}


void CS5460A_Write(u8 addr,u32 data)
{
        u8 x=0x01;
        u8 addr_temp=0;
        CS5460_CS=0;         //5460Ƭѡ
//        __nop(); __nop(); __nop(); __nop();
        addr_temp=(addr<<1)|0x40;
        x=WriteSPI(addr_temp); //·¢&#203;íD′μ&#216;&#214;·
        x=WriteSPI((u8)(data>>16));
        x=WriteSPI((u8)(data>>8));
        x=WriteSPI((u8)(data));//D′êy&#190;Y
       

       
//        __nop(); __nop(); __nop(); __nop();__nop(); __nop(); __nop(); __nop();
        CS5460_CS=1;

        //__nop(); __nop(); __nop(); __nop();__nop(); __nop(); __nop(); __nop();
}

u32 CS5460A_Read(u8 addr)
{
        u8 addr_temp=0;
        u8 temp=0;
        u8 temp2=0;
        u8 temp3=0;
        u32 buf=0;
        CS5460_CS=0;
//        __nop();__nop();__nop();__nop();
        addr_temp=(addr<<1);
//        printf("%u",addr_temp);
        WriteSPI(addr_temp);//·¢&#203;í&#182;áμ&#216;&#214;·
        temp=WriteSPI(0xfe);
        printf("%d ",temp);/////
        temp2=WriteSPI(0xfe);
        printf("%d ",temp2);//////
        temp3=WriteSPI(0xfe);
        printf("%d\r\n",temp3);//////
//        __nop();__nop();__nop();__nop();
        CS5460_CS=1;
//        __nop();__nop();__nop();__nop();
        return buf;
}

void CS5460A_Write_CMD(u8 cmd)
{
        CS5460_CS=0;
//        __nop(); __nop(); __nop(); __nop();
        WriteSPI(cmd);
//        __nop(); __nop(); __nop(); __nop(); __nop(); __nop(); __nop(); __nop();
        CS5460_CS=1;
//        __nop(); __nop(); __nop(); __nop(); __nop(); __nop(); __nop(); __nop();
}


寄存器配置啥的应该没有问题吧?目前没做校准。我写配置寄存器然后在去读,读的值和我写的是一样的,证明读写寄存器应该没什么问题



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

使用道具 举报

10

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-3
在线时间
44 小时
 楼主| 发表于 2017-6-30 09:51:30 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-7-1 01:22:18 | 显示全部楼层
帮顶
回复

使用道具 举报

10

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-3
在线时间
44 小时
 楼主| 发表于 2017-7-3 09:12:43 | 显示全部楼层
论坛有木有大神解答一下,万分感谢
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2017-7-4 16:20:50 | 显示全部楼层
打开高通滤波器
乘以一个系数就是实际值
小小蜗牛
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2015-9-19
在线时间
11 小时
发表于 2017-7-8 23:11:57 | 显示全部楼层
jiutianshenjian 发表于 2017-7-4 16:20
打开高通滤波器
乘以一个系数就是实际值

请问下采集直流信号为什么打开高通滤波器啊?大神能告诉下你的QQ吗?我想请教你下CS5460的问题,谢谢
回复

使用道具 举报

10

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-3
在线时间
44 小时
 楼主| 发表于 2017-7-9 14:03:28 | 显示全部楼层
jiutianshenjian 发表于 2017-7-4 16:20
打开高通滤波器
乘以一个系数就是实际值

直流信号为什么要开高通
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2017-7-11 08:35:19 | 显示全部楼层
直流不清楚,我以为交流。
小小蜗牛
回复

使用道具 举报

10

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-3
在线时间
44 小时
 楼主| 发表于 2017-7-20 09:30:10 | 显示全部楼层
jiutianshenjian 发表于 2017-7-4 16:20
打开高通滤波器
乘以一个系数就是实际值

大神,想问一下,交流的话,这个系数要怎么算呢
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2017-7-20 13:32:37 | 显示全部楼层
Widow 发表于 2017-7-20 09:30
大神,想问一下,交流的话,这个系数要怎么算呢

系数不就是 用电流表测量的实际值 除以 你测量到值吗?
你测量到了1234,实际值2.3A,你说系数多少,1234*? = 2.3
小小蜗牛
回复

使用道具 举报

10

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-3
在线时间
44 小时
 楼主| 发表于 2017-7-24 11:49:22 | 显示全部楼层
jiutianshenjian 发表于 2017-7-20 13:32
系数不就是 用电流表测量的实际值 除以 你测量到值吗?
你测量到了1234,实际值2.3A,你说系数多少,123 ...

交流电应该读的是有效值寄存器吧
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2017-7-25 10:47:56 | 显示全部楼层
Widow 发表于 2017-7-24 11:49
交流电应该读的是有效值寄存器吧

看你需要
小小蜗牛
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-1-27
在线时间
4 小时
发表于 2019-7-18 14:56:25 | 显示全部楼层
哪位朋友在使用CS5460A,我的程序在CS5460A不供电的时候写入寄存器和读出寄存器的值一样,当CS5460供电的时候,写寄存器和读寄存器的值不一样读出的值怎么都是0那
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-15 11:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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