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.

[参考译文] TMS320F28379D:与 TMS320F28379D 的 UPP 和 I2C 外设相关的查询

Guru**** 2508435 points
Other Parts Discussed in Thread: ADC3910D125EVM, TMS320F28379D, C2000WARE, ADC3908D025

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1523435/tms320f28379d-queries-related-to-upp-and-i2c-peripherals-of-tms320f28379d

部件号:TMS320F28379D
主题中讨论的其他器件: C2000WAREADC3908D025、ADC3910D125EVM

工具/软件:

您好团队:

我使用 的是 TMS320F28379D 微控制器、在尝试启动 UPP 和 I2C 外设时遇到了一些问题。 如果您能帮助我理解这些内容、那将会很棒。

uPP:

我从 Resource Explorer 中的以下路径下载了 UPP 上的示例代码:

C2000 实时微控制器/嵌入式软件/C2000Ware (5.04.00.00)/English/Devices/F2837XD/F28379D/Examples/Driverlib/cpu1/upp

对于接收器端示例、

1.  为什么在 EOL 中断中更新 UPP 窗口描述符,而不是在 ISR 中更新 EOW 中断?

2.在条件的 else 部分 (eowcount%2) 的描述符中修改起始地址的逻辑与 RxMSGRAM 的填充方式不同。 请参阅下面的屏幕截图、我摘自示例代码。 根据我的理解,它应该是相同的。 您能对此做一点澄清吗?

I2C:

1. 根据用户手册、第 2349 页的流程图中的 I2C 从器件发送模式不使用 NACK。 但是、从器件应使用 NACK 位来决定是否发送更多数据。 从设备如何知道主设备已停止接收或不需要更多数据?  您能对此做一点澄清吗?  

2.在非中断接收模式下(主/从),如果使用 FIFO ,我应该从哪里读取字节数组? 根据手册、是否要从 I2CDRR 寄存器读取? 我尝试循环中从该寄存器读取、但多次获得相同的随机数据。 因为我使用了 FIFO、所以没有轮询状态寄存器的 RRDY 位。 那么、在使用 FIFO 时是否也需要轮询 RRDY 位?
感谢你的帮助。
此致、
Bhargav Sakia.

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

    您好:

    uPP 专家目前在未来几周不在办公室、因此请期待您的问题得到延迟的答复。

    此致、

    Delaney

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

    尊敬的 Bhargav:

    关于 I2C 问题、请参阅以下内容:

    1.当控制器发送 NACK/STOP 条件时(参见第 20.3.11 章 Nack Generation )

    2. I2C DRR 寄存器。 使用 FIFO 时不应轮询 RRDY、请改用 FIFO 中断 (RXFFINT)。  I2CFFRX 中的 RXFFST 位可用于监控 FIFO 级别

    此致、

    Aishwarya

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

    尊敬的 Aishwarya:

    1.我已经阅读并理解了 参见第 20.3.11 章 Nack Generation 一节。 根据我的理解、本节仅介绍 接收器模式 (主器件/从器件)、在这种情况下、它必须生成 ACK 或 NACK 位。 我的问题与之相关 发送器模式和从器件配置中 、其中它无法控制 ACK/NACK 位、但它从主设备接收 ACK/NACK 位、并决定是继续传输数据(在接收到 ACK 时)还是停止传输数据(在接收到 NACK 时)。 但是、在流程图中未使用 NACK、因此、在我的程序中如何决定何时停止传输数据?

    2.实际上 我的问题是关于何时 无中断 已使用、但是 FIFO 我是否仍需要轮询 状态寄存器的 RRDY 位。

    3.在中断模式下,我实际上能够使它工作,但有一个不同的问题。  如果我在 syscfg 工具中启用 FIFO 中断、则会触发 FIFO 中断、但如果没有在 syscfg 工具中启用 FIFO 中断、并在我的发送数据 API 中启用 FIFO 中断、则会触发 FIFO 中断 不会 差分通道。 因此、我正在将 FIFO 填充到我的中 TRANSMIT_DATA API 而不是在 FIFO 的 ISR 中。 我最初必须在 syscfg 工具中保持禁用中断、因为如果没有启用中断、然后才能输入中的 FIFO  TRANSMIT_DATA API  因此 FIFO 当时为空。  我只想在中启用中断  TRANSMIT_DATA API  但如果我这么做、FIFO ISR 就不会被触发。 我确信我在做一些错误的事情、但无法精确定位。 因为,它是工作的其他,我感到沮丧,并决定放弃它。 如果您有任何想法、请告诉我可能有什么问题。 并且即使我在 API 中而不是在 SYSCFGf 工具中启用中断、从器件配置和 FIFO 也没有这样的问题。  在我的代码中、我包含了以下代码行、如示例代码所示:

    ...
    ...
    //
    //函数原型
    //
    __ interrupt void i2cAISR (void);
    __ interrupt void i2cAFIFOISR (void);
    ...
    ...
    void main (void)
    ...
    ...
      设备初始化 ();

      device_initGPIO()

      interrupt_initModule()

      Interrupt_initVectorTable()

      BOARD_INIT ();

      C2000Ware_libraries_init()

      INTERRUPT_REGISTER (INT_I2CA、&i2cAISR);
      INTERRUPT_REGISTER (INT_I2CA_FIFO、&i2cAFIFOISR);

      INTERRUPT_ENABLE (INT_I2CA);
      INTERRUPT_ENABLE (INT_I2CA_FIFO);

      I2C_disableInterrupt (I2C_Master_base、I2C_INT_NO_ACK | I2C_INT_REG_ACCESS_RDY | I2C_INT_STOP_Condition | I2C_INT_TXFF | I2C_INT_RXFF);
      
      EINT;
      ERTM;
      while (1)
      {
      ...
      ...
      }
    }
    void I2C_TRANSMIT_dataArray (uint32_t base、uint8_t targetAddr、uint8_t rpStart)
    ...  
    ...
    //填充 FIFO
    I2C_enableInterrupt (I2C_Master_base、I2C_INT_NO_ACK | I2C_INT_REG_ACCESS_RDY | I2C_INT_STOP_Condition | I2C_INT_TXFF);

      
    I2C_sendStartCondition (I2C_Master_base);
    }
     __ interrupt void i2cAISR (void)
    ...
    ...
    }
    __中断 void i2cAFIFOISR (void)
    //在这里不做任何事情
    }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    没问题。 谢谢你。 我将等待响应。

    谢谢。此致、

    Bhargav

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

    Bhargav、

    以下是一些说明:

    1.抱歉,我链接了错误的部分。 NACK 由接收器设备发送、因此在您的情况下、控制器 将确认数据。 目标应根据 FIFO 深度(请参阅 TXFFT.TXFFIL) 以及从控制器接收到 NACK 时停止传输数据。  有关更多详细信息、请参阅 C2000WARE 软件示例。 即使您不使用中断、也仍然需要利用寄存器中设置的标志。

    2.不、即使在非中断模式下、RRDY 位也是如此 不会 需要轮询、您可以使用 while 循环来轮询此位、而不是  TRM 中提到的中断。

    3.应在模块被禁用时进行配置,以确保正确的中断传播、操作等 在 API 中启用该功能时、I2C 模块已处于活动状态、因此在启用/触发中断和开始传输之间可能存在一些同步问题。

    此致、

    Aishwarya

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

    尊敬的 Aishwarya:

    感谢您的澄清。 我将尝试执行这些步骤并再次执行。

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

    Bhargav、

    对于 UPP 问题、我们可以使用此线程或创建新线程。 请告诉我您喜欢什么。

    此致、

    Aishwarya

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

    尊敬的 Aishwarya:

    我更愿意对 UPP 相关查询使用同一线程。

    谢谢您、

    Bhargav Sakia.

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

    Bhargav、

    听起来不错,让我保持这个主题开放,专家会在他们回到办公室时作出回应。

    此致、

    Aishwarya

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

    尊敬的 Bhargav:

    很抱歉晚才回复。  

    2. 在条件的 else 部分 (eowcount%2) 的描述符中修改起始地址的逻辑与 RxMSGRAM 的填充方式不同。 请参阅下面的屏幕截图、我摘自示例代码。 根据我的理解,它应该是相同的。 您能否对此进行一些澄清?

    这源于寻址模式(字节与 16 位)。  

    此致、

    Vivek Singh

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

    您好、Vivek、

    感谢您的解释。 我现在明白了。 我已下载 Resource Explorer 上提供的 UPP 示例代码。 它们在连接控制信号(即 WAIT、ENA 和 START)时能够正常工作。 实际上、即使没有两个控制信号(即等待和启动)、它们也能正常工作。  但是、当 ENA 被禁用并产生问题时、它无法工作。

    我一直在研究 TMS320F2837xD 的 UPP 外设、这是我们工程中最重要的外设。 我们使用 UPP 从外部 ADC (ADC3908D025) 接收数据。 遗憾的是、ADC 没有 ENA 信号输出。 因此、UPP 在没有 ENA 信号的情况下工作非常重要。 我们目前无法使用 ADC 进行测试。 和组装的晶体振荡器。 因此、为了进行测试、我使用了两个带有控制卡的集线站以及从一个控制卡的 UPP 外设到另一个控制卡的 UPP 外设的已连接跳线。 我已在 UPP 上下载示例工程、该工程可在 Resource Explorer 上获取。 但遗憾的是、没有没有没有 ENA 信号的 UPP 示例项目。 因此、为了禁用 ENA、我刚刚修改了示例代码以禁用接收器侧的使能信号。 我已将 TX 编程为一组、将 RX 编程为 另一组。
     
    在随附的文字文件中、 我通过查看存储器内容列出了我尝试过的内容以及观察到的内容。
    总之、这是我们需要支持的两个最重要的问题。
    1. 为什么在第一个事务中丢失了一行数据? 因此 eowCount 不会增加。
    2. 在第二个事务中、将接收剩余的字节、窗口完成、并触发中断。 但是、即使在清除所有中断标志、清除全局中断并禁用所有中断后、为什么即使没有发送数据、也会触发连续中断? 这时、在 while (1) 循环的下一次迭代中重新启用中断并启用模块。

    我们已经尝试了很多事情,并且自过去两周以来一直在调试这件事,没有任何关于正在发生的事情的线索。 如果没有 UPP 正常工作、项目将无法继续、因此我们非常感谢您对解决此问题有一些见解或帮助。

    非常感谢您的支持、

    Bhargav Sakia.

    e2e.ti.com/.../UPP-issues-without-ENA-signal.docx

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

    Bhargav、

    该器件上的 uPP 适用于非常具体的用例、它在我们的任何其他器件上都不可用、因此我们建议用户不要使用它、除非他们有完全兼容的器件可连接。 对于 ADC、我们有更适合的 SPI 接口。 我不确定您的团队在项目开发阶段的哪个阶段、但如果可能、我建议将此界面更改为其他界面、因为未来存在可移植性问题。

    回到这个问题 — 我们需要分析您的结果并返回给您。 您可以发送 TX 和 RX CCS 工程吗?

    此致、

    Vivek Singh

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

    您好、Vivek、

    我提到的 ADC 器件没有 SPI。 此外、我们要求的采样率为 25M 个样本/秒 通过 SPI 或串行无法实现每秒 25M 字节、因此我们决定使用并行接口。 此外、该参考手册还指出 UPP 广泛用于许多器件和许多 ADC(随附屏幕截图)。 但无论如何、当我们尝试从一个控制卡的 UPP 与另一个控制卡的 UPP 进行通信、但没有 ENA 信号时、就会出现问题。 这应该是正确的吗? 我分享了以下内容:

    1.从 Resource Explorer 下载的原始 UPP 工程 (TX 和 RX)。

    2.试用 UPP 项目(在那里我做了一些改变,如减少 bytecount、linecount。 窗口计数、降低时钟速度、为连续接收设置 while 循环等)

    我已经将它们压缩到一个文件夹中。

    这是压缩文件夹。

    e2e.ti.com/.../UPP_5F00_e2e.zip

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

    您好、Vivek、

    它已经将近一个星期了。 你有什么问题的线索? 这对项目来说有点紧迫。

    谢谢、

    Bhargav。

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

    Bhargav、

    很抱歉延迟、但我们没有您提到的配置示例、因此没有此延迟。 我们将在 1-2 天内回复您。

    Vivek Singh

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

    尊敬的 Bhargav:

    我 ︎ 这是与您的其他线程相同的工程:(+) TMS320F28379D:CPU Timer0 无法生成超过 1.26MHz 的频率 — C2000 微控制器论坛 — C2000Tm μ 微控制器 — TI E2E 支持论坛

    您是否能够在 GPIO 工作的情况下实现此 uPP 手动实现? 请更新此工作的状态。 如果它起作用、我建议使用相同的方法来连接外部 ADC、因为 正如 Vivek 提到的、建议避免使用 uPP。 这是为了避免生产线上出现兼容性问题(因为不再有未来的 C2000 器件会有 uPP)、还因为这是一个相当旧的外设、TI 更难在内部支持(这意味着需要更长时间)。 请告诉我 GPIO 替代方案是否起作用。  

    此外、为了进行确认、是否回答了您的所有 I2C 外设问题和 CLA 问题?

    此致、

    Delaney

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

    尊敬的 Delaney:

    是、这是同一个项目。 我们仍然面临着 UPP 的问题。 我们建议订购 ADC 的评估板并使用该板测试 UPP、而不是从一张控制卡上的 UPP 到其他控制卡的 UPP 进行测试。 我们已启动该流程或采购评估板。 一旦到达、我们需要进一步测试、希望它可以在没有 ENA 信号的情况下工作、或者如果没有该信号、我们计划使用 GPIO 作为 ENA 并在将采样时钟输入提供给 ADC 之前使其处于活动状态。 我们手动使用的 8 个 GPIO 用于以 25MSPS 的速率驱动 DAC。 这将驱动发送器。 ADC 将以 25MSPS 的速率对从接收器接收到的信号进行采样、我们使用 UPP 从 ADC 读取数据。 因此、使用 GPIO 读取 ADC 会很困难。 如果您不建议使用 UPP、您是否建议使用任何其他外设在 25MSPS 时读取 ADC? 我们将非常感谢您的意见。

    关于 I2C、是的、所有查询均已解决、我们能够正常使用。 我已经尝试将 CLA 与我的 FreeRTOS 工程连接、但存在一些问题。 我们正在评估实际上是否需要 CLA 的选项、因此需要一些时间来尝试提供的建议。 虽然需要进行一些数学计算、但现有项目使用的是 F2810、因此我们认为我们可能不需要 CLA。

    感谢您的支持、

    Bhargav Sakia.

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

    尊敬的 Bhargav:

    我明白了、感谢您的更新。 我同意、使用 ADC 评估板而不是 controlCARD 进行测试是一个好主意。 根据我的理解、EMIF 外设可能是代替 uPP 的可能解决方案。 我再深入研究一下、将咨询 EMIF 专家以了解它是否可与您的特定 ADC 搭配使用。 同时、我将测试您的 uPP 配置并查看我是否能够重现问题。 为此、请注意这需要一些时间。 如果我需要与我们的设计团队会面、几天内我可能无法获得解答。  感谢您的耐心。

    此致、

    Delaney

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

    嗨、Delaney、如果您可以评论 EMIF 是否可用于与 ADC 连接、那么会很棒。 但这是最坏的情况。 我们已经制作了硬件、并且正在进行组装、因此可能会有点晚、而且很难改变架构。 我们希望 UPP 能够与 ADC 评估板配合使用。 如果您已有可用的 ADC 评估板、能否使用 UPP 一次尝试? 我们已经订购了评估板,并已发货,但它可能需要几天的时间来联系我们,时间表非常紧张。 因此、如果您已有评估板、我请您使用评估板测试一次 UPP。 我之前还附上了一份工作文件、说明我尝试和观察的事情。 我已经把它重新附加了。

    e2e.ti.com/.../7725.UPP-issues-without-ENA-signal.docx

    谢谢您、

    Bhargav Sakia.

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

    尊敬的 Bhargav:

    我查看了它、很遗憾、在这种情况下我不相信 EMIF 可以轻松使用。 我无法获得 ADC3910D125EVM、因为负责这些任务的团队位于不同的办公室。 我将尝试使用两个 LaunchPad 来测试代码。

    此致、

    Delaney

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

    尊敬的 Delaney:

    感谢您澄清了 EMIF 接口和 UPP 上的支持。

    此致、

    Bhargav。

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

    尊敬的 Bhargov:

    在电子邮件主题中、提到 uPP 问题可能已解决? 您能否确认状态是什么?

    此致、

    Delaney

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

    尊敬的 Delaney:

    很遗憾、UPP 问题仍未解决。 我们预计很快会用到 ADC 评估板、我们将使用 UPP 接口对其进行测试、以在 25MSPS 的速率下读取数据。 会在测试后更新。

    谢谢您、

    Bhargav Sakia.

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

    尊敬的 Bhargov:

    好的、当您有更新时、请告诉我。

    此致、

    Delaney