调试外部独立ADC-ADS1118

一、背景

最近项目使用了一款独立ADC芯片,记录一下使用的过程

二、介绍

芯片有四个采样通道 AIN0-AIN3

两个寄存器,分别为配置寄存器(Config Register)和采样数据读取寄存器(Conversion Register

配置寄存器介绍

寄存器Bit说明
SS执行单次采样
MUX[2:0]
配置采样通道(单端采样还是差分采样)
PGA[2:0]
采样的参考电压
MODE单次采样还是连续采样
DR[2:0]
采样速度
TS_MODE
配置温度采样还是外部通道采样
PULL_UP_EN
是否是能内部上拉
NOP[1:0]
是否将此配置写入配置寄存器中(下面会介绍)
Reserved
保留

该芯片是使用了 SPI通讯接口,在此不多介绍SPI

我们可以在上电开始读取芯片的默认配置,来验证MCU和芯片之间的通讯以及芯片是否完好。

读取时序如下,参考手册

对于上面的时序图,简单来说,意思就是连续读取四个字节,最后面的两个字节就是当前的配置数据,那么如果读取呢

UINT16 Ads1118ReadDefaultCfg(void)
{
    UINT8 read[2] = { 0,0 };

    CS_EN_RESET; /* 片选使能 */

    /* SPI1WriteByte 功能,发送一个字节同步读取一个字节,这是SPI的通讯机制 */
    SPI1WriteByte(0x00);
    SPI1WriteByte(0x00);

    read[1] = SPI1WriteByte(0x00);
    read[0] = SPI1WriteByte(0x00);

    CS_EN_SET;

    return ((read[1] << 8) | read[0]);
}

在这里为什么是发送0x00,是因为我们需要的是读取数据,那么配置数据不能有效,也就是说

需要 NOP[1:0] = 0b00 ,所以就讲写入数据为0x00

从手册来看默认的配置寄存器值为 058Bh ,通过对比即可。

需要注意的是,如果之前写过配置(也就是NOP[1:0] = 0b01 ),没有掉电的话,读出来值就是写入的配置值。

读取采样值,只需要读取前面两个字节即可。

UINT16 Ads1118Read(void)
{
    UINT8 read[2] = { 0,0 };

    CS_EN_RESET; /* 片选使能 */

    read[1] = SPI1WriteByte(0x00);
    read[0] = SPI1WriteByte(0x00);

    CS_EN_SET;

    return ((read[1] << 8) | read[0]);
}

配置寄存器,在这里配置的是连续采样模式 MODE = 0

void Ads1118SwitchSampleChn(UINT8 Chn)
{
    UINT16 cfg = 0;

    cfg |= (Chn << SAMPLE_CH_POS);  /* 配置通道 */

    cfg |= (VREF_2_048V << VREF_POS); /* 参考电压为 2.048V */

    cfg |= (SAMPLE_RATE_8_SPS << SAMPLE_RATE_POS); /* 采样速度 */

    cfg |= (PULL_UP_EN << PULL_UP_EN_POS);

    cfg |= (NOP_UPDATE_CONFIG << NOP_POS); /* 更新配置 */

    DEBUG("Config Value 0x%04X \r\n", cfg);

    Ads1118WriteCfg(cfg);
}

UINT16 Ads1118WriteCfg(UINT16 Cfg)
{
    CS_EN_RESET;

    SPI1WriteByte(Cfg >> 8);
    SPI1WriteByte(Cfg >> 0);

    CS_EN_SET;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码混口饭吃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值