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.

[参考译文] AM2732-Q1:使用 McASP 以960kS/s 的速度与 ADC 和 DAC 控制器通信

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1477873/am2732-q1-using-the-mcasp-to-talk-to-an-adc-and-dac-controller-at-960ks-s

器件型号:AM2732-Q1
主题中讨论的其他器件:SysConfigAM2732、TAD5212、TAC5212

工具与软件:

我正在尝试配置一个 McASP 实例、以与以960kS/s、16位样本运行的 ADC 和 DAC 连接。  每个方向有两个外部通道、因此每16位有一个帧。  这些器件需要每次采样都有一个触发器(假设是帧同步)。  我将在 CCS 的 SysConfig 中执行此操作。

问题1是、我无法将时隙计数配置为1、这正是我所需要的。

问题2:如果我将发送帧同步速率设置为自定义并将帧速率设置为960kHz、那么在"发送主时钟速率:AHCLKX"超出范围时会出现一个错误。  我需要能够将传输主时钟速率设置为帧同步速率的16倍。

请查看图11-349。 发送时钟发生器方框图、这应该是可实现的。

我在做什么错?

谢谢!

-Corey

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

    Corey、您好!  

    您能否分享您正在使用的 ADC 和 DAC? 960kS/s 不是标准音频时钟速率、因此我想了解更多详细信息。

    通常、在大多数音频应用中、帧同步频率是48kHz 的倍数、并且不会超过192kHz。

    您能否分享有关预期音频帧格式的更多详细信息?

    • 音频帧 TDM、I2S 还是其他格式? 如果是 TDM、则每帧需要多少个音频时隙?
      • 您提到您只需要一个插槽、这是预期吗? 对于音频应用而言、一帧中仅发送一个音频时隙是一种不典型的现象。  
    • 音频位时钟和帧同步频率将反映预期的帧格式。 您系统中的预期位时钟和帧同步频率是多少?

    此致

    Erik

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

    感谢您的答复。

    我不会将其用于音频、而是用于用于 I/Q 传输和接收的无线电应用。  我需要锁步处理器和 DSP、AM2732芯片似乎是理想的。  麦克 ASP 看起来是可行的,但正如他们所说,魔鬼是在细节。

    关于计时、我想我知道发生了什么。  我需要15,360,000位时钟、该时钟不会被480MHz 分频。  似乎我需要使用外部时钟源或设法以正确的速率获得内部时钟。  960kS/s 不是硬性要求、它可以以937.5kS/s 的速率运行、这平均分为480MHz。  但 SysConfig 不会接受、尽管它看起来是可行的。  我在 systemconf 中获得的最快速度是375kS/s。  是否达到了其他一些限制?  我在 TRM 中找不到它。

    看一下 TRM 中的时钟文档真的很令人困惑。  在时钟部分、它列出了 McASP 的6个时钟:RCSS_MCASP_REF _CLK、其中 为0-5。  我不知道它们是如何用于 McASP AUXCLK 的(也没有文档记录)。  我想 REF 时钟可能是 McASP 中每个接收和发送部分的 AUXCLK、但这只是个猜测、我不知道映射。  请查看 RCSS_MCASP_REF _CLK 值时、有一个 WUCPUCLOCK (无文档记录)、RCSS_ATL_CLKOUT (有记录的内容、但我不知道是什么驱动了它)。  我希望避免使用外部时钟、这还需要处理一件事、但可行。

    我目前正在为 ADC 寻找一个模拟 AD4680 (两个 ADC、一个封装)、为 DAC 寻找两个 AD5541、尽管这并不是一个石头设置的。  我需要流水线同步采样器件;TI 找不到任何看起来合适的器件。  所有内容都没有流水线;在进行转换时不能传输数据。  或者它是非常大的(太贵)。

    两个器件的格式基本相同。  您有一个位时钟和一个时钟同步(CS)。  对于 DAC、当 CS 变为高电平到低电平时、您将数据移入移位寄存器、当完成该操作后、CS 上的一个低电平到高电平转换会将移位寄存器传输到 DAC 寄存器。  然后 CS 再次变为低电平、将下一个值传输到移位寄存器中。  对于 ADC、CS 从高电平转换到低电平会启动一个转换。  然后、CS 变为高电平将转换转移到移位寄存器、而 CS 变为低电平将启动新的转换并开始将数据移出移位寄存器。  请注意、这是我想要的*恰好*。

    由于这两种方式都有两个器件、因此我将使用 AM2732的两个独立输入和两个独立输出。  每一帧将传输一个样本。  可以为 ADC 在一条线上同时传输两个样本、这将使位时钟速率加倍至30,720,000。  我可能也可以在发送端执行此操作、但我需要新的 DAC 器件或一些外部逻辑。  如果您配置了两个串行器、这是否计为两个插槽?  或者每个串行器上是否有两个插槽?  我可以配置8位插槽、如果我将事情安排得正确、两个插槽的结果将是单个16位值。

    希望这有助于解释各种内容。

    -Corey

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

    我已经学习了有关 McASP 和时钟的 TRM 部分、但我没有得到任何解决方案。

    我可以看到2个插槽的限制。  您会说、"音频应用在一个帧中仅发送一个音频时隙是一种不典型的现象"、但电信行业中有一些应用会这样做。  单声道是一回事。  而将该芯片限制在音频应用领域似乎局限于设备的用处。  我认为它可以轻松应用于音频之外的许多领域。  我们将该芯片宣传为能够与 ADC 和 DAC 器件通信、如果您在立体声应用中让两个独立的器件左右操作、则将采用单槽配置。

    在数据速率方面、我要指出的是、TI 的音频编解码器支持384k 和768k 的采样率。  我会使用其中的一个、只不过它们的前端好像有一个96k 的滤波器、并且可能无法在直流到直流(我需要用于 I/O Q)下工作

    我不知道所有时钟都来自何处以及如何选择 AM2732。  相同的时钟使用了不同的名称、似乎到处都是 TRM 和数据表、其中许多似乎没有文档记载或没有文档记载。

    我看不到主时钟的限制是 SysConfig 所需帧同步的128/256/512/1024的倍数。  嗯、S/PDIF 案例中提到128个、但在这里提到、这种情况是有道理的。

    另外、我不知道如何在 SysConfig 中为 McASP 设置时钟源。  我想它可以有不同的内部时钟源、虽然正如我所说的、这会让人困惑、但我看不出设置它们的方法。

    总之、我对某个应用处于探索模式。  我挑选了一些东西、我将深入介绍细节以确保它们正常工作。  AM2732解决了很多问题、我非常乐意使用它。  我们将 TMS570锁步处理器芯片用于其他应用、这对我们服务非常好。  现在、我们正在考虑使用 DSP 代替外部无线电芯片、以便我们拥有更大的灵活性。

    谢谢!

    -Corey

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

    Corey、  

    McASP 用于标准化音频协议(如 TDM 或 I2S)定义的音频数据传输。  

    您回复中提到的器件不需要 McASP 进行串行数据传输、因为它们不会发送/接收音频帧。  

    上述部件使用标准 SPI、AM273x 的 MIBSPI 模块可 用于连接。

    在本例中、CS 指的是 芯片选择 而不是时钟同步、是一个低电平有效信号、表示 SPI 事务将用于该指定的目标。

    对于指定的应用、不应考虑将 McASP 用于该应用。 如果您有任何其他问题、敬请告知。

    此致、

    Erik   

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

    > McASP 用于标准音频协议(如 TDM 或 I2S)定义的音频数据传输。  

    TRM 第11.5.1.1节指出:

    • 能无缝连接到音频模数转换器(ADC)、数模转换器(DAC)、编解码器、数字音频接口接收器(DIR)以及 S/PDIF 发送物理层元件。
    • 多种 I2S 及相似的位流格式。

    显然、它的用途不仅仅限于 I2S 和 TDM。  它可与哪些 ADC 和 DAC 器件配合使用?

    >回复中提到的部件不需要 McASP 进行串行数据传输,因为它们不会发送/接收音频帧。  

    >上述部件使用标准 SPI、AM273x 的 MIBSPI 模块可 用于连接。

    我很确定这是不能实现的。  我需要精确定时往返于 ADC/DAC 的帧、就像得到帧同步一样。  我认为 SPI 接口无法实现这一点。

    > CS 在本例中指的是 芯片选择 而不是时钟同步、是一个低电平有效信号、表示 SPI 事务将用于该指定的目标。

    我知道这一点、但在我提到过的 ADC 和 DAC 上、它们不仅仅执行芯片选择功能。  它们还同步驱动转换并传输到串行寄存器。  我不期望您读取这些器件的规范、但这些器件会执行帧同步的功能、即使它们被称为芯片选择、提示是 SPI。

    >对于指定的应用程序、不应考虑将 McASP 用于该应用程序。 如果您有任何其他问题、敬请告知。

    这有点令人失望。  假设我可以使用外部逻辑转换为 I2S 接口、我可以这样做。  AM2732解决了足够多的问题、因此或许有必要放一个较小的 FPGA 或其他东西来传入数据。

    首先、您能提出其他合适的建议吗?

    其次、如果我可以将数据转换为 I2C 或 TDM 格式、我仍然有以下问题:

    • 我看不到主时钟(AHCLKX)的限制是 SysConfig 所需帧同步的128/256/512/1024的倍数。  这是真正必需的吗?  我在 TRM 中找不到它。  嗯、S/PDIF 案例中提到128个、但在这里提到、这种情况是有道理的。
    • 另外、我不知道如何在 SysConfig 中为 McASP 设置时钟源。  我想它可能有不同的内部时钟源、虽然正如我所说、这很令人困惑、但我无法在 SysConfig 中设置它们、并且大多数时钟源大多没有文档记载且名称不一致。  TRM 中的时钟源真的很难理解。  不过、我可以使用外部时钟、但前面关于 AHCLKX 的问题仍然有效。

    AM2732的文档似乎没有达到 TI 的正常标准。  我已经查看过其他芯片、所以文档效果要好得多。

    谢谢!

    -Corey

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

    Corey、

    无缝连接至音频模数转换器(ADC)、数模转换器(DAC)、编解码器、数字音频接口接收器(DIR)以及 S/PDIF 传输物理层组件。

    所有上述器件使用  串行音频数据输出格式 例如 I2S、TDM 和左平衡。  

    显然、它的用途不仅仅是 I2S 和 TDM。  它可以与哪些 ADC 和 DAC 器件配合使用?[/QUOT]

    多通道音频串行端口旨在与 PCM6240或 TAD5212等音频 ADC 和 DAC 器件配合使用。  

    我很确定它不能。  我需要精确定时往返于 ADC/DAC 的帧、就像得到帧同步一样。  我认为 SPI 接口无法做到这一点。

    您能不能详细说明 SPI 模块的哪些限制使其不能用于此应用?  

    [报价 userid="63838384" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1477873/am2732-q1-using-the-mcasp-to-talk-to-an-adc-and-dac-controller-at-960ks-s/5676144 #5676144"]我看不到主时钟(AHCLKX)的限制是 SysConfig 所需帧同步的128/256/512/1024的倍数。  这是真正必需的吗?  我在 TRM 中找不到它。  嗯、S/PDIF 中有一个提到128、但就在那里、这种说法是有道理的。[/quote]

    这是标准音频帧格式的细微差别。 FS 标记一个帧的开始并且位时钟根据帧格式被设置。  

    例如、I2S 或 TDM2是音频数据的两个时隙。 如果数据为16位字且帧同步为48kHz、则位时钟将为48000*2*16=  1.536 MHz。 位时钟(ACLK)源自 AHCLK、如上所述、它被限制为帧同步的倍数。 对于不同的 ACLK、对 AHCLK 除以一个不同的值没有限制。 驱动程序根据设置的帧同步值和 AHCLK 值、按照时隙大小和字宽设置所有分频器。  

    McASP 可以利用 AUXCLK 为 AHCLK 和随后的 ACLK/ACLK 的根时钟选择不同的值 FS。 有关所有 McASP 主题的更多信息、请参阅 McASP 设计指南。  

    此致、

    Erik

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

    感谢您的答复。

    我很确定这是不能实现的。  我需要精确定时往返于 ADC/DAC 的帧、就像得到帧同步一样。  我认为 SPI 接口无法实现这一点。

    您能不能详细说明 SPI 模块的哪些限制使其不能用于此应用?

    我需要来自两个 DAC 和两个 ADC 的精确定时同步输入和输出。  例如、在 ADC 上、我需要在完全相同的时间采集两个分别来自一个 ADC 的样本。  连续采样之间的抖动必须非常低。  二者都需要亚纳秒级精度。  要使用 SPI 器件、我必须以某种方式通用外部帧同步、然后以某种方式将其与来自 McASP 的帧同步相结合。  在这些器件上、CS 是采样逻辑的一部分。  DAC 上有一个外部采样引脚选项、但仍然需要以某种方式与 CS 进行协调。

    我实际上需要一位帧同步。  这些 ADC 和 DAC 器件都是按这种方式工作的。

    我看不到主时钟(AHCLKX)的限制是 SysConfig 所需帧同步的128/256/512/1024的倍数。  这是真正必需的吗?  我在 TRM 中找不到它。  嗯、S/PDIF 案例中提到128个、但在这里提到、这种情况是有道理的。

    这是标准音频帧格式的细微差别。 FS 标记一个帧的开始并且位时钟根据帧格式被设置。  

    例如、I2S 或 TDM2是音频数据的两个时隙。 如果数据为16位字且帧同步为48kHz、则位时钟将为48000*2*16=  1.536 MHz。 位时钟(ACLK)源自 AHCLK、如上所述、它被限制为帧同步的倍数。 对于不同的 ACLK、对 AHCLK 除以一个不同的值没有限制。 驱动程序根据设置的帧同步值和 AHCLK 值、按照时隙大小和字宽设置所有分频器。  

    啊。  您在下面提到的 McASP 设计指南中(非常有用)、我看到:

    主时钟通常需要以采样率(fs:128fs、256fs 或512fs)的倍数运行、
    (音频设备的设备特定数据手册将告诉您应该使用哪一种数据)。

    因此、它实际上更像是编解码器的函数、而不是 McASP 的函数。  在 AFAICT 中、McASP 中没有任何东西会使用 AHCLK 进行任何操作、但在该引脚上发送它并生成 ACLK 除外。

    McASP 可以利用 AUXCLK 为 AHCLK 和随后的 ACLK/ACLK 的根时钟选择不同的值 FS。

    是的、McASP 内部的时钟非常清晰。  问题是:AUXCLK 来自哪里?  AM2732 TRM 的 McASP 部分没有提及它。  没有任何东西能说明它的来源。

    在 TRM 的时钟部分、可以看到表6-1680。 配置选项、并且这是从 RCSS_MCASP_REF0_CLK 到 RCSS_MCASP_Ref5_CLK。  我会假设这些是 AUXCLK、但我不知道如何将它们与不同的 McASP 单元 RECV 和 Xmit 器件相关联。  这些时钟的时钟源包括:WUCPUCLK、RCSS_ATL_CLKOUT0、RCSS_ATL_CLKOUT1、RCSS_ATL_CLKOUT2、RCSS_ATL_CLKOUT3、 RCCLK10M、XREF_CLK0、XREF_CLK1未详细介绍。

    有关所有 McASP 主题的更多信息、请参阅 McASP 设计指南

    谢谢、非常有帮助。

    -Corey

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

    Corey、  

    您能否确认适用于您的应用的位时钟和帧同步频率?  

    此致、

    Erik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否确认适用于您应用的预期位时钟和帧同步频率?

    这实际上更像是一件探索性的事情。  我希望了解在预算和空间受限的情况下、使用扩展工业温度(-40°C 至105°C 或更高)的器件可以实现哪些目标。  在该范围内、我希望每秒拥有大约100万个样本。  960只是48的很好的倍数。  对于16位样本、1Ms/s 将是1MHz 帧同步和16MHz 位时钟、每个方向两个单独的通道。  或者每个方向有一个通道(两个通道多路复用)、一个32MHz 位时钟。

    目前我们有一个应用正在使用外部 FSK 芯片进行通信、 我们有4个接收器和1个发送器。  我们希望转向更高级的调制技术、但这需要信号处理、而这是您无法在芯片中购买到的(并且我们正在使用的芯片已停产)。  因此、DSP 或 FPGA 连接到带锁步控制处理器的无线电前端。

    我们可以达到的最低要求约为100kHz 带宽。  我最初从 TAC5212编解码器开始、它可以轻松连接到 AM2732。  您可以使用 I/Q 调制从带宽中获得大约200kHz 的带宽、不同之处在于您在频谱中间大约-20Hz 到20Hz 之间会有一个空洞。  而更大的带宽将提高系统的灵活性、从而使其可以处理更多的事情。

    在学习完 ADC 和 DAC 之后、我想你对 ADC 说得对、它不会按原样工作、尽管我不确定这两种方式。  我认为 DAC 可以正常工作、但仍无法100%确定。  因此可能必须添加某种前端逻辑以适应所使用的任何 ADC 和 DAC。  但是添加某种可编程逻辑器件仍然需要更多的空间、我想此时会有太多的空间。  可能需要等待更大的带宽来支持后续工程。

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

    我想结束这件事、我真的很想知道:

    从 McASP 的角度来看、AHCLKx 时钟是否需要为 AFSx 速率的128,256或512 (或每个 SysConfig 为1024)倍?  SysConfig 工具强制执行了这一点、但我查找的编解码器似乎不需要它。

    McASP 是否在内部使用 AHCLKx?  如果我为 ACLKx 和 AFSx 提供外部时钟、我是否也必须提供 AHCLKx?

    谢谢!

    -Corey

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

    实际上、要回答我自己的问题、请参阅 McASP 文档的第2.3节"时钟引脚:

    AHCLKX 和 AHCLKR–这些是高频时钟引脚、有时称为主器件
    时钟(在音频编解码器上通常称为 MCLK)。 McASP 将主时钟用于一个用途:To
    分频并生成位时钟。 在有些情况下、不需要主时钟。

    是这样吗?

    假设这是正确的、SysConfig 中的 AFSx 倍数无效。  如果 SysConfig 没有该限制则会很好。

    -Corey

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

    Corey、

    AHCLK 是 FS 的一个功能、该功能旨在实现。 该驱动器根据 FS 和 AHCLK 之间的关系设置从 AHCLK 到位时钟的分频器。 但是、可以手动调整位时钟的分频器、以获得更大的灵活性。  

    音频应用不需要 AHCLK。 对于 AM273x、AHCLK 既可以配置为输出、以便为外部元件提供系统时钟(MCLK)、也可以配置为输入、在该输入中提供外部 MCLK 来对位时钟进行分频。 如果系统中不需要 MCLK 输出、则可以使用内部时钟基准、并且只有位时钟和帧同步用于数据帧传输。  

    此致、

    Erik

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

    好的、我想我在这里有我需要的所有信息。  嗯、这里没有 AM2732上所有时钟的说明、并且手册中不可解密、但我可以接受一切的默认值。