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.

[参考译文] CC2640:CC2640将 UART Rx 引脚上拉

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1246503/cc2640-cc2640-pullup-a-uart-rx-pin

器件型号:CC2640
主题中讨论的其他器件:LAUNCHXL-CC2650、CC2650

大家好!


我需要上拉 UART Rx 引脚(IOCFG8:PULL_CTL = 0x2)。
但在调用 UART_OPEN ()之后设置了 IOCFG8:PULL_CTL = 0x3
我做错了什么?

 Board_UART_RX | PIN_INPUT_EN | PIN_PULLUP、   



//初始化并打开 UART
void UART_Init (void){
 uart_params_init (&params);
 params.baudrate = 2400;
 params.stopbits = UART_STOP_ONE;
 params.parityType = uart_par_none;
 params.writeDataMode = UART_DATA_binary;
 params.readDataMode = UART_DATA_binary;
 params.readMode = uart_mode_callback;
 params.readCallback = UART_ReadCB;
 Handle = UART_open (Board_UART、&params); //打开 UART 并执行读取



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

    您好!

    感谢您与我们取得联系、

    您在哪里进行了更改?

    在我这边、 uart2echo 示例中、我可以在 BoardGpioInitTable 功能位于 CC2640R2_LAUNCHXL 如下面所示。

    您能否分享您的示例并再次检查是否没有其他功能覆盖引脚?

    此致、

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

     纪尧姆,你好!

    我有一个 CC2640RGZR  7*7定制板


    /* UART 板*/
    #define Board_UART_RX              IOID_8         /* RXD */  

    ……

    CONST PIN_Config BoardGpioInitTable[]={
     Board_UART_RX | PIN_INPUT_EN | PIN_PULLUP、             /!!!    
     Board_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PushPull、
     引脚终止


    公司名称:

    静态 void UART_ReadCB (UART_Handle handle、void * rxBuf、size_t size){
     FLAG_UART_READ_Ready = true;


    公司名称:

    //初始化并打开 UART
    void My_UART_Init (void){
     uart_params_init (&params);
     params.baudrate = 2400;
     params.stopbits = UART_STOP_ONE;
     params.parityType = uart_par_none;
     params.writeDataMode = UART_DATA_binary;
     params.readDataMode = UART_DATA_binary;
     params.readMode = uart_mode_callback;
     params.readCallback = UART_ReadCB;


     句柄= UART_open (Board_UART、&params);






    在 main.c 中、调用 PIN_INIT (BoardGpioInitTable)函数后、       会设置 IOCFG8:PULL_CTL=0x2。
    UART Rx 引脚设置上拉


    但在调用函数 handle=UART_open (Board_uart、&params)之后;
    IOCFG8:PULL_CTL=0x3

    UART Rx 引脚不通过上拉设置

    我可以在哪里看到 LAUNCHXL-CC2650的 UART Rx 上拉示例(ble_SDK_2_02_01_18) ?

    此致、

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

    您好 Alex:

    您能否为我提供定制电路板的 UART 配置、您可以在 CC2640R2_LAUNCHXL.c 的文件 uartecho 请参见下图。

    确保 .rxpin 参数通过 UART_RX 的定制电路板定义进行设置。

    遗憾的是、我们没有适用于 LAUNCHXL-CC2650的 UART Rx 上拉的具体示例。

    上拉引脚的方法就是您选择的方法。

    此致、

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

     纪尧姆,你好!

    /* UART 硬件参数结构、也用于分配 UART 引脚*/
    const UARTCC26XX_HWAttrsV1 uartCC26XHWAttrs [CC2650_LAUNCHXL_UARTCOUNT]={
       {
           baseAddr      = UART0_BASE、
           .powerMngrId   = PowerCC26XX_Periph_UART0、
           .intNum        = INT_UART0_COMB
           .intPriority   =~0、
           .swiPriority   = 0、
           .txPin         = Board_UART_TX、
           .rxPin         = Board_UART_RX、
           .ctsPin        = PIN_未 分配、
           .rtsPin        = PIN_未 分配
       }
    };



    /* UART 板*/
    #define Board_UART_RX              IOID_8         /* RXD */  
    #define Board_UART_TX              IOID_9         /* TXD */  
    #define Board_UART_CTS             PIN_UNASSIGNED /* CTS */  
    #define Board_UART_RTS             PIN_未 分配 /* RTS */


    此致、

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

    尊敬的 Alex:

    在继续之前、我想知道您为什么需要上拉该引脚。 默认情况下、Rx 可能没有拉取、并且也可以正常工作。

    如果所有其他步骤都不起作用、唯一的方法是直接将其写入寄存器中、但我们首先需要知道您需要对其进行上拉的原因。

    此致、

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


     纪尧姆,你好!

    我正在将 UART 用于 ADM2587E 上的半双工模式 RS-485 Modbus RTU。
    我可以连接一个外部上拉电阻器。 但定制板已经完成。
    引脚 DE 和/RE ADM2587E 已连接。
    接收 UART Rx 时、该引脚悬空。 因此需要上拉
    函数 UART_ReadCB (handle、RxBuf、size)返回错误。
    使用"UART_ReadCancel...UART_Read"解决问题不起作用

    "...唯一的方法是直接将其写入寄存器。。" 将在 Rx 引脚上提供额外的脉冲。


    void Modbus_FunRsp (uint8_t fun){
     //UART_readCancel (句柄);    
     DE_ON;                         //ADM2587用于写入
     uart_WRITE (handle、buf、8);  
     Task_sleep (50000)       //帧传输时间 (调试)
     DE_OFF;
     //uart_read ();       //ADM2586适用于接收


    此致、

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

    您好!

    我会将您的请求转发给相关专家、您是否考虑保持 Rx 引脚上的默认下拉电阻?

    此致、

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

    可以将 C:\ti\simplelink_cc2640r2_sdk_5_30_00_03\source\ti\drivers\uart\UARTCC26XX.c 资源直接复制到工程中、以覆盖现有参考。  然后、您可以 在本地修改 UARTCC26XX_initialio、以将  PIN_PULLUP 添加到表的 RX 引脚、该引脚在为 UART 操作打开和分配引脚时使用。

    /*
     *  ======== UARTCC26XX_initIO ========
     *  This functions initializes the UART IOs.
     *
     *  @pre    Function assumes that the UART handle is pointing to a hardware
     *          module which has already been opened.
     */
    static bool UARTCC26XX_initIO(UART_Handle handle) {
        /* Locals */
        UARTCC26XX_Object               *object;
        UARTCC26XX_HWAttrsV2 const     *hwAttrs;
        PIN_Config                      uartPinTable[5];
        uint32_t i = 0;
    
        /* Get the pointer to the object and hwAttrs */
        object = handle->object;
        hwAttrs = handle->hwAttrs;
    
        /* Build local list of pins, allocate through PIN driver and map HW ports */
        uartPinTable[i++] = hwAttrs->rxPin | PIN_INPUT_EN; //ADD PIN_PULLUP HERE
        /* Make sure UART_TX pin is driven high after calling PIN_open(...) until
        *  we've set the correct peripheral muxing in PINCC26XX_setMux(...)
        *  This is to avoid falling edge glitches when configuring the UART_TX pin.
        */
        uartPinTable[i++] = hwAttrs->txPin | PIN_INPUT_DIS | PIN_PUSHPULL |
                PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH;

    此致、
    瑞安

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

    您好、专家!

    请举个例子直接写入和读取 IOCFGx 寄存器: PULL_CTL
    在哪里可以找到有关此主题的文档?

    此致

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

    这涉及到使用 HWREG 直接读取/写入寄存器。  您可以参阅  Driverlib 文档中的 IOCPortOpullSet 和 IOC 寄存器

    此致、
    瑞安