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 触摸屏的 SPI 设置

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1389873/mspm0g3507-spi-setup-for-kentec-touchscreen

器件型号:MSPM0G3507
"主题"中讨论的其他器件: SysConfigBOOSTXL-K350QVG-S1

工具与软件:

我要将 GR 库移植到 MSPM0G3507。

我已经编译并运行了无触摸屏、但当然、当我运行演示时、什么也没发生。 但它*DOES*似乎是重置的。

我怀疑我的 SPI 设置不正确。 在拖放示波器之前、是否有人可以检查我的配置?

下面是设置代码:

eUSCI_SPI_MasterConfig spiMasterConfig =
    {
        EUSCI_B_SPI_CLOCKSOURCE_SMCLK,                      // SMCLK Clock Source
        CS_getSMCLK(),                                  // Get SMCLK frequency
        16000000,                                                // SPICLK = 16 MHz
        EUSCI_B_SPI_MSB_FIRST,                             // MSB First
        EUSCI_B_SPI_PHASE_DATA_CAPTURED_ONFIRST_CHANGED_ON_NEXT,         // Phase
        EUSCI_B_SPI_CLOCKPOLARITY_INACTIVITY_LOW,         // Low polarity
        EUSCI_B_SPI_3PIN                                   // 3Wire SPI Mode
    };

    SPI_initMaster(LCD_EUSCI_MODULE, &spiMasterConfig);

    SPI_clearInterruptFlag(LCD_EUSCI_MODULE,
                           EUSCI_B_SPI_RECEIVE_INTERRUPT);

    SPI_enableModule(LCD_EUSCI_MODULE);

下面是数据传输代码:

//
    // Wait for the transmit buffer to become empty.
    //
    while(!SPI_getInterruptStatus(LCD_EUSCI_MODULE,
                                  EUSCI_B_SPI_TRANSMIT_INTERRUPT))
    {
        ;
    }

    //
    // Transmit the high byte.
    //
    SPI_transmitData(LCD_EUSCI_MODULE,ui8Data);

以下是我的配置:

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

    原始代码是启用 TXIE 和 RXIE、还是只是轮询它们? 我在这里看不到、我几乎从不为 SPI 启用这些功能。

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

    它会对其进行轮询。 我当然看不到处理程序。 我可以在不启用它们的情况下进行轮询吗? 我确实发现我的程序最终在无处理者的土地。

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

    是的、这些标志的设置独立于启用情况(就像在 MSP430/MSP432上一样)。  

    但是、您需要读取 RIS (原始中断状态)、而不是 MIS (屏蔽后的中断状态)。 只需看一下看起来是 DL_SPI_getRawInterruptStatus ()的源(dl_spi.h)。

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

    我觉得 SysConfig 将复制430配置代码。

    SysConfig 的中断部分将启用 SPI IMASK 寄存器上的中断。 中断已经在 CPU (NVIC)和外设级别启用。 这两个端口都需要启用才能正确进入 IRQ 处理程序。 如果你运行到缺省处理程序、你也许启用了中断、但是你永远不会创建 IRQ。

    Bruce 的问题是、如果您想使用代码的直接端口、您可以轮询 RIS。

    就个人而言、我更喜欢使用中断而不是轮询、但这取决于您的应用需求。

    我确实看到这是以3线模式运行的、但我要再次确认一下、Kentec 触摸屏不需要 SPI CS。 您是否正在使用 BOOSTXL-K350QVG-S1?

    此致、
    Luke

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

    "您是否正在使用 BOOSTXL-K350QVG-S1?"

    有。 我让它使用 MSP432。 我确实发现我的芯片选择以某种方式拧紧了。

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

    抱歉、发现我未正确设置"芯片选择"。

    图形现在可以正常工作、我只需要触碰即可。