4165|0

6

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

AD5410编程总结 [复制链接]

 
    AD5410是数字写入控制电流输出的片子,分写数据部分和读数据部分,读数据其实就是读AD5410的寄存器的数据,主要目的无非是看看我写进寄存器的内容是否正确,调试出现错误时会用到,真正实现电流输出的是写数据部分。我一个部分一个部分来吧。
    第一部分写数据
    控制电流输出编程的大方向:上电复位AD5410(向复位寄存器写数据)——配置AD5410的控制方式(向控制寄存器写数据)——写数据到AD5410的数据寄存器(跟电流对应的码值)。三个步骤完成就可以输出你想要的电流了,就是按顺序向三个寄存器写数据。
    向AD5410寄存器写数据就是一次性写3个字节的数,即24个bit,我用图例表示24个bit:
aaaa aaaa bbbb bbbb bbbb bbbb,a表示第一个要写的字节,b表示第二个和第三个要写的字节(因为b是16个bit,所以分2个字节来写)。a的取值是目的寄存器的地址,比如复位寄存器地址是0x56,则a=0x56(即0101 0110),b的取值就是要写入的目的寄存器的数据。从数据手册上可以看到如果要复位AD5410,则向复位寄存器里面写入0x0001,所以a=0x56,b=0x0001。写数据时需注意latch引脚的电平,写24个bit结束后拉高,在之前拉高的话则写数据会失败,如果不是24个bit,而是25个bit后才拉高的话写数据也失败。写bit时是下降沿写入,即clk为高后准备好bit,然后再将clk拉低,形成一个下降沿。
向复位寄存器写数据的程序如下:
DA_control(0x56,0x0001);
void DA_control(unsigned char addr,unsigned int data)
{
 DA_latch_low;                   //latch为低电平
 DA_SendByte(addr);
 DA_SendByte(data/256);
 DA_SendByte(data);
 DA_latch_high;                  //latch为高电平
}
void DA_SendByte(unsigned char byte)
{
    unsigned char i;
    for ( i = 0; i < 8; i++)
    {
        DA_CLK_LOW; 
        if ( byte & 0x80 )
          DA_SIMO_HIGH;
        else
          DA_SIMO_LOW; 
        DA_CLK_HIGH;
        byte <<= 1;    
        DA_CLK_LOW;
    }
}
同理,可以写控制寄存器和数据寄存器。
    第二部分读数据
    读寄存器数据编程大方向:选择要读的寄存器——读寄存器数据。
选择要读的寄存器就是向状态寄存器里面写数据,比如我需要读控制寄存器的数据,我就要先想状态寄存器里面写入读控制寄存器命令,然后对AD5410进行一个空操作(即AD5410的SDI接收到24个0-bit),这个时候在AD5410的SDO端口可以看到控制寄存器的数据。
读控制寄存器数据编程如下:
DA_Read_Register(0x02);
DA_Read_only();            //这个时候在AD5410的SDO端口可以看到控制寄存器的数据
void DA_Read_Register(unsigned char addr)
{
 DA_latch_low; 
 DA_SendByte(0x02);        //DA_SendByte的程序跟上面的一样
 DA_SendByte(0x00);
 DA_SendByte(addr);
 DA_latch_high;
}
void DA_Read_only(void)
{
 DA_latch_low; 
 DA_SendByte(0x00);
 DA_SendByte(0x00);
 DA_SendByte(0x00);
 DA_latch_high;
}
 
最后总结一下我们使用个片子出现过的问题
1、我们硬件上使用的片子上推荐的连接方式,Rset接的外部电流电阻,但是我们没有使用推荐的15k低温漂电阻,用的12k的,导致我们初始态多了1mA的电流,把电阻换掉就好了。
2、我们一开始测试时将Iout引脚悬空,这会导致fault低电平,所以Iout需接负载或接地。
 
最后说一句:ADI的客户服务态度真是非常好,很耐心,而且MM声音好听。

赞赏

1

查看全部赞赏

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表