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.

[参考译文] CCS/TM4C1294NCPDT:UART TTL 至 RS 485协议

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/809788/ccs-tm4c1294ncpdt-uart-ttl-to-rs-485-protocol

器件型号:TM4C1294NCPDT
主题中讨论的其他器件: SN65HVD1782EK-TM4C1294XL

工具/软件:Code Composer Studio

你(们)好

能否有人可以为我的应用帮助我如何将 UART TTL 转换为 RS 485。 我知道我需要一个使能引脚来传输消息、但我应该如何为微控制器配置引脚。  

代码执行同样的操作将会大有帮助。

提前感谢您。

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

    您好!

     您正在谈论什么使能引脚? 此帖子可能有助于 https://e2e.ti.com/support/microcontrollers/other/f/908/p/800573/2967482?tisearch=e2e-quicksearch&keymatch=rs485#2967482

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

    你(们)好,查尔斯

    感谢您的回复。 我所讨论的使能引脚是一个使能使用 SN65HVD1782传输到 RS 485的引脚。 但我的问题是如何使用 Code Composer Studio 配置微控制器 TM4C1294NCPDT 的引脚。

    如果没有、我还可以使用微控制器的 RTS 引脚并将其连接到 RS485的 DE、RE?

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

    您好!

     您能否使用 GPIO 引脚驱动使能引脚?

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

    您好、Charles、

    是的、我可以使用 GPIO 引脚来启用传输。 但我无法这么做、因此如果您有演示代码、说明如何将 GPIO 引脚更改为用作 RS 485的使能引脚、这将真正有助于我的应用。

    提前感谢。

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

    永怀、您好!

     GPIO 非常简单。 您可以参考 TivaWare hello、blinky 或 project0来获取有关如何使用 GPIO 引脚的一些想法。 下面是闪烁示例中的代码片段。  

    #define USER_LED1 GPIO_PIN_0
    #define USER_LED2 GPIO_PIN_1
    
    //*********
    //
    //如果驱动程序库遇到错误,则调用的错误例程。
    ////
    *****************
    #ifdef debug
    void
    __error__(char *dpcFilename、uint32_t ui32Line)
    {
    
    #endif
    
    //*********
    //
    ////主"C"语言入口点。 使用 TivaWare 切换 LED。
    ////
    *****************
    int
    main (void)
    {
    uint32_t ui32SysClock;
    
    //
    //从 PLL 以120MHz 运行。
    //
    ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN |
    SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_480)、120000000);
    
    //
    //启用并等待端口准备好访问
    //
    SysCtlPeripheralEnable (SYSCTL_Periph_GPION);
    while (!SysCtlPeripheralReady (SYSCTL_Periph_GPION))
    {
    }
    
    //
    //为 LED 操作配置 GPIO 端口。
    //
    GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、(USER_LED1|USER_LED2));
    
    //
    //永久循环
    //
    while (1)
    {
    //
    //打开 LED
    //
    GPIOPinWrite (GPIO_PORTN_BASE、(USER_LED1|USER_LED2)、USER_LED1);
    
    //
    //延迟一位
    //
    SysCtlDelay (ui32SysClock/6);
    
    //
    //打开 LED
    //
    GPIOPinWrite (GPIO_PORTN_BASE、(USER_LED1|USER_LED2)、USER_LED2);
    
    //
    //延迟一位
    //
    SysCtlDelay (ui32SysClock/6);
    }
    } 

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

    尊敬的先生:

    很抱歉耽误你的回答。  

    当我开始传输时、我尝试执行输出高电平 GPIO 引脚的功能、并在传输完成时将其变为低电平。 但问题在于、我在哪里调用这些函数、以便在 RS485级别获取数据。

    我附加了创建的函数的屏幕截图。 我还启用、配置 GPIO PB5。 您能不能建议我在哪里调用这些函数。

    提前感谢。

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

    您需要使能引脚的目的是什么? 您能详细介绍一下吗? 我不知道您的系统设计。 如果您只需要将 GPIO 用作使能引脚、那么为什么在开始 UART 传输之前不启用该引脚? 您是否未调用 UARTCharPut 来传输数据? 在调用 UARTCharPut 之前、我本以为您启用了该引脚。 至于在 UART 传输开始之前使能引脚需要提前多远、您需要自行了解时序问题。  

     据我所知、RS485 是一种标准、它指定两条线路上的差分信令、而不是像 UART 那样以接地为基准的单端电压。 差异是在电气级别而不是协议级别。 请参见下面的。

    https://www.electronicdesign.com/what-s-difference-between/what-s-difference-between-rs-232-and-rs-485-serial-interfaces

    https://www.ftdichip.com/Support/Documents/TechnicalNotes/TN_111%20What%20is%20UART.pdf

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

    尊敬的先生:

    是的、先生、我知道、在传输前必须将使能引脚拉高、在传输后必须将其禁用。 但是、在 S2E 的示例代码中(因为我需要的应用是输出串行为 RS485的以太网转串行转换器)、 正在使用队列和调度、因此我不知道应该在哪里调用启用和禁用函数。 我无法找到在主函数中调用 UARTCharPut 函数的位置以及实际定义函数的位置。

    我不熟悉这种编码、请提供帮助。

    谢谢你。

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

    您好!

     首先、您从未提到过您正在使用引用 Enet_s2E 的以太网转串行应用。 如果您使用的是 Enet_S2E 示例、请在 serial_task.c 文件中查找 UARTChakut。 您需要四处走动以找到激活使能引脚的最佳位置。 我强烈建议您从一个简单的 UART 示例开始、并了解它在您的系统中的工作原理以及在您进入 S2E 之前将 ENABLE 引脚放置在何处、S2E 是一个非常复杂的应用。 一旦确定如何相对于 UART 事务激活 ENABLE 引脚、您便可以稍后迁移到 S2E。 您可以在下面的 TivaWare 中找到 UART 示例 /examples/boards/ek-tm4c1294xl/uart_echo.

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

    尊敬的 Charles:

    非常感谢您的建议。 我将尝试按照您的说法进行操作、并测试我的应用。