AD7689驱动开发芯片开发

AD7689参数

  • 16位分辨率、无失码
  • 8通道多路复用
  • 吞吐速率250kSPS
  • 模拟输入范围0V~VREF,VREF可达VDD
  • 多种基准源类型:内部基准源、外部基准源、外部缓冲基准源
  • SPI接口

操作要点

3种模式:转换期间读取/写入(RDC)、转换后读取/写入(RAC)、转换全程读取/写入(RSC),根据主机速度选择,RDC和RAC在时序上更加清晰易于实现。

busy指示:取决于host主机是否支持外部中断,有无busy指示时通用时序不同

无busy指示时序如下:

AD7689驱动开发芯片开发_第1张图片

有busy指示时序如下:

AD7689驱动开发芯片开发_第2张图片


CFG和数据回读的选通均为转换结束(EOC) 。转换结束时如果CNV为高电平,则busy指示器禁用。

如果没有在EOC之前写入完整CFG,则CFG被丢弃,之前配置保持有效。如果没有在EOC之前完全读出转换结果,则转换结果丢失,ADC以当前转换到MSB更新SDO。

通道切换方式:

  • 使能通道序列器进行
  • 使用CFG[9:7]配置通道

注意:在执行第n个序列的读取/写入时,转换结果是(n-1)序列转换的结果,写入配置是针对下一序列(n+1)的采集,转换结果和CFG配置生效相当于差两个序列,编程时需要对其进行对齐。

代码框架如下:

#define IN0             (0x3c49 << 2)           // 单极性,全带宽,内部基准4.096V,禁用通道序列器,不回读CFG
#define IN1             (0x3cc9 << 2)           
#define IN2             (0x3d49 << 2)  
#define IN3             (0x3dc9 << 2)  
#define IN4             (0x3e49 << 2)  
#define IN5             (0x3ec9 << 2)  
#define IN6             (0x3f49 << 2)  
#define IN7             (0x3fc9 << 2)  
#define M               8                       // channel num  
  
uint16_t ad7689_cfg[M] = {IN2, IN3, IN4, IN5, IN6, IN7, IN0, IN1 };  // CFG序列,与data错开2个序列
uint16_t rxdata[M];

for(i=0;i


你可能感兴趣的:(惯性导航)