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.

[参考译文] RTOS/CC2650:在运行时更改 UART 引脚

Guru**** 2539500 points
Other Parts Discussed in Thread: CC2650

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/569387/rtos-cc2650-changing-the-uart-pins-during-runtime

器件型号:CC2650

工具/软件:TI-RTOS

尊敬的朋友:

我必须使用 UART 将3个器件连接到 CC2650、因为 CC2650只有一个可用的 UART。

是否可以在程序运行时更改 UART 引脚?

谢谢

此致、  

Tomvictor

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

    遗憾的是、不支持在运行时更改引脚。 如果您想在3个器件上使用 UART、则需要在板级配置文件中定义3个 UART 驱动程序实例(这些实例使用的外设与其定义的引脚相同)。 您的应用程序还必须确保在特定时间打开的实例不超过1个(使用时需要打开/关闭每个实例)。 如果您只对 UART 进行写入操作、这是可行的;但是、如果需要进行异步读取、这将是一个问题。

    希望这对您有所帮助、
    伊曼纽尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在初始化 UART 时、UART_CONFIG 结构必须存在? (UART.h)
    UART_CONFIG 结构如下所示(CC2650LAUNCHXL.c)

    /* UART 硬件参数结构、也用于分配 UART 引脚*/
    CONST UARTCC26XX_HWAttrsV2 uartCC26XXHWAttrs[CC2650_LAUNCHXL_UARTCOUNT]={

    baseAddr = UART0_BASE、
    powerMngrId = PowerCC26XX_Periph_UART0、
    .intNum = INT_UART0_COMB、
    .intPriority =~0、
    .wiPriority = 0、
    txPin = Board_UART_TX、
    .rxPin = Board_UART_RX、
    ctsPin = PIN_Unassigned、
    rtsPin = PIN_Unassigned、
    .ringBufPtr = uartCC26XXRingBuffer[0]、
    .ringBufSize = sizeof (uartCC26XXRingBuffer[0])

    };

    /* UART 配置结构*/
    const UART_Config UART_config[]={

    .fxnTablePtr =&UARTCC26XX_fxnTable、
    .object = uartCC26XX 对象[0]、
    hwAttrs = uartCC26XXHWAttrs[0]
    }、
    {NULL、NULL、NULL}
    };


    应用程序代码(回波示例)

    void echoFxn (UArg0、UArgarg1)

    字符输入;
    UART_Handle UART;
    UART_Params uartParams、uart2Params;
    const char echoPrompt[]="\fEchoing Characters:\r\n";

    /*创建一个数据处理关闭的 UART。 *
    UART_PARAMS_INIT (uartParams);
    uartParams.writeDataMode = UART_DATA_BINARY;
    uartParams.readDataMode = UART_DATA_BINARY;
    uartParams.readReturnMode = UART_return_full;
    uartParams.readEcho = UART_ECHO_OFF;
    uartParams.baudrate = 9600;
    UART = UART_OPEN (Board_UART0、uartParams);

    if (UART == NULL){
    System_abort ("打开 UART 时出错");


    UART_WRITE (UART、echoPrompt、sizeof (echoPrompt));

    /*循环永久回显*/
    while (1){
    UART_READ (UART、INPUT、1);
    UART_WRITE (UART、INPUT、1);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为 GPS 和 GPRS 创建多个 UART 实例需要进行哪些修改? 在使用前后、两个 UART 处理程序以及每次初始化和关闭都可能实现吗?
    任何建议、谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Tom、

    我可能有另一个建议来解决您的问题:

    如果您没有将传感器控制器用于任何其他用途、则可以使用传感器控制器生成三个 UART 仿真器。 每个仿真器都会映射其自己的 IO 引脚。 传感器控制器上只能运行一个仿真器、因此您无法同时与两个器件通信(但这可能不会对您造成问题)。

    如果您可能会考虑这一点、我建议您查看 Sensor Controller Studio、它已经有一个包含所有源代码的 UART 仿真器示例。 您只需添加两个附加任务并映射附加 IO 即可。

    此致、
    米歇尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、Michel。
    我还有一个疑问。 所有的 ble 堆栈(对于所有示例)是否相同? 如何从头开始项目? 每个示例项目本身都消耗大量内存是否有使用外部内存的选项?
    谢谢你
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tom、

    我不确定我是否理解您的问题。  您可能能够在 BLE 论坛上获得有关堆栈的正确答案(链接如下):

    对于从头开始项目、TI 提供了几个空示例(如果这是您的意思):

    在 CCS 中、您可以从"View"菜单在 Resource Explorer 中访问它们。

    您还可以通过以下地址在线访问 Resource Explorer:

    我对 BLE 堆栈和提供的示例不了解、因此如果您需要空的 BLE 示例、我必须返回 BLE 论坛(或者可能是 TI-RTOS 论坛中的 TI 员工)

    此致、

    米歇尔