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.

[参考译文] CCS/TMS320F28035:尝试读取电路板提供的 GPIO、但不知道如何激活它们

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/929320/ccs-tms320f28035-trying-to-read-gpios-that-board-offers-but-don-t-know-how-to-activate-them

器件型号:TMS320F28035
主题中讨论的其他器件:TDC1000C2000WARETMDSDOCK28035TDC1000-C2000EVM

工具/软件:Code Composer Studio

我在 TX1引脚中将传感器连接到 TDC1000。 我在(TDC1000_C2000_EVM)软件上启动图形以读取 ToF (飞行时间)、这是将信号发送回传感器所需的时间。 如果可能、我希望能够在软件之外的其他位置读取该值。 板上还有一个 TMS320微控制器、该微控制器具有7个可连接到(GPIO0、GPIO1、GPIO3、GPIO7、GPIO30、 GPIO31、GPIO32、GPIO33)。 其中包括 PWM、ADC 转换器和 CAN 总线通信。 我想知道我是否可以获得有关如何激活这些 GPIO 的帮助、以便在其他地方读取或打印传感器测量值。

 

我发现、由于 XDS110 JTAG 调试探针、我需要尝试调试 TMS320F28035微控制器并将必要的 GPIO 翻转为输出、以便我可以将换能器的值输出到 tdc1000_C2000软件以外的其他位置。 我的笔记本电脑上安装了 code composer studio、但对如何使用它非常不熟悉。

 

我想知道我是否可以在 code composer 上指向正确的方向来更改必要的 GPIO 位、因为我不知道从哪里开始。 需要阅读的文档太多了、需要查看数百页、可能会让人感到有点不知所措。

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

    Colin、

    您必须编写代码。 您将需要大量的学习才能使其正常工作。 参加技术讲座、将向您介绍 C2000器件、并通过实验向您展示如何使用 Code Composer Studio。 它是为较旧版本编写的、但非常相似。

    Code Composer Studio 和 C2000入门:

    CCS 入门视频: https://www.youtube.com/watch?v=11lsNYW7zkw 

    F2803x 技术讲座: https://training.ti.com/c2000-f2803x-microcontroller-workshop?context=1137791-1137784

    F2803x 示例位于 C2000Ware:C2000ware 中

    GPIO 示例应有助于向您展示所需的内容。 可在此处找到它们: C:\ti\c2000\C2000Ware_3_02_00_00\device_support\f2802x\examples\structs

    祝您好运、
    Cody  

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

    Cody、  

    我已经稍微介绍了这个技术讲座以及一些您的视频、以便开始了解我要做的事情的代码。 我还查看了 GPIO 的示例代码。 我还没有测试过它、但希望您能在我朝着正确的方向前进时提出意见。 我正在尝试激活我可以连接的所有 GPIO。 我可以连接的引脚是 GPIO0、GPIO1、GPIO3、GPIO7、GPIO30、 GPIO31、GPIO32、GPIO33。 他们都有不同形式的交流、他们想知道您认为最好在其他地方向 Arduino 这样的内容进行阅读。  

    GPIO0 - ePWM1输出 A 输出

    GPIO1 - ePWM1输出 B 输出

    GPIO3 - ePWM2输出 B 输出

    GPIO7 - ePWM4输出 B 输出

    GPIO30 -无输出可用  

    GPIO31 - CANTXA - eCAN-A 发送输出

    GPIO32 - CANTXA - ADC 转换开始 B 输出

    GPIO33 - CANTXA - ADC 转换开始 B 输出

    其中一些可设置为不同的输出、可在以下位置找到: https://www.ti.com/lit/ug/sprui10/sprui10.pdf

    这是我到目前为止编写的代码片段。  

    是否可以一次性将它们读取为输出、还是需要单独测试它们?

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

    Colin、

    如果我非常诚实、我不知道以下陈述是什么意思。

    [引用 USER="Colin Murphy1"]我可以连接的引脚是 GPIO0、GPIO1、GPIO3、GPIO7、GPIO30、 GPIO31、GPIO32、GPIO33。 他们都有不同形式的交流、他们想知道您认为最好在其他地方向 Arduino 这样的内容进行阅读。  [/报价]

    既然您已经了解了 F28035器件、我假设您使用 TMDSDOCK28035 controlCARD 进行原型设计。 与您所说的相比、它可以访问更多的引脚。

    请注意、我们的 GPIO 有3种主要功能模式。

      1. 输入:将通用信息输入到器件中
      2. 输出:从器件发送通用信息。
      3. 外设功能: 从 外设(PWM、CAP、CAN 等)中获取或发送进出器件的信息  

    关于您的" Arduino 这样的东西"注释:Arduino 的核心是功能有限且价格低廉的微控制器。 C2000是其更强大的版本。 区别在于 Arduino 已抽象化了微控制器操作的所有技术方面。

    请参考数据表而非外设功能的 TRM (信号说明部分): https://www.ti.com/lit/gpn/tms320f28035

    您的代码片段丢失。

    [引用用户="Colin Murphy1"]是否可以一次性将其作为输出读取,或者我是否需要单独测试它们?

    您通常会"读取输入"和"写入输出"这两个语句、我对此有点困惑。 输出可以成组写入,输出组在“回电容器”中聚集。 查看 GPxDAT、其中 x 表示许多字母 a、b、c 中的一个。

    如果您确实想要像当前输出的那样读取输出、则可以通过读取相同的寄存器来实现。

    此致、
    Cody

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

    Cody、  

    我随附了一个 PDF、它更好地描述了我正在处理的内容。 它有一些图片、这些图片自上次我的图片未上传以来会有所帮助。  

    感谢您的帮助

    -科林

    e2e.ti.com/.../TMS320-Forum.pdf

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

    Colin、

    啊、您正在使用 TDC1000-C2000EVM! 这是为液位感应而设计的。

    阅读随附的 PDF:

    1. 您似乎已经正确配置了一些输出。
    2. XDS110可用于对该套件进行编程。
    3. 我不知道您为什么要与 Arduino 进行通信、而您可以使用功能齐全的 F28035进行您所需的任何操作。
    4. 我认为、自我查看 Auduino 代码以来已经将近十年了、但我认为、您所谈论的"我们"值就是他们测量脉冲持续时间的方式。
    1. 如果您想将数据编码为一个看起来相当合理的固定频率可变脉宽信号、有一百万种方法可以将数据从一个器件传送到下一个器件。 我建议您考虑使用 PWM 来实现这一点。
    2. 如果您设置 GPIO、只需将 GPIO 设置为高电平并将 GPIO 设置为低电平即可。 您不能给它一个命令来说"保持高电平10美元"。 话虽如此,您当然可以将该引脚设置为高电平,等待10us,然后将该引脚设置为低电平。 从根本上说、这实际上就是 Arduino 所做的工作、它采用简单的高级代码、并将其分解为操纵硬件以执行您想要的操作。

    此外、我想提醒您、作为免责声明的一部分、我们的所有 EVM 都不适用于任何最终应用。 这些功能旨在实现原型设计、可在任何时候停止使用、因此围绕该功能设计系统可能不是最佳主意。

    此致、
    Cody

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

    Cody、  

    是否有与  TDC1000-C2000EVM 具有类似应用 的器件、该器件不是 EVM、可用于最终应用?

    我们使用该板来检测通过金属在一定水平上积聚的沙子。  

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

    Colin、

    提供了设计文件、您可以将其用作您自己定制设计的起点。  在该设计中、您可以调整或推出您希望的任何额外引脚。

    TI 作为组件制造商的这一天结束时、我们不提供终端应用套件、而是提供用于实现组件原型设计的评估模块。 我们希望客户使用我们的组件而不是 EVM 来设计系统。

    虽然我不认为此 EVM 很快就会停产、但我们保留在发现合适的情况下使 EVM 停产的权利。 另一方面、我们的组件非常认真、确保所有客户都能充分注意我们做出的任何 EOL 决策。

    此致、
    Cody

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

    Cody、  

    我在 Arduino 上构建了自己的代码并读取了自己想要的值。 我还不确定这些值是什么意思。 我还在处理不同形式的通信、主要是 PWM。 当我插入电源时、我读取的值非常高。 当我断开它时、我读取0。 这很好、因为它意味着我正在读取某种值。 唯一的问题是、当我断开超声波换能器的引线时、值不会改变。  

    这让我质疑通道 a 和通道 b 之间的区别是什么?  

    例如:

    GPIO32 A 设置为 CANTXA -转换输出 A 的 ADC 启动、pioCtrlRegs.GPBDIR.bit.GPIO32 = 11;和

    GPIO32 A 设置为 CANTXA -转换输出 B 的 ADC 启动、 pioCtrlRegs.GPBDIR.bit.GPIO33 = 11;

    我的假设是 A 对应于 TX1和 RX1值、B 对应于 TX2和 RX2值。 这些 TX 和 RX 值直接连接到进行液体测量的超声波换能器。 但我觉得我的假设已经没有了  

    谢谢、

    Colin

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

    Colin、

    [引述 USER="Colin Murphy1]*这让我质疑通道 A 和通道 b 之间的区别是什么?  [/报价]

    您是否在讨论 PWM 的 A 和 B 通道? PWM 的"A"和"B"通道的功能几乎相同。 值得注意的是、它们可以配置为以不同的方式响应、以比较事件或其他激励。 这意味着您必须单独配置每个通道、配置 PWM1A 并不意味着 PWM1B 已配置。  

    [引用用户="Colin Murphy1"]

    例如:

    GPIO32 A 设置为 CANTXA -转换输出 A 的 ADC 启动、pioCtrlRegs.GPBDIR.bit.GPIO32 = 11;和

    GPIO32 A 设置为 CANTXA -转换输出 B 的 ADC 启动、 pioCtrlRegs.GPBDIR.bit.GPIO33 = 11;

    [/报价]

    你在那里有几个错别字、但我相信我理解你。  

    1. 您希望该引脚执行什么操作?
      1. GPIO 32和33不能设置为 CAN TXA。
      2. 可以配置 ADCSOCAO 和 ADCSOCBO
    2. 写入 GpioCtrlRegs.GPBDIR.bit.GPIOxx =11;
      1. 写入此值= B11;这毫无意义、这是写入任何大于单个位的值的单个位字段将被忽略。
      2. GpioCtrlRegs.GPBDIR 不配置外设功能、它仅在 GPIO 配置为"GPIO"时生效  
        1. 您是要写入 GPxMUX 吗?
    3. 为什么要在这些 GPIO 上输出 CAN 或 ADC SOC 信号?

    [引用 user="Colin Murphy1]'我的假设是 A 对应于 TX1和 RX1值、B 对应于 TX2和 RX2值。 这些 TX 和 RX 值直接连接到进行液体测量的超声波换能器。 但我觉得我的假设已经偏离 了[/引述]

    Colin、老实说、我很难理解您所指的内容。 这里的"A"和"B"是什么意思? "TX1"和"RX1"是 TDC1000的引脚输出吗? 我要强调的是、C2000器件和 TDC 器件是两个完全独立的系统。 它们不仅能在您插入时正常工作、还需要复杂的设置和通信才能工作。 两者之间的相似名称意味着没有关系、这完全取决于系统设计人员的定义。

    您是否查看过此系统的原理图?https://www.ti.com/lit/zip/snar033 

    这至少将使您能够查看这些器件的连接方式。

    此致、
    Cody  

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

    您好 Cody、

    我附加了一个 PDF 文件、该文件以更深入、更有序的方式描述了我的项目。 我在底部有几个问题、如果您能回答、将有助于我在项目中取得进展。  e2e.ti.com/.../Project-Setup.pdf

    谢谢、

    Colin

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

    Colin、

    1. 是的、此项目是可能的。
      1. TDC 和 C2000器件的集成在您似乎加载到 EVM 上的示例代码中进行了演示。 如果要对返回的值进行一些平均值计算、可能需要修改在 C2000器件上运行的代码。 请注意、C2000器件已配置为输出所有这些采样值。 我假设这是通过 UART 使用 C2000的 SCI 模块完成的。 Arduino 应该能够直接接收此信息、因此我认为无需使用 PWM 来对数据进行编码。
    2. 我们的 GPIO 是多路复用的。 它们有很多可用的功能、并且可以使用 GPxMUX 寄存器进行配置。 技术参考手册中对这些配置进行了全面介绍。 第1.4节"通用输入/输出(GPIO) https://www.ti.com/lit/pdf/sprui10 
    1. 如果您想在 GPIO1上使用 EPWM1A、请选择 GPIO 多路复用器位置1。 这可以通过 GPAMUX 寄存器来完成。

    请注意、您使用的换能器专为多种磁导率而设计。 该板主要设计用于感应液体、我认为它在与沙子一起工作时效果不是很好。


    此致、
    Cody