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.

[参考译文] MSPM0G3507:为 Kentec 触摸屏移植 GRLib

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1386284/mspm0g3507-porting-grlib-for-kentec-touchscreen

器件型号:MSPM0G3507
主题中讨论的其他器件: SysConfig

工具与软件:

我将把适用于 Kentec 的 GRLib 从 MSP432Pr01R 移植到 MSPM0G3507

我知道大多数设置需要在 syscfg 中进行、所以这不是问题。 但是,要读取触摸屏,程序会像这样经过 gyratio :

/* Set X+ and X- as output and Y- as input (floating). */
    MAP_GPIO_setAsOutputPin(TOUCH_X_PLUS_PORT, TOUCH_X_PLUS_PIN);
    MAP_GPIO_setAsOutputPin(TOUCH_X_MINUS_PORT, TOUCH_X_MINUS_PIN);
    MAP_GPIO_setAsInputPin(TOUCH_Y_MINUS_PORT, TOUCH_Y_MINUS_PIN);

    /* Set X+ high and X- low. */
    MAP_GPIO_setOutputHighOnPin(TOUCH_X_PLUS_PORT, TOUCH_X_PLUS_PIN);
    MAP_GPIO_setOutputLowOnPin(TOUCH_X_MINUS_PORT, TOUCH_X_MINUS_PIN);

    /* Sample the Y+ ADC channel. */
    MAP_GPIO_setAsPeripheralModuleFunctionOutputPin(TOUCH_Y_PLUS_PORT,
                                                    TOUCH_Y_PLUS_PIN,
                                                    GPIO_TERTIARY_MODULE_FUNCTION);
    MAP_ADC14_clearInterruptFlag(TOUCH_X_PLUS_IFG | TOUCH_Y_PLUS_IFG);
    MAP_ADC14_disableConversion();
    MAP_ADC14_configureSingleSampleMode(TOUCH_Y_PLUS_MEMORY, false);
    MAP_ADC14_enableConversion();

    for(i = 0; i < TOUCH_OVERSAMPLE; i++)
    {
        MAP_ADC14_toggleConversionTrigger();
        status = MAP_ADC14_getInterruptStatus();
        while(status != TOUCH_Y_PLUS_IFG)
        {
            status = MAP_ADC14_getInterruptStatus();
        }
        average += ADC14->MEM[0];
    }

    /* Return the analog result. */
    average = (average >> TOUCH_AVERAGE_DIVISOR);
    return(average);

测量 Y 的值相同、在 Y 引脚上施加电压、然后测量 X 引脚。

我应该做同样的事情吗? 如果我尝试在设置 GPIO 引脚的同时设置 GPIO 引脚、是否会发生设置冲突?

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

    尊敬的 Keith:

    您是否打算询问是否会在引脚的 ADC 函数和 GPIO 函数之间出现问题?

    我认为上面的代码段可以、因此如果按顺序测量 Y、在上面的代码段之后、我不会看到任何问题。

    如果您意味着您需要在同一代码中交错测量 X 和 Y、则在尝试一次将多个引脚功能分配给单个引脚时会出现问题。 此时、您可以选择切换到顺序方法、或在 GPIO 和 ADC 之间快速更改引脚功能。 在 SysConfig 中、您需要初始化为一体、然后在应用程序代码中手动初始化 ADC 通道、然后在运行时切换引脚功能。

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

    以上代码片段适用于 MSP432P401R。 MSPM0G3507 Simplelink 中实际上并不存在这些函数。

    由于 x 和 y 的相互作用、它必须按顺序完成。

    这就是 SysConfig 的问题、没有关于如何设置 ADC 等设置的示例、我想我可以深入探究 SysConfig 创建并复制它的 C 代码。

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

    啊、我明白了。

    MSPM0读取代码段时、这些函数中的大多数应该都具有对应的 Re、例如 setAsOutputPin、setAsInputPin、setOutputHighOnPin、set low、 设置为外设功能、禁用和启用转换。 配置采样模式的工作方式略有不同、但我们仍有相应的功能。 切换转换触发器可能需要更多的时间。 启用中断和读取状态当然具有对应的功能。

    为了没有 ADC 设置之类的设置示例、您只是需要在 SysConfig 外部的应用代码中设置 ADC 吗? 如果这样、我确实同意、但我通常只需在 SysConfig 中设置所需的外设、然后将生成的代码复制到应用代码中、并从 SysConfig 中删除它、如您所述。  

    这是有用的反馈、我认为对于我们的许多客户而言、上述流程是典型的。 所生成代码的视图是否不足以轻松交互? 或者、让 SysConfig 生成它、然后复制并移动它这种不同而诚然有点奇怪的步骤是不常见的吗? 除了恢复到以前手动初始化所有内容的示例代码方法之外、您是否想到了可以使该过程更好的方法?

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

    我不知道、这就是我问的原因。 8^)

    我已经发现定时器自动生成代码中的一个错误。

    我只需按原样保留 SysConfig 代码-毕竟每次我进行更改时都会重新生成 SysConfig 代码-并根据需要进行手动更改。

    我的问题是 Resource Explorer DriverLib 文档真的很不友好。 我更喜欢 pdf 版本。

    我可以设置 ADC 并保留它吗? 根据我对 I/O 图的理解、它几乎与 GPIO 无关、这就是我问 SysConfig 冲突的原因。 我想、我应该设置 ADC、并将 GPIO 设置为高阻态以读取 ADC。

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

    我想我现在就要射了。"

    您能告诉我们您在这里或者在单独的线程中注意到的错误是什么吗? 这样我们就能确保解决该问题。

    对于原始问题、在 SysConfig 中尝试将一个引脚配置为 ADC 输入和 GPIO 时将会出现错误。 因此、我建议解决这个问题的方法是在 SysConfig 中配置其中一个、并复制生成的初始化代码、然后将其粘贴到您的应用中。 然后从 SysConfig 中删除该部分、并初始化您的其他功能。 您还可以将生成的代码复制粘贴到应用程序代码中的辅助函数中、以便尽可能轻松地在初始化之间切换。 然后在应用代码中、您需要在需要切换时重新初始化引脚函数。 至少这是我应该怎么做的。 您也可以在代码中手动创建要实现的初始化函数。

    您可以在 SysConfig 中初始化 ADC 和 GPIO、唯一的问题是您需要为两者选择一个引脚、一旦您为两者选择相同的引脚、就会发生资源冲突。 权变措施可能是初始化 ADC 以使用不同的引脚、然后切换该引脚、以便稍后在需要更改该引脚以使用 ADC 时在应用代码中完成初始化。 不过、这可能看起来有点凌乱。

    同意 Resource Explorer 中的 Driverlib API 指南对用户来说不太友好。 说实话、我只是通读了源代码、我觉得更容易阅读 API 指南。 也许这是我们需要就如何改进进行集体讨论的事情。

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

    我已经报告了。

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1371145/mspm0g3507-timer-capture-compare-mode-differences/5241404?tisearch=e2e-sitesearch&keymatch=%25252520user%2525253A301692#5241404

    Cash Hao 就在上面。

    感谢您提供信息。