主题中讨论的其他器件: ADS131E08
您好!
我的 ADS131E04有问题。 器件上的内部振荡器不工作。 CLKSEL 引脚连接到3.3V、CLK 连接到 GND。 器件根本没有响应。 如果我使用来自其他一些 MCU 的外部2MHz 时钟、器件会响应。 在这种情况下、我能够写入和读取寄存器、但 ADC 值错误(使用 RDATA 0x12读取)。 如果我使用内部基准、原始 ADC 值大约为16777000、而如果我使用外部基准值、则只是随机数不断变化。
我的启动顺序如下:
- CLKSEL = 0 (外部时钟)
- PWDN=RESET=1
- 等待 VCAP
- 发出复位脉冲
- 配置寄存器:
masterBuffer.txBuffer[0]= 0x41;
masterBuffer.txBuffer[1]= 0x09;//写入10个寄存器
masterBuffer.txBuffer[2]= 0x96;// cfg 1.
masterBuffer.txBuffer[3]= 0xE0;// cfg 2.
masterBuffer.txBuffer[4]= 0xC0;// cfg 3 (内部基准)
masterBuffer.txBuffer[5]= 0x00;//故障
masterBuffer.txBuffer[6]= 0x10;// CH1
masterBuffer.txBuffer[7]= 0x10;// CH2
masterBuffer.txBuffer[8]= 0x10;// ch3
masterBuffer.txBuffer[9]= 0x10;// CH4
masterBuffer.txBuffer[10]= 0x87;// ch5未使用
masterBuffer.txBuffer[11]= 0x87;// Ch6未使用
masterBuffer.txBuffer[12]= 0x54;// GPIO
masterBuffer.txBuffer[13]= 0x00;
masterBuffer.txBuffer[14]= 0xF0;
- 发送 Start 命令(0x08)并将 START PIN 设置为1
- 使用 RDATA 读取所有216位并解析数据:
//响应从 masterBuffer.rxBuffer[1]开始
uint32_t STS =((uint32_t) masterBuffer.rxBuffer[1]<< 16)|((uint32_t) masterBuffer.rxBuffer[2]<< 8)|((uint32_t) masterBuffer.rxBuffer[3]);
printf ("状态:%X\n"、STS);
int ch1 =(((uint32_t) masterBuffer.rxBuffer[4]<< 16)|((uint32_t) masterBuffer.rxBuffer[5]<< 8)|(((uint32_t) masterBuffer.rxBuffer[6]);
printf ("Ch1:%d\n"、CH1);
int ch2 =(((uint32_t) masterBuffer.rxBuffer[7]<< 16)|((uint32_t) masterBuffer.rxBuffer[8]<< 8)|((uint32_t) masterBuffer.rxBuffer[9]);
printf ("Ch2:%d\n"、CH2);
…………
如果我想使用内部时钟、在上面的序列中、我只将 CLKSEL 更改为1、之后器件无响应。 我是对还是错? 问题可能出在哪呢?
下面是原理图的一部分:
提前感谢您。

