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.

[参考译文] TMS320F28386D:有关并行数据处理的问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1331695/tms320f28386d-questions-about-parallel-data-processing

器件型号:TMS320F28386D
主题中讨论的其他器件: C2000WARESysConfig

你好。

我想问您一个关于如何将数据输入并行转换为序列的问题。

上图是 AFE5401 (TI ADC)的数据输出波形。

如图所示、信号从 D0到 D11引脚并行输出。

我想将其显示为串行信号、如 CH1 ~ CH4。

tms320f28386d 的 SYSCLK 是200 MHz、而 ADC 的 DCLK 输出(AFE5401)是1.5625 MHz。

最后、我想知道的是它是否可以作为程序在没有外部移位寄存器的情况下实施。

是否可以使用 GPIO 来实现它?  如果您告诉我实现它的各种方法、我将尝试一下。 如果您也可以提供示例、我将不胜感激。

我真希望我能得到帮助。

谢谢你。

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

    尊敬的 SON:

    为了使用 GPIO 高效实现这一点、F28386D 上必须有大约13个 GPIO。  其中12个应属于同一个端口。  端口的步长为32、因此端口 A 来自 GPIO0-31。  端口 B 来自 GPIO32-63等。  原因是通过端口读取来为多个通道读取 GPIO 数据值会更高效。  12个通道将用于数据引脚、最好是与数据引脚 D0-D11采用连续的 GPIO#序列、这样只需对端口读取结果进行位移/掩码即可提高数据操作速度。  最后一个通道将用于 DCLK、可以分配给任何端口。

    所有13个 GPIO 通道都将在 F28386D 上配置为输入。  分配 DCLK 通道、以在 DCLK 的上升沿触发外部中断。  请参阅 C2000Ware 示例 GPIO_ex3_interupt。  修改测试用例、这样在中断处理程序(示例中的 gpioInterruptHandler)中、添加函数 GPIO_readPortData ()以读取端口输出、然后对结果执行移位/屏蔽操作、并将该函数移动到存储器、以便稍后对 ADC 结果进行后处理。  您还需要将 D 引脚的数据通道配置为代码中的输入。

    希望这种方法对您有用。

    此致、

    约瑟夫

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

    感谢您的详细解释!  我有一种想做什么的感觉。

    最后、我想问大家几个问题。

    1. 如您所述、我是通过 GPIO C 端口中的12个引脚接收值。  我检查了是否不断读取该值。

    假设 ADC 输出的信号周期为6.25 MHz、那么这可能是一个愚蠢的问题、 我能否确保在6.25 MHz 的每个周期都读取该值?

    2.我想将我在 CPU1中读取的值传输到 CPU2并存储在数组中。 我想知道相关的例子在哪里?

    再次感谢您的详细回答。

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

    GPIO 能够以该速度生成切换和检测电平、但如果您不确定、可以添加另一个 GPIO 进行调试、仅用于在中断处理程序开始时切换、在处理程序结束时切换、 然后观察示波器中的切换情况。  切换速度应与另一个芯片的 DCLK 相同。

    数据传输有多种选择:

    1.) 您可以在 CPU2上运行所有 GPIO 读取和外部中断、但必须在 CPU1中配置 GPIO (请参阅 C28x_dual 下的 LED_Blinky 示例)。  这会将 ADC 读取任务从 CPU1释放。

    2.) 您可以使用 IPC (处理器间通信)通过消息 RAM 将数据从 CPU1传递到 CPU2。  请参阅 C28x_dual/IPC 下的示例。  

    3.) 您也可以使用 DMA、但要确保从 GPIO 处理的数据存储在 GS RAM 中、因此两个 CPU 都有访问权限。   第一个示例使用 SPI、但它演示了 在 CPU 之间触发 DMA 的概念。  您可以尝试 SysConfig 示例、

    此致、

    约瑟。

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

    非常感谢您的支持。 我将按照您所解释的那样尝试、如果我有任何其他问题、我将编写一个新主题。

    希望你今天过得开心。  谢谢你。