高精度ADC-ADS1256使用笔记(软件篇)

最近需要用一款高精度的ADC,选择了TI的ADS1256,现将学习过程中的主要内容整理列出,与大家共同探讨,若有错误还请指正

ADS1256主要特性

  • 24位高精度
  • 极低噪声
  • 最高30kSPS(7.68MHz输入时钟下)
  • 双极多路复用器
    -- 四路差分输入或八路单端输入
  • 内置PGA
  • 5V容忍的SPI接口

关键组成

先看框图

ADS1256内部结构框图
主要分为这么几个模块:
  • Input Multiplexer:输入多路复用器
  • Buffer:可选的输入缓冲
  • PGA:程控增益放大器
  • A/D Converter:ADC电路,包括一个4阶delta-sigma modulator和一个可编程数字滤波器
  • Clock Generator:时钟电路
  • Control:复位、同步、掉电控制
  • Serial Interface:串行数据接口

然后我们看一下具体功能

先是最基本的,Serial Interface和Input Multiplexer
  1. 串行数据接口就不多说了,对好时序就没啥问题,下面是我的底层代码
void ADS1256_SendByte(uint8_t _data)
{
    uint8_t  j;
    delay_us(10);
    
    for(j=0;j<8;j++)
    {
        ADS1256_CLK = 1;
        if(_data&0x80)
                ADS1256_write_dout = 1;  
        else
        ADS1256_write_dout = 0;  
        ADS1256_CLK = 0;
        _data<<=1;
    }
}

uint8_t ADS1256_ReadByte(void)
{
    uint8_t  i,read=0;
    delay_us(10);
    
    for(i=0;i<8;i++)
    {
        ADS1256_CLK = 1;
        delay_us(10);
        ADS1256_CLK = 0;
        read<<=1;
        if(ADS1256_read_din)
        {
            read++;
        }
      delay_us(1);
    }
  return read;
}

void ADS1256WriteREG(unsigned char regaddr,unsigned char databyte)
{
    ADS1256_CS=0;
    ADS1256_SendByte(CMD_WREG|regaddr);
    ADS1256_SendByte(0x00); 
    ADS1256_SendByte(databyte);
    ADS1256_CS=1;
}

u8 ADS1256_ReadREG(unsigned char regaddr)
{
    u8 temp = 0;
    ADS1256_CS=0;
    ADS1256_SendByte(CMD_RREG|regaddr);
    ADS1256_SendByte(0x00);          
    
    delay_us(10);
    temp = ADS1256_ReadByte();
    ADS1256_CS=1;
    
    return temp;
}

unsigned int ADS1256ReadData()
{
    unsigned int sum=0;
    ADS1256_CS=0;
    while(ADS1256_DRDY);
    //ADS1256WriteREG(REG_MUX,channel);
    ADS1256_SendByte(CMD_SYNC);delay_us(50);
    ADS1256_SendByte(CMD_WAKEUP);delay_us(50);
    ADS1256_SendByte(CMD_RDATA);delay_us(50);
    sum|=(ADS1256_ReadByte()<<16);
    sum|=(ADS1256_ReadByte()<<8);
    sum|=(ADS1256_ReadByte());
    ADS1256_CS=1;
    return sum;
    
}
  1. 输入信号的多路复用器
    这个多路复用器很简单,就是选择任意两路作为输入信号的正负端。
    但需要注意一下:
  • 输入为单端信号时可使用AINCON脚作为公共地,其它各通道分别接不同的输入信号
  • 差分输入时最好选择相邻通道分别作为信号正端与负端(例如:选择AIN0和AIN1分别作为输入信号的正端和负端)
    通过设置REG_MUX寄存器可设置该多路复用器
ADS1256WriteREG(REG_MUX,channel);
delay_us(100);
return ADS1256ReadData();
  1. PGA
    现在不少ADC都会内置一个PGA(程控增益放大器),以更好地应对不同动态范围的输入信号,而在很多时候就不需要在前级模拟电路中,设计专门的放大电路进行调整。
    增益倍数:1、2、4、……64
int ADS1256_PGA_Set(int G)
{
    u8 temp = 0;
    
    temp = 0xf8 & ADS1256_ReadREG(REG_ADCON);
    ADS1256WriteREG(REG_ADCON, G | temp);
    delay_us(10);
    
    return 1;
}
然后看下其它的
  1. Buffer输入缓冲器
    可选的输入缓冲器,可提供80MΩ的阻抗

  2. A/D Converter
    包括一个4阶delta-sigma modulator和一个可编程数字滤波器
    调制器的full-scale input range为 ±2VREF (PGA = 1).
    数字滤波器如下


    image.png

    可通过更改Num_Ave来增加求均值所用的样本量同时完成对前级数据的进一步抽取而改变采样率

  3. Control部分
    这部分仅引出两个功能引脚,RESET_N,和SYNC_N/PDWN_N
    RESET_N用于芯片复位,拉低再拉高即可
    SYNC_N/PDWN_N用于AD转换的同步控制和Power-Down模式的控制,控制方法:
    --同步转换:拉低再拉高,低电平不超过20个DRDY_N周期
    --进入Power-Down模式:保持低电平大于20个DRDY_N周期,所有电路均会失能

暂时就涉及到这些,互相交流学习,有没注意到的地方还请指教~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容