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.

[参考译文] TMS320F280039C:GPIO H AIO 配置和引脚映射

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1162645/tms320f280039c-gpio-h-aio-configuration-and-pin-mapping

器件型号:TMS320F280039C
主题中讨论的其他器件:LAUNCHXL-F280039CSysConfigC2000WARE

您好!

我在 LAUNCHXL-F280039C 上使用 TMS320F280039C、但 APIO H 模拟引脚存在一些问题。 我想将 ADCINA1配置为一个比较器子系统的输入。 ADCINA1被连接至控制器的引脚 A1/B7/DACB_OUT。

我想从头开始编写所有代码、以了解 MCU 的工作原理。 我阅读了技术参考 maual SPRUIW9A 和器件数据表 SPRSP61A 中的所有必要部分。

根据 SPRUIW9A 第1136页的 GPHAMSEL 寄存器定义、我需要为 ADCINA1输入设置相应的寄存器。 如1136页所述、GPIHAMSEl 的默认值都是0x1、这意味着所有模拟功能都是使能的。

SPRUIW9A 的第1759页的表15-3显示 A1/B7/DACB_OUT 被连接至 AIO232。

SPRUIW9A 的1054页描述了 AIO 引脚。 没有映射、但据我了解、AIO232只是 GPIO232的同义词。

因此、如果我只想激活 A1/B7/DACB_OUT 作为模拟输入、我就不必根据 manaul 配置任何内容、因为所有内容都已针对我的目的进行配置。 但 GPHAMSEL 的位定义必须错误。 只有当 GPHAMSEL 被清零时、比较器才会工作。 到目前为止,我已经看到的 TI 测试设计使用位字段函数 InitGpio()来实现这一点。

首先、我尝试清除 GPHAMSEL 寄存器中的所有位。 我的比较器按预期工作。 在执行基本函数测试后、我想清理我的代码。 这样、我只想通过清除 GPHAMSEL 寄存器中的位8 (GPIO232)来启用 A1/B7/DACB_OUT 作为模拟输入。 但比较器在此配置中不起作用。 通过在调试模式中单独欺骗所有位、我发现必须将 GPIO242代替 GPIO232作为模拟输入来分离 A1/B7/DACB_OUT。 这意味着表15.2中至少有两个错误的引脚映射。

我不熟悉 MCU 设计。 过去、我曾使用 FPGA、因此可能缺少正确初始化的关键器件。 如果有任何帮助,我将不胜感激。

此致、

Stefan

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

    您好 Stefan、

    感谢您提出问题并逐步了解问题。 要回答每个部分:

    [引用 userid="46457" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1162645/tms320f280039c-gpio-h-aio-configuration-and-pin-mapping ]GPHAMSEl 的默认值都设置为0x1、这意味着启用了所有模拟功能。

    AGPIO 引脚外、所有模拟连接引脚都是如此。 默认情况下、AGPIO 引脚完全断开(无模拟或数字功能)。 不过、这不会影响您提到的项目、因此我将继续讨论其余的项目。

    [引用 userid="46457" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1162645/tms320f280039c-gpio-h-aio-configuration-and-pin-mapping "]通过在调试模式中单独欺骗所有位、我发现 GPIO242替代 GPIO232必须是 A1/B7/DACB_OUT 作为模拟输入的分离器。

    这看起来有点奇怪、因为它与预期正好有10个偏移。 您能否通过尝试另一个 AIO (最好是一个靠近的 AIO、如 GPIO233或 GPIO231)并查看控制它的位是否也是10关闭来进行快速测试? 如果是、我认为用于访问这些寄存器的代码中可能存在偏移问题。 问题可能是每个 GPIO 设置1位、而不是每个 GPIO 设置2位(MUX 寄存器都是每个 GPIO 设置2位、AMSEL 寄存器是每个 GPIO 设置1位)

    您可以通过在 C2000Ware 的 SysConfig 中尝试相同的方法来彻底检查这一点。

    健全性检查的其他几个方面:

    代码是否首先清除 GPIO 的 GPHMUX 寄存器字段(以避免干扰)? (每个 GPIO 有2个位、因此在这里要小心)

    2.代码是否在上述#1之后写入 GPHGMUX 寄存器值? (每个 GPIO 有2个位、因此在这里要小心)

    代码是否在上面的#1和#2后将值写入 MUX 寄存器? (每个 GPIO 有2个位、因此在这里要小心)

    4.代码是否为该寄存器设置"GPHAMSEL"寄存器位? 注意:这与其他引脚不同、每个 GPIO 为1位、在这里要小心

    此致、

    Vince

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

    尊敬的 Vince:

    非常感谢您的回答。

    我今天尝试了几件事情、几分钟前我的代码中终于发现了一个错误。 对我来说很遗憾

    GPHGMUX 和 GPHMUX 寄存器的配置正确、就像它们在默认情况下一样。 我尝试了不同的模拟输入引脚作为 cmpss 源、并且始终出现相同的问题。 每次将 GPHAMSEL.bit.GPIO242设置为高电平、cmpss 都无法正常工作。 当我清除该位时、一切都一目了然。

    我在器件的数据表(SPRSP61A)中找到了出现此问题的原因:AIO232和 VDAC 位于同一引脚上。 我不想使用外部 DAC 基准源、但在编程期间、我不知道我们是否会为所有模拟组件使用外部电压基准源。 我编写了两个配置、但忘记注释掉其中的一个配置。 VDAC 配置为 DAC 基准。 在我将 DAC 源更改为内部源后、一切都正常、当然、GPHAMSEL.bit.GPIO242不再影响设计。

    VDAC_B3/AIO242引脚一直悬空。 因此、cmpss 无法正常运行。  我很长时间没有注意到这一点、因为我只处理 GND 和3V3 cmpss 输入电平。

    感谢您的支持。

    此致、

    Stefan