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.

[参考译文] MSPM0L1306:PA18上的 MSPM0L1306 UART0 RX

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1241151/mspm0l1306-mspm0l1306-uart0-rx-on-pa18

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

大家好!

我在使用 MSPM0L1306的 UART0模块时遇到了一些问题。  

如果我 将 UART0 RX 引脚映射到 PA9、一切都正常。 一旦接收到数据、就会按照配置引发中断。 但是、如果我将 UART0_RX 引脚重新配置为在 PA18上、则不再接收任何数据。 传输仍然正常。 UART 的所有寄存器配置完全相同、唯一的区别是 IO MUX 19现在设置为备用功能2 (UART0_RX)。

其他人是否遇到过同样的问题?

PA18不工作

PA9工作正常

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

    尊敬的 Luca:

    很抱歉延迟回答您的问题。 您能否共享用于配置 PA9以及 PA18的代码部分? (我不需要整个项目、只需要使用几行代码来设置 UART 和 IO 引脚。

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

    GPIO 代码:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /// Constructor
    ///
    /// @param port GPIO port struct (e.g. GPIOA)
    /// @param pin The pin number (e.g. 1 for PA1)
    Gpio(GPIO_Regs* const port, const uint32_t pin)
    : M_PORT{port},
    M_PIN_INDEX{pin},
    M_PIN_MASK{static_cast<uint32_t>(1U) << pin} {
    ASSERT(pin < 32U);
    }
    /// Configure the pin as an digital input pin
    ///
    /// @param function Alternate function selection (0 ... 15)
    /// @param pull Pull resistor (see #Pull)
    /// @param inversion Input inversion (see #Inversion)
    /// @param hysteresis Input hysteresis (see #Hysteresis)
    void ConfigureAsInput(const uint32_t function,
    const Pull pull = Pull::NONE,
    const Inversion inversion = Inversion::DISABLE,
    const Hysteresis hysteresis = Hysteresis::TTL) {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    初始化:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    mcal:Common::ResetPeripheral(GPIOA);
    // Enable power
    mcal::Power::EnableGpioA();
    // Wait 16 cycles for the power to be enabled
    mcal::Common::DelayCycles(16U);
    // UART Pins
    mcal::Gpio uartTxPin(GPIOA, 17U);
    mcal::Gpio uartRxPin(GPIOA, 18U);
    // GPIO MUX Function 2 is UART
    uartTxPin.ConfigureAsOutput(2U);
    uartRxPin.ConfigureAsInput(2U);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    多路复用到其他引脚的 UART 未引起任何问题、因此我很确定这不是 UART 问题。

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

    尊敬的 Luca:

    不确定问题是什么、但似乎在您身边。  我可以针对 RX 引脚在 PA9和 PA18之间切换、并使用预期的中断接收数据。

    我使用的代码是"uart_external_loopback_interrupt"示例工程、位于 SDK 中的 driverlib 示例下。

    使用 SysConfig 工具、以下是为工程生成的定义:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /* Defines for UART_0 RX = PA9 */
    #define UART_0_INST UART0
    #define UART_0_INST_IRQHandler UART0_IRQHandler
    #define UART_0_INST_INT_IRQN UART0_INT_IRQn
    #define GPIO_UART_0_RX_PORT GPIOA
    #define GPIO_UART_0_TX_PORT GPIOA
    #define GPIO_UART_0_RX_PIN DL_GPIO_PIN_9
    #define GPIO_UART_0_TX_PIN DL_GPIO_PIN_8
    #define GPIO_UART_0_IOMUX_RX (IOMUX_PINCM10)
    #define GPIO_UART_0_IOMUX_TX (IOMUX_PINCM9)
    #define GPIO_UART_0_IOMUX_RX_FUNC IOMUX_PINCM10_PF_UART0_RX
    #define GPIO_UART_0_IOMUX_TX_FUNC IOMUX_PINCM9_PF_UART0_TX
    /* Defines for UART_0 RX = PA18*/
    #define UART_0_INST UART0
    #define UART_0_INST_IRQHandler UART0_IRQHandler
    #define UART_0_INST_INT_IRQN UART0_INT_IRQn
    #define GPIO_UART_0_RX_PORT GPIOA
    #define GPIO_UART_0_TX_PORT GPIOA
    #define GPIO_UART_0_RX_PIN DL_GPIO_PIN_18
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    在这个项目中、当我来回切换时、唯一能看到的区别是:

    #define GPIO_UART_0_IOMUX_RX                    (IOMUX_PINCM19)// PA18

    #define GPIO_UART_0_IOMUX_RX                    (IOMUX_PINCM10)// PA9

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

    您好,Dennis

    UART 问题已得到解决、感谢您的参与。

    最后是原理图错误、UART0被标记为 UART1。 我对此表示歉意。

    此致、

    卢卡