打印

AD7190 读取到数据全0问题请教

[复制链接]
1132|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 huiyong828 于 2022-3-18 22:32 编辑

大家好,第一次使用AD7190做压力传感器模数转换,初始化函数如下:
//---------------------------------
//void WriteToAD7190(unsigned char count,unsigned char *buf);
//---------------------------------
//Function that writes to the AD7190 via the SPI port.
//--------------------------------------------------------------------------------
void WriteToAD7190(uint8_t count, uint8_t *buf)
{
    CS_LAT = 0;
    SPI_WriteBlock(buf,count);
    CS_LAT = 1;
}


//---------------------------------
//void ReadFromAD7190(unsigned char count,unsigned char *buf)
//---------------------------------
//Function that reads from the AD7190 via the SPI port.
//--------------------------------------------------------------------------------
void ReadFromAD7190(uint8_t count, uint8_t *buf)
{
   
    CS_LAT = 0;
    SPI_ReadBlock(buf,count);
    CS_LAT = 1;
}
//
void AD7190_init(void)
{
    uint8_t         buf[4] = {0,0,0,0};

    buf[2] = 0xFF;              //
        buf[1] = 0xFF;              //
        buf[0] = 0xFF;              //
        WriteToAD7190(3,buf);                //
    WriteToAD7190(3,buf);                //
    WriteToAD7190(3,buf);                //复位
    __delay_us(1000);            //延时800uS
   
    buf[0] = 0x10;              //设置配置寄存器
        WriteToAD7190(1,buf);                  //写入通信寄存器0x10以控制写入配置寄存器的进度
        buf[0] = 0x00;              //外部基准源Vrl-  Vrl+   ,禁止斩波
        buf[1] = 0x02;              //正输入端AIN3  负输入端AIN4
        buf[2] = 0x07;              //增益选择128,双极性工作模式,模拟输入端无缓冲器,禁用基准电压检测功能
        WriteToAD7190(3,buf);                //写入配置寄存器,双极操作,增益=128,通道:AIN3至AIN4

        buf[0] = 0x08;              //设置模式寄存器
        WriteToAD7190(1,buf);                //写入通信寄存器0x08以控制写入模式寄存器的进度

        buf[1] = 0x02;              //外部晶振4.92MHz,工作模式:连续转换模式
        buf[1] = 0x03;              //sinc滤波器为50Hz,不校验
        buf[2] = 0xFF;              //输入数据速率4.7Hz
        WriteToAD7190(3,buf);                //写入模式寄存器,外部4.92MHz时钟,输出数据速率=4.7Hz
   
    buf[0] = 0x48;              //读模式寄存器
        WriteToAD7190(1,buf);                //写入通信寄存器0x48以控制读取配置寄存器的进度
        ReadFromAD7190(3,buf);                //读取模式寄存器
    NOP();
   
        buf[0] = 0x50;
        WriteToAD7190(1,buf);                //写入通信寄存器0x50以控制读取配置寄存器的进度
        ReadFromAD7190(3,buf);                //读取配置寄存器
    NOP();
   
    buf[0] = 0x40;
        WriteToAD7190(1,buf);                //写入通信寄存器0x50以控制读取配置寄存器的进度
        ReadFromAD7190(3,buf);                //读取状态寄存器
    NOP();
   
        buf[0] = 0x5C;
        WriteToAD7190(1,buf);                //写入通信寄存器0x5C以控制读取数据寄存器的进度
        ReadFromAD7190(3,buf);                //读取数据寄存器
   
        buf[0] = 0x00;
        WriteToAD7190(1,buf);                //写入通信寄存器0x58以控制读取数据寄存器的进度
        ReadFromAD7190(3,buf);                //读取状态寄存器
    NOP();
}



采用硬件SPI接口,逻辑分析仪读取寄存器数据全是0


哪位朋友用过这个片子,帮忙看下问题出在哪里,谢谢

郑州吴慧勇

使用特权

评论回复
沙发
huiyong828|  楼主 | 2022-3-18 22:33 | 只看该作者
期待各位老师回复

使用特权

评论回复
板凳
slot867| | 2024-1-31 10:14 | 只看该作者
国产平替 fully compatible. 板子拿来,换个芯片,性能更佳。MCU不用改 c code。

平替ADI芯片
SIG7190 平替 AD7190
SIG7192 平替 AD7192
SIG7193 平替 AD7193

平替Cirrus Logic芯片
SIG5532B 平替 CS5532BS(32-bit)
SIG5534B 平替 CS5534BS(32-bit)
SIG5532A 平替 CS5532AS(24-bit)
SIG5534A 平替 CS5534AS(24-bit)
SIG5530 平替 CS5530 (24-bit)
SIG5530B 平替 CS5530(32-bit)

平替ADI芯片
SIG7792 平替 AD7792
SIG7793 平替 AD7793
SIG7794 平替 AD7794
SIG7795 平替 AD7795
SIG7796 平替 AD7796
SIG7797 平替 AD7797
SIG7798 平替 AD7798
SIG7799 平替 AD7799

平替TI芯片
SIG1230A 平替 ADS1230 (20-bit)
SIG1232A 平替 ADS1232 (24-bit)


功能替代TI芯片
SIG24130/SIG24131/SIG24132 替代 ADS1220、ADS1247、ADS1248
SIG16130/SIG16131/SIG16132 替代 ADS1120、ADS1147、ADS1148

使用特权

评论回复
地板
SophiaOP| | 2024-2-21 16:39 | 只看该作者
这个芯片怎么样啊?

使用特权

评论回复
5
SophiaOP| | 2024-2-21 16:40 | 只看该作者
之前用过AD7606温度误差太大了

使用特权

评论回复
6
OliviaSH| | 2024-2-25 21:34 | 只看该作者
首先检查下是不是接线的问题,有些劣质杜邦线直接。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

55

帖子

0

粉丝