您好、TI 专家、
我们在 我们的一个重要产品线中使用 ADC78H90 ADC。
通过 SPI 通信将 ADC78H90连接到 STM32H723VGT6 MCU 的过程不能正常工作。
这是我们研发的一个展示 您能不能为我们解决这一问题提供必要的帮助?
请告诉我您需要什么信息。
如果需要、我们也可以进行在线呼叫。
谢谢。
Snehashis
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好、Tom、
只是为了说明一下、您需要检查为这些信号或电路图捕获的 DSO 输出?
同时、我可以通过 MCU 的 SPI 主器件配置为您提供特定数据。

下面是我用于读取 AIN1、AIN6、AIN7和 AIN8的命令。
const uint8_t aTxBuffer[]=
{0、14、40、0、
0、14、48、0、
0、14、56、0、
0、14、0、0};
该数据通过 AT32UC3C1512C MCU 发送、以从 ADC 读取相同的信息。
现在、我们可以看到一些不是预期的数据。
如果可能、您能否检查此配置和命令一次并建议所需的配置?
谢谢。
Snehashis
您好、Tom、
我们已针对时钟极性和时钟相位模式的所有组合捕获了这4个引脚。 对于每种模式、我们都抓了两张屏幕截图。
1.全部4个信号
2. SCLK、MOSI、MISO 信号的缩放版本,以便更好的观察。
请查找以下信息:
组合1:时钟极性=低电平、时钟相位=第1个边沿
===================================================


组合2:时钟极性=低电平、时钟相位= 第2个边沿
===================================================


组合3:时钟极性=高电平、时钟相位= 第1个 边沿
===================================================


组合3:时钟极性= 高电平、时钟相位= 第2个 边沿
===================================================


您能查看一下并告诉我们需要做什么吗?
谢谢。
Snehashis
尊敬的 Snehashis:
第一个问题是、您可能应该考虑以其原生的"突发时钟"模式使用 SPI、并对发送到 ADC78H90的每个16位进行/CS 切换-我认为管理通信更简单。 如果您看看上面的第二个组合3 (CPOL=1、CPHA=1)、您将发送0x0E000028000... 会传输"额外"时钟、并且在您的下一个通道命令被解码之前、ADC 会再次移出转换结果。

所以-您从来不会真正说 SPI 通信出了什么问题、但我怀疑您不是期望看到 SDO 重复、并且捕捉数据不正确。
您好、Tom、
谢谢。 我会处理这个。
在此之前,如果可能,您可以确认我的某些配置参数?
CPOL 和 CPHA 配置
组合3:时钟极性= 高电平、时钟相位= 第2个 边沿(在偶数时钟时采样)
用于读取 AIN1、AIN6、AIN7和 AIN8的命令缓冲区。
const uint8_t aTxBuffer[]=
{0、14、40、0、
0、14、48、0、
0、14、56、0、
0、14、0、0};---------------- >我相信这是问题所在
此外、我们将时钟频率保持在20 MHz
SCLK、MISO、MOSI 线路呈高速率、但没有上拉或下拉电阻。
如果可能、您可以提供建议吗?
谢谢。
此致、
Snehashis
Snehashis、
20MHz SCLK 就可以了。 CPOL=1、CPHA=1没有问题。 您不需要控制线路上的上拉/下拉。 我更倾向于采用十六进制值、因此、若要读取 CH0、CH6、CH7、CH8、您需要写入0x0000、0x2800、0x3000、0x3800。 请参阅第13页的表1-3。 上面的"14"是十六进制的 E、它提供了我之前指出的0x0E00。 它实际上会选择 CH2。 由于 CHANNEL 命令跨越2个半字节-位 7、6、2、1和0是"无关"。 您使用该命令设置位3、2和1。
您好、Tom、
在我们的系统中、有3个这样的 ADC IC、由 CS 引脚选择。
其中一个 ADC IC 连接到 AIN1处的1.853伏电压(通过万用表进行测试和确认)。 我们发送了16位数据 0x0000、接收器缓冲区也是16位。 在发送命令 0x0000时、我们将收到 0x5fe、这意味着 检测到的电压为1.236伏。
我们尝试使用 0x2800命令读取 AIN2时、读取相同的 数据 0x5fe。
我们在下面的屏幕截图中捕获了其中一种数据交换。

可以看到32个时钟。
现在、我们感到困惑:为什么 ADC 为1.853伏发送0x5fe、以及它是否预计0x0000和0x2800命令的数据同样重复。
此外、尽管 我使用 CS 引脚选择了其他2个 IC、但来自 AIN1和 AIN2的所有数据都仅为0。
如果可能、您能否检查一下 MCU 方面是否有任何错误发生、并提供建议?
谢谢。
Snehashis