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.

[参考译文] CC3220MODA:多路复用 UART1引脚不工作

Guru**** 2568565 points
Other Parts Discussed in Thread: CC3220MODA, CC3220SF, CC3220MOD

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/668701/cc3220moda-multiplexed-uart1-pins-not-working

器件型号:CC3220MODA
主题中讨论的其他器件: CC3220SFCC3220MOD

您好!  

我将 CC3220MODA 用于无线数据传输应用、在该应用中、我将通过 UART 从另一个控制器(连接到闪存)获取数据。

我正在使用 SDK_1.5.0.6的"nework_terminal"程序、该程序已编程到 UART0。 当我更改 UART 引脚(UART0至 UART1)时、它不起作用。 请建议我还需要做什么、因为我的电路设计为在 UART1 (GPIO3和 GPIO4)上工作。 以下是对 SDK_1.5.0.6的"nework_terminal"程序所做的更改。

UART_TERM.c->InitTerm ()->
------ uartHandle = UART_OPEN (Board_UART0、&uartParams);  更改为 uartHandle = UART_OPEN (Board_UART1、&uartParams);
CC3220SF_LAUNCHXL.c-->
PowerCC32XX_ParkInfo parkInfo[]-->
{PowerCC32XX_PIN58、PowerCC32XX_weak 下拉_STD}、/* GPIO3              */
{PowerCC32XX_PIN59、PowerCC32XX_weak 下拉_STD}、/* GPIO4              */
更改为
{PowerCC32XX_PIN58、PowerCC32XX_weak 上拉_std}、/* GPIO3              */
{PowerCC32XX_PIN59、PowerCC32XX_weak 上拉_std}、/* GPIO4              */
--------

       baseAddr = UARTA1_base、
       .intNum = INT_UARTA1、
       .intPriority =(~0)、
       .FlowControl = UARTCC32XX_FLOWCTRL_NONE、
       .ringBufPtr = uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1]、
       .ringBufSize = sizeof (uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1])、
       rxPin = UARTCC32XX_PIN_08_UART1_RX、
       txPin = UARTCC32XX_PIN_07_UART1_TX、
       ctsPin = UARTCC32XX_PIN_Unassigned、
       rtsPin = UARTCC32XX_PIN_Unassigned
   
以上行更改为
       baseAddr = UARTA1_base、
       .intNum = INT_UARTA1、
       .intPriority =(~0)、
       .FlowControl = UARTCC32XX_FLOWCTRL_NONE、
       .ringBufPtr = uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1]、
       .ringBufSize = sizeof (uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1])、
       rxPin = UARTCC32XX_PIN_59_UART1_RX
       txPin = UARTCC32XX_PIN_58_UART1_TX
       ctsPin = UARTCC32XX_PIN_Unassigned、
       rtsPin = UARTCC32XX_PIN_Unassigned
即使在更改上述行之后、我也会获得任何输出、因此如果需要、请建议我应该做什么、使用 GPIO3和 GPIO4作为与主机处理器的 UART 通信。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Umasankar、

    请注意、在模块上、此配置映射到模块上的引脚48和49: www.ti.com/.../cc3220mod.pdf
    如果您使用的是 Launchpad、请查看 Launchpad 的原理图、因为这些线路也与 ADC 共享、因此默认情况下会连接运算放大器。

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

    我不使用 Launch Pad、我制作了我的定制板。 原理图类似于 www.ti.com/.../cc3220mod.pdf 第74页提供的 ckt
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的 UART 基地址看起来不会从 UARTA1_BASE 更改、这是正确的吗? 我认为您是从 UART 0更改的
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CONST UARTCC32XX_HWAttrsV1 uartCC3220SHWAttrs[CC3220SF_LAUNCHXL_UARTCOUNT]={

    baseAddr = UARTA0_BASE、
    .intNum = INT_UARTA0、
    .intPriority =(~0)、
    .FlowControl = UARTCC32XX_FLOWCTRL_NONE、
    .ringBufPtr = uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART0]、
    .ringBufSize = sizeof (uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART0])、
    rxPin = UARTCC32XX_PIN_57_UART0_RX、
    txPin = UARTCC32XX_PIN_55_UART0_TX、
    ctsPin = UARTCC32XX_PIN_Unassigned、
    rtsPin = UARTCC32XX_PIN_Unassigned
    }、

    baseAddr = UARTA1_base、
    .intNum = INT_UARTA1、
    .intPriority =(~0)、
    .FlowControl = UARTCC32XX_FLOWCTRL_NONE、
    .ringBufPtr = uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1]、
    .ringBufSize = sizeof (uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1])、
    rxPin = UARTCC32XX_PIN_59_UART1_RX、
    txPin = UARTCC32XX_PIN_58_UART1_TX、
    ctsPin = UARTCC32XX_PIN_Unassigned、
    rtsPin = UARTCC32XX_PIN_Unassigned

    };

    上面是我正在使用的代码、当它在 inint_term()中是 UART0_BASE 时、它工作正常、但当我更改为 UART1_base 时、它不工作。

    "uartHandle = UART_OPEN (Board_UART0、&uartParams);"更改为" uartHandle = UART_OPEN (Board_UART1、&uartParams);"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您将这两个引脚配置为 GPIO、您是否能够切换它们? 有助于消除硬件问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经尝试让 UART1在 CC32xx 器件上工作几天、但很幸运地发现最近的这篇文章存在完全相同的问题。  但是、我正在使用另一个端口、但仍然失败。  我不认为这是硬件问题、因为我使用不同的端口。

    CONST UARTCC32XX_HWAttrsV1 uartCC3220SHWAttrs[CC3220S_LAUNCHXL_UARTCOUNT]={
    {
    baseAddr = UARTA0_BASE、
    .intNum = INT_UARTA0、
    .intPriority =(~0)、
    .FlowControl = UARTCC32XX_FLOWCTRL_NONE、
    .ringBufPtr = uartCC3220SRingBuffer[CC3220S_LAUNCHXL_UART0]、
    .ringBufSize = sizeof (uartCC3220SRingBuffer[CC3220S_LAUNCHXL_UART0])、
    rxPin = UARTCC32XX_PIN_57_UART0_RX、
    txPin = UARTCC32XX_PIN_55_UART0_TX、
    ctsPin = UARTCC32XX_PIN_Unassigned、
    rtsPin = UARTCC32XX_PIN_Unassigned、
    errorFxn =空
    }、
    {
    baseAddr = UARTA1_base、
    .intNum = INT_UARTA1、
    .intPriority =(~0)、
    .FlowControl = UARTCC32XX_FLOWCTRL_NONE、
    .ringBufPtr = uartCC3220SRingBuffer[CC3220S_LAUNCHXL_UART1]、
    .ringBufSize = sizeof (uartCC3220SRingBuffer[CC3220S_LAUNCHXL_UART1])、
    rxPin = UARTCC32XX_PIN_02_UART1_RX、
    txPin = UARTCC32XX_PIN_01_UART1_TX、
    ctsPin = UARTCC32XX_PIN_Unassigned、
    rtsPin = UARTCC32XX_PIN_Unassigned、
    errorFxn =空
    } 

    我通过调试器代码跟踪,在尝试执行 initHw(...)时它崩溃到 faultISR()函数 SimpleLink SDK 中的功能。  调试器会跳转、但它似乎是函数 UARTIntClear。  我检查了 baseAddr、它是0x4000.D000。  我使用的是最新版的所有认为是问题的内容(SDK v1.60、CCS 7.2.0)。

    如果我将 UART_open 函数设置为使用 Board_UART0、但该端口未连接到板上的任何 UART、则不会崩溃。  我必须使用引脚01和02或(模块上的3/4)。

    静态空 initHw (UART_Handle handle)
    {
    ClockP_FreqHz 频率;
    UARTCC32XX_Object *object = handle->object;
    UARTCC32XX_HWAttrsV1 const *hwAttrs = handle->hwAttrs;
    
    /*启用 UART 及其中断。 *
    MAP_UARTIntClear (hwAttrs->baseAddr、UART_INT_TX | UART_INT_RX |
    UART_INT_RT);
    MAP_UARTEnable (hwAttrs->baseAddr);
    
    /*将 FIFO 级别设置为7/8空和4/8满。 *
    MAP_UARTFIFOLevelSet (hwAttrs->baseAddr、UART_FIFO_TX1_8、UART_FIFO_RX1_8); 
    (笑声) 

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

    有什么变化吗?  我花了一天时间尝试各种东西、根本无法使 UART1正常工作。  我甚至把引脚7和8的默认代码保留在这里、它仍然会崩溃。  我也尝试单步执行某些函数(因为我不知道如何在 UARTCC32XX.c 文件中重建更改)。 始终在 UART 功能上崩溃。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、这是硬件问题。 我制作了另一个电路板并进行了验证、现在它可以工作了。