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.

[参考译文] ADS8883:具有16位帧的 SPI 通信

Guru**** 1091470 points
Other Parts Discussed in Thread: ADS8883
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1195398/ads8883-spi-communication-with-16-bit-frames

器件型号:ADS8883

您好!

由于许多基于 ARM 的控制器(例如 STM32L4系列)允许从4位到16位之间的任何值设置 SPI 数据大小(DS)、我们如何将18位值从 ADC 传输到微控制器?

更具体地说、如果我的 STM32 在16个时钟周期后使 CONVST / NCS 引脚变为高电平、ADC (ADS8883)存储的18位值中的其余2位会发生什么情况? 是否会被新值覆盖、因为 CONVST 变为高电平会导致下一个转换周期开始?

还是保留它、以便微控制器可以启动另一个事务(通过将 nCS 设置为低电平)并获取剩余位? (还是将其分成两个帧、每个帧为9位)?

提前感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mrutyunjaya、您好!

    当使用具有 SPI 端口的 MCU 时、您可以使用 GPIO 引脚控制/CS (DIN 在4线制中)。  首先、将/CS 拉至低电平。  接下来、传输2个16b 字或3个8b 字、以创建单个 SPI 帧。  数据传输完成后、将/CS 拉至高电平以完成帧。  如果您不需要全部18b、则可以传输前16b、当下一个转换结果可用时、剩余的2b 将丢失。

    我不建议通过再次拉高/CS 和拉低来发送2个 SPI 帧。  数据可能会被保留、但器件设计为不会在该模式下运行。

    此致、
    Keith Nicholas
    精密 ADC 应用

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Keith、

    感谢您的输入。  

    我能够通过两 个16位字传输读取数据。 显然、ARM 为 SPI 提供的"TI 模式"不一定适用于所有 TI ADC。 此外、我的第二个字中的14个 LSB (我需要忽略它、因为这是一个18位传输)大部分是 FFs、但并不总是如此。 我想、一旦我 通过上拉电阻器将 DOUT 连接到 VDD、就会对其进行排序。

    感谢你的帮助。

    Rgds、

    mj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、MJ、

    我很高兴听到你有这项工作。 大多数 TI ADC 遵循原始 SPI 标准、包括 ADS8883。

    是的、在 LSB 被发送后、DOUT 线路变为高阻态、您将读取最后一个14LSB 的随机数据。  如前所述、如果通过上拉电阻器将 DOUT 拉至 VDD、则应始终读取14LSB 的 FF。

    此致、
    Keith