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.

[参考译文] CC2540:USART0 Alt. 1配置(UART 模式)

Guru**** 2595800 points
Other Parts Discussed in Thread: CC2540

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/607327/cc2540-usart0-alt-1-configuration-uart-mode

器件型号:CC2540

您好!

我将 BLE 1.4.2 SDK 与 CC2540配合使用。 SDK 中每个项目使用的板级文件(hal_board_cfg.h)在 SPI 模式下配置为 UART 1 Alt. 2。

是否有人可以将我指向在 UART 模式下为 USART0 Alt. 2配置的板级配置文件? 或者向我解释如何更改现有的电路板配置?

谢谢、

Tony

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

    从中删除

    SWRU191F–2009年4月–2014年4月修订  

    "7.6.4 USART 0
    SFR 寄存器位 PERCFG.U0CFG 用于选择使用备选1还是备选2位置。"

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请尝试参考 e2e.ti.com/.../1902331中的讨论
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用 SerialBLEBridge 项目并修改了 hal_board_config.h 文件。 我已删除 UART 模式下 UART1 Alt. 2的原始代码:

    #define XNV_SPI_init ()\
    ST(\
    /*模式选择 UART1 SPI 模式作为主器件。 */\
    U1CSR = 0;\
    \
    115200波特的//设置。 */\
    U1GCR = 11;\
    U1BAUD = 216;\
    \
    /*将位顺序设置为 MSB */\
    U1GCR |= BV (5);\
    \
    /*将 UART1 I/O 设置为 P1引脚上的替代2个位置。 */\
    PERCFG |= 0x02;// U1CFG *//
    \
    /*在 I/O 引脚上选择外设功能、但 SS 保留为 GPIO 以进行单独控制。 */\
    P1SEL |= 0xE0;/* SELP1_[7:4]*/\
    /* P1.1、2、3:复位、LCD CS、XNV CS。 */\
    P1SEL &=~0x0E;\
    P1 |= 0x0E;\
    P1_1 = 0;\
    P1DIR |= 0x0E;\
    \
    /*将 UART1优先于 Timer3。 */\
    P2SEL &=~0x20;/* PRI2P1 */\
    \
    /* SPI 配置完成后,将其启用。 */\
    U1CSR |= 0x40;\
    /*释放 XNV 复位。 */\
    P1_1 = 1;\
    )

    并在 UART 模式下将其替换为我自己的用于 USART0 Alt. 1的代码:

    define XNV_UART_INIT ()\
    ST(\
    /*模式选择 UART0 UART 模式作为主设备。 */\
    U0CSR = 1;\
    \
    115200波特的//设置。 */\
    U0GCR = 11;\
    U0BAUD = 216;\
    \
    /*将位顺序设置为 MSB */\
    U0GCR |= BV (5);\
    \
    /*将 UART0 I/O 设置为 P0引脚上的备用1个位置。 */\
    PERCFG |= 0x00;// U0CFG *//
    \
    /*在 I/O 引脚上选择外设功能*/\
    P0SEL |= 0x0C;/* SELP0_[7:4]*/\
    )

    当我尝试构建项目时、我会遇到数百个错误。

    我错过了什么吗?

    Tony
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果打算使用 UART0 alt.1、则应在代码中使用"PERCFG &=(~0x01)"而不是"PERCFG |= 0x00;"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已从 hal_board_config.h 中删除 XNV 代码、并将以下代码放入 BLE_Bridge_Main 中:

    int main (空)

    (笑声)
    //配置 USART0 Alt.1 UART 模式
    uartMapPort (1、0);
    (笑声)


    我已经使用 uartMapPort(...) 直接从设计说明 DN112文档中运行:

    void uartMapPort (unsigned char uartPortAlt、unsigned char uartNum){

    //如果需要 UART 端口替代1
    if (uartPortAlt = 1){

    //如果需要 UART0
    if (uartNum =0){

    //为备用1配置 UART0 =>端口 P0 (PERCFG.U0CFG = 0)
    PERCFG &=~0x01;

    //为外设功能配置相关端口 P0引脚:
    // P0SELP0_2/3/4/5 = 1 => RX = P0_2、TX = P0_3、CT = P0_4、RT = P0_5
    P0SEL |= 0x3C;

    //将相关端口 P1引脚配置回 GPIO 功能
    P1SEL &=~0x3C;

    //否则(需要 UART1)

    否则{

    //为备用1配置 UART1 =>端口 P0 (PERCFG.U1CFG = 0)
    PERCFG &=~0x02;

    //为外设功能配置相关端口 P0引脚:
    // P0SELP0_2/3/4/5 = 1 => CT = P0_2、RT = P0_3、TX = P0_4、RX = P0_5
    P0SEL |= 0x3C;

    //将相关端口 P1引脚配置回 GPIO 功能
    P1SEL &=~0xF0;


    //否则(需要 UART 端口替代2)

    否则{

    //如果需要 UART0
    if (uartNum =0){

    //为备用2配置 UART0 =>端口 P1 (PERCFG.U0CFG = 1)
    PERCFG |= 0x01;

    // P1SEL.SELP1_2/3/4/5 = 1 => CT = P1_2、RT = P1_3、RX = P1_4、TX = P1_5
    P1SEL |= 0x3C;

    //将相关端口 P0引脚配置回 GPIO 功能
    P0SEL &=~0x3C;

    //否则(需要 UART1)

    否则{

    //为备用2配置 UART1 =>端口 P1 (PERCFG.U1CFG = 1)
    PERCFG |= 0x02;

    // P1SEL.SELP1_4/5/6/7 = 1 => CT = P1_4、RT = P1_5、TX = P1_6、RX = P1_7
    P1SEL |= 0xF0;

    //将相关端口 P0引脚配置回 GPIO 功能
    P0SEL &=~0x3C;




    该项目现在可以编译和下载、但我仍无法在串行终端中获取数据(我已验证我仍在从 Android 应用接收数据)。

    我还需要检查什么吗?

    Tony
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议您使用 IAR 来调试它。 您可以在发送 UART 消息之前设置断点、并检查所有相关寄存器的正确性。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    寄存器看起来不错...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请勿使用 while 循环发送 UART TX。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我移除了 while 环路、但它没有影响
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能向我展示 sendDataToHost 中的内容吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

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

    它设置为零...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    一切看起来都很好。 在执行 HalUARTWrite 时、是否使用示波器检查 P0.3?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已使用示波器进行检查、但没有收到信号
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您使用什么 CC2540 EVB?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不使用 EVB、我使用的是定制板
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我解决了这个问题。 在电路板完全初始化之前、我正在执行 UART 重映射、即在 InitBoard (OB_Ready)之前调用 uartMapPort (1、0)、应该在之后。 我现在在串行终端中成功接收数据