主题中讨论的其他器件:TMS320F2808、
工具与软件:
您好!
我正在使用两个 ADC128S102 A/D 转换器对10个模拟通道进行采样。 这两个 ADC128S102芯片通过 SPI D 端口连接到 TMS320F2808 DSP。
DSP 使用两个 GPIO 来驱动 ADC128S102芯片的每个 CS 引脚-每个 ADC CS 线路一个 GPIO。
但是、每个 ADC128S102芯片的 SPI 时钟、MISO 和 MOSI 线路都合并到 DSP 的 SPI-D 线路中、即两个 ADC 的 SPI 时钟一起连接到 DSP 的 SPI-D 时钟线路、MOSI 和 MISO 线路也是如此。
我已按如下方式配置 SPI 线路:
1.每个 ADC128S102的 CS 线路都连接到 DSP 的一个引脚、该引脚配置为通用输出且启用内部上拉电阻。
2. SPI-D 时钟设置为10MHz。
3.用于 SPI-D MISO 和 MOSI 线路的 GPIO PUD 寄存器配置为启用内部上拉电阻。
4. SPI-D 波特率寄存器配置为16位字模式、以便整个12位 ADC 值响应可从 ADC 芯片计时并从 SPI-D RX 寄存器读取。
当我从 ADC128S102读取模拟通道 ADC 值时、我通过将其拉低来启用单个 ADC128S102芯片的片选择线路、然后进行 SPI 读取—即、当我读取一个 ADC128S102芯片时、另一个 ADC128S102芯片的 CS 线路被禁用(设置为数字状态高电平)。
VA 上的 ADC 基准电压为3.3V。 VD 也是3.3V。
ADC 芯片、DSP 和模拟输入的 GND 是相同的。
以下是我的观察结果:
当我只从一个 ADC128S102芯片读取模拟通道、例如 IN0时、我只获得模拟信号实际 ADC 值的一半。 例如、如果 IN0模拟信号为2.361V、则 ADC 值为1464、此时应获得值2928。 我已经确认我的 DSP 代码正确、而这正是我读取 RX 寄存器时获得的值。 为什么会这样呢? 我缺少什么吗?