我开始使用 ADS8353、但在尝试设置 CFR 寄存器并读回它时、没有达到我的预期。 根据这里的几个论坛帖子、我认为我的做法是相同的、因此很明显、我缺少一些简单的东西。
我的理解是编写一个寄存器、您只需将其作为前16位、然后再编写32个时钟即可。 使用 CCS PIC24编译器、如下所示:
output_low (SlaveSelectPin); DELAY_us (1); SPI_xfer (SPI2_MODE0、ConfigRegister、16); SPI_xfer (SPI2_MODE0、0、32); output_high (SlaveSelectPin);
使用 Saleae 分析器、我可以看到在前两个8位字节中写入到线的值、接下来的4字节中、后跟0 (总共48位)。
当我尝试读取寄存器时、我会按照我在本论坛其他地方找到的相同示例操作:
1)帧(F)-至少48个 CLK 的一个空帧
2)帧(F+1)-为了回读用户可编程寄存器设置、应在帧(F+1)期间向器件发送适当的控制字
3)帧(F+2)-在帧(F+2)期间、SDO_A 在前16个 SCLK 下降沿输出所选用户可编程寄存器的内容。
在 CCS 编译器中、它如下所示:
//帧(F)-至少48个 CLK 的一个空帧 output_low (SlaveSelectPin); DELAY_us (1); SPI_xfer (SPI2_MODE0、0、16); SPI_xfer (SPI2_MODE0、0、32); output_high (SlaveSelectPin); DELAY_us (1); //帧(F+1) //重新读回用户可编程的寄存器设置,适当的 //在帧期间(F+1)应将控制字发送到器件 output_low (SlaveSelectPin); DELAY_us (1); SPI_xfer (SPI2_MODE0、值、16);//写入16位。 SPI_xfer (SPI2_MODE0、0、32); //连接到48个 CLK。 output_high (SlaveSelectPin); DELAY_us (1); //帧(F+2) //在帧(F+2)期间、SDO_A 输出所选内容 //用户可编程寄存器位于前16个 SCLK 下降沿 output_low (SlaveSelectPin); DELAY_us (1); 值= SPI_xfer (SPI2_MODE0、0、16);//写入16位。 SPI_xfer (SPI2_MODE0、0、32); //连接到48个 CLK。 output_high (SlaveSelectPin);
我通过发送填充为48位的0x8640来编写 CFR。
要读取、我发送:
1) 48位为0
2) 2) 0x3000……填充为48位零
3) 0的48位读取前16位响应。
但我返回0x2ff8 --并且0010 (0x2)的起始位看起来是给我 一个 REFDAC_B 寄存器而不是 CFR (应该从0011 - 0x3开始)。
我的分析器显示了在预期区域中填充的内容、以读取 DAC A (0x00 0x00 DACA DACA xx xx)、因此看起来我正在与器件通信。 我希望在设置 CFR 时缺少一些东西。
是否有任何关于我在数据表中遗漏的内容的线索?
非常感谢。