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

[复制链接]
1607|5
 楼主| huiyong828 发表于 2022-3-18 22:27 | 显示全部楼层 |阅读模式
本帖最后由 huiyong828 于 2022-3-18 22:32 编辑

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


  12. //---------------------------------
  13. //void ReadFromAD7190(unsigned char count,unsigned char *buf)
  14. //---------------------------------
  15. //Function that reads from the AD7190 via the SPI port.
  16. //--------------------------------------------------------------------------------
  17. void ReadFromAD7190(uint8_t count, uint8_t *buf)
  18. {
  19.    
  20.     CS_LAT = 0;
  21.     SPI_ReadBlock(buf,count);
  22.     CS_LAT = 1;
  23. }
  24. //
  25. void AD7190_init(void)
  26. {
  27.     uint8_t         buf[4] = {0,0,0,0};

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

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

  44.         buf[1] = 0x02;              //外部晶振4.92MHz,工作模式:连续转换模式
  45.         buf[1] = 0x03;              //sinc滤波器为50Hz,不校验
  46.         buf[2] = 0xFF;              //输入数据速率4.7Hz
  47.         WriteToAD7190(3,buf);                //写入模式寄存器,外部4.92MHz时钟,输出数据速率=4.7Hz
  48.    
  49.     buf[0] = 0x48;              //读模式寄存器
  50.         WriteToAD7190(1,buf);                //写入通信寄存器0x48以控制读取配置寄存器的进度
  51.         ReadFromAD7190(3,buf);                //读取模式寄存器
  52.     NOP();
  53.    
  54.         buf[0] = 0x50;
  55.         WriteToAD7190(1,buf);                //写入通信寄存器0x50以控制读取配置寄存器的进度
  56.         ReadFromAD7190(3,buf);                //读取配置寄存器
  57.     NOP();
  58.    
  59.     buf[0] = 0x40;
  60.         WriteToAD7190(1,buf);                //写入通信寄存器0x50以控制读取配置寄存器的进度
  61.         ReadFromAD7190(3,buf);                //读取状态寄存器
  62.     NOP();
  63.    
  64.         buf[0] = 0x5C;
  65.         WriteToAD7190(1,buf);                //写入通信寄存器0x5C以控制读取数据寄存器的进度
  66.         ReadFromAD7190(3,buf);                //读取数据寄存器
  67.    
  68.         buf[0] = 0x00;
  69.         WriteToAD7190(1,buf);                //写入通信寄存器0x58以控制读取数据寄存器的进度
  70.         ReadFromAD7190(3,buf);                //读取状态寄存器
  71.     NOP();
  72. }



采用硬件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 | 显示全部楼层
这个芯片怎么样啊?
SophiaOP 发表于 2024-2-21 16:40 | 显示全部楼层
之前用过AD7606温度误差太大了
OliviaSH 发表于 2024-2-25 21:34 | 显示全部楼层
首先检查下是不是接线的问题,有些劣质杜邦线直接。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

55

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部