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.

[参考译文] EK-TM4C1294XL:使用 FTDI 线缆连接到芯片(从 PC USB 连接到芯片#39;s UART0)

Guru**** 2481885 points
Other Parts Discussed in Thread: EK-TM4C1294XL, TM4C1294NCPDT, EK-TM4C129EXL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/699019/ek-tm4c1294xl-connecting-to-the-chip-using-ftdi-cable-from-pc-usb-to-the-chip-s-uart0

器件型号:EK-TM4C1294XL
主题中讨论的其他器件: TM4C1294NCPDTEK-TM4C129EXL

如何使用此电缆(USB 一侧-> GND、VCC、TX、RX 另一侧)连接到电路板的 UART 0?

是否有直接连接的方法或我是否需要焊接?

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只需进一步解释我要实现的目标:
    我的目标是能够使用 FTDI 线缆(通过 UART0)直接从我的 PC 对 TM4129 EMCPDTI3芯片进行编程。 在我的最终电路中、我将从另一个电路(而不是 PC)执行此操作。 使用 LaunchPad 评估套件是否可以实现? 我是否需要特殊焊接?

    以这种方式对芯片进行编程的预期结果是、在我上载没有引导加载程序的程序后、我将无法使用此类连接再次上载-仅从 microUSB 输入上载。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Liran、

    您说的是"这条电缆"、但不提供器件型号或图像、因此我无法确定您是否需要焊接。 如果引脚的 UART 侧有母接头、则应能够将其插入、否则可能需要进行焊接。

    我的理解是、您将使用 UART 引导加载程序(通过闪存引导加载程序或 ROM 引导加载程序)通过 FTDI 下载固件、然后固件本身将没有引导加载程序、因此这是一次性编程方法? 如果是、您应该能够使用 LaunchPad 实现此目的、只需确保通过发送的 UART 通信正确调用引导加载程序即可。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     谢谢。 FTDI 线缆有一端常规 USB 连接、而另一端4线- VCC、GND、Tx 和 Rx -所有公头都通过以下方式焊接到 launchpad 板上:

    VCC (红色)-> 5V

    GND (黑色)-> GND

    TX (绿色)-> PA1 (引脚76)

    RX (白色)-> PA0 (引脚74)

    我现在要做的是向闪烁程序 make 添加代码、它每隔几秒通过 UART0发送一些数据。 我正在使用此电缆并编码客户端 PC 应用程序以打开串行 COM 端口来读取数据-只是为了确保通信通过 UART0工作。

    当我用电缆连接设备时、设备会被识别、但出现错误-请参阅所附文件。 这是否正常(当前上传的设计是原始的闪烁示例)?

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

    您是否从 Proliic 网站下载并安装了驱动程序? www.prolific.com.tw/.../ShowProduct.aspx

    USB 转 UART 桥接器通常需要安装驱动程序才能正确枚举。

    您还需要翻转绿色和白色引脚。 您需要将 FTDI 的 TX 连接到 TM4C 的 RX、反之亦然。 PA1是 UART TX、PA0是 UART RX、因此您需要翻转这些连接。

    对于 Vcc、如果您尚未验证、我会仔细检查器件的数据表或产品说明书、以确保它需要5V 而不是3.3V 电压。

    进行这些调整、看看您是否可以实现预期的操作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢! 驱动程序+ Tx/Rx 电缆达到了目的:)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    安装驱动程序后、我可以看到设备正常-"Prolific USB to serial"。 我尝试执行了"PL2303_CheckChipVersion_v1006.exe"、该文件随驱动程序提供了正确的 COM 端口、并得到了良好的响应:

    我现在要做的是使用闪存器工具通过 UART 对芯片进行编程、以确保该过程正常进行:

    当我尝试"program"时、我收到以下错误:

    我在使用 boot_demo1、boot_demo2和 boot_serial 示例通过常规 microUSB 连接对芯片进行编程后尝试执行此操作-这些示例都不起作用。

     我在这里出了什么问题?

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

    让我们检查问题是来自 UART 端还是引导加载程序代码端 如果闪存擦除器件、请查看器件是否允许您进入引导加载程序。 通过闪存擦除、您将提示调用 ROM 引导加载程序、如果您可以连接到该加载程序、我们知道问题出在闪存引导加载程序固件上。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不确定我是否得到了它。 我执行了以下操作(从 USB 端口):

    然后尝试通过 UART 进行编程?

    谢谢。

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

    正确。 完成此操作后、返回到手动配置选项、选择串行 UART 选项、并填写波特率等的详细信息、然后查看是否正确连接。

    另外、请确保通过器件管理器正确配置 COM 端口以获得正确的波特率。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗯、我将 COM 端口更改为115200 (它是9600):

    并使用以下设置再次执行了擦除:

    我仍然会得到错误:

    但是、我认为与电缆的通信是可以的、因为通过像以前那样运行驱动程序测试应用程序(PL2303_CheckChipVersion_v1006.exe)、可以产生良好的响应:

    你怎么看?

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

    除了测试实用程序之外、我还使用"UART_ECHO"示例对芯片进行了编程、并且能够接收我从 Windows 应用程序发送的字节、因此电缆看起来不错-只是引导加载程序不工作。

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

    很抱歉耽误你的时间、我星期五出去了。

    我认为您的设置应该可以、我同意 UART 通信似乎可以。 我知道引导加载程序是一个被调用的过程、因此我想知道使用 FTDI 是否会阻止该过程正常发生。 我不这么认为。

    我确实从另一家供应商那里找到了一条 USB 转 UART FTDI 线缆、因此我可以将其连接到我的 LaunchPad 之一并自行进行一些测试、因此我计划明天就执行该操作、看看我可以通过什么方式发现这种情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢! 我对此表示赞赏。

    我还需要提及的另一个变化是、您可能也会遇到:
    我的 Prolific COM 端口有一个奇怪的问题-有时,如果我断开/重新连接电缆或将计算机置于睡眠状态并将其唤醒,则会发现有错误(计算机管理中 COM 端口附近的感叹号)。
    我读了一些内容、发现这可能是一个不稳定的电压问题、所以我现在使用的是这种类型的"USB 转 UART"适配器:

    www.ebay.com/.../310511987503

    驱动程序从此处获取:
    www.silabs.com/.../usb-to-uart-bridge-vcp-drivers

    COM 端口的问题现已解决、我可以在没有问题的情况下断开/重新连接、但前面介绍的所有问题仍然相同-"UART_ECHO"示例工作正常、但闪存器在相同的配置下无法正常工作。

    我将等待您的更新-再次感谢:)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Liran、

    好的、感谢您提供的信息。 我实际上非常熟悉 Silabs USB 转 UART。 我支持使用 CP2102的 EVM。 我认为我发现的电缆将与您的电缆一样工作、因此希望这将揭示正在发生的情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、太好了。 我刚刚尝试使用控制台闪存实用程序、并得到相同的错误:
    --------------------------
    C:\ti\TivaWare_C_Series-2.1.3.156\tools\bin>sflash.exe c:\safeshoot\blinky_slow.bin -p 0x4000 -c 7 -b 115200 -d -s 252

    应用程序:C:\safeshoot t\blinky_slow.bin
    程序地址:0x4000
    COM 端口:\\.\COM7
    波特率:115200
    擦除闪存:
    发送下载命令失败
    --------------------------
    我在闪存擦除之后用"boot_demo"尝试过它、之后用"boot_demo"尝试过它-所有程序都出现相同的故障。

    该实用程序的源代码包含在其中、因此在我们解决此问题后、它将对我的实施方案大有帮助。

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

    我能够使用 FTDI 线缆通过引导加载程序下载代码。 以下是我已采取的步骤。

    1) 1)通过测试 UART_echo 验证了 FTDI 电缆功能
    2) 2)从 TivaWare 中导入 EK-TM4C1294XL LaunchPad 的"boot_serial"示例、该示例是为 UART0配置的默认值。
    3) 3)构建"boot_serial"并刷写到 LaunchPad
    4) 4)通过串行(UART)连接到 LMFlash
    4A)已验证波特率设置为115200 (同时确保设备管理器已确认为115200波特)
    4b)将传输大小设置为60 (默认值)并选中"Disable Auto Baud Support"
    5) 5)转到"program"选项卡并浏览到 TM4C1294NCPDT 的示例(在本例中、我在 CCS 中导入并编译了"闪烁")
    6) 6)点击"Program"。 LMFlash 下载了该程序、没有任何问题、并报告编程已完成。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph。

    我关闭了所有项目并重新打开了它们、并执行了您描述的所有步骤+将上传的映像的起始地址设置为0x4000、现在似乎可以正常使用 boot_serial 项目。

    谢谢!

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

    您好、Ralph。

    最后通过 UART 对其进行编程后、我在 C#中实现了上传协议、并在将 BOOT_serial 编程到芯片中时尝试在调试 C#端应用程序时上载 bin 文件。

    我不确定这是不是原因、但我无法使用 UART 的 LM Flasher 上载任何其他 bin 文件-仅从 USB 上载、这也意味着我无法从我的 C#应用程序上载此文件。

    我上载了 UART_echo 程序、运行正常-我能够接收通过 UART 发送的字节、但在执行以下操作(之前的步骤)后:
    整个闪存擦除
    使用"TivaWare_C_Series-2.1.3.156\examples\boards\ek-tm4c129exl\boot_serial\ccs\Debug\boot_serial.bin"对芯片进行编程
    使用之前的相同配置再次将配置更改为手动(UART)
    尝试对"TivaWare_C_Series-2.1.3.156\examples\boards\ek-tm4c129exl\blinky\ccs\Debug\blinky.bin"进行编程
    按下"Program"按钮时、我会遇到与之前相同的错误。

    有什么想法吗?

    我检查的另一件事是:

    我可以在"TivaWare_C_Series-2.1.3.156\boot_loader\BL_UART.h"中看到 UART 的 Tx/Rx 的以下定义

       //
       //
       //这定义了引导加载程序正在使用的 UART 接收引脚。
       //
       //
       #define UART_RX                (1 << UART_RXPIN_POS)
       #define UART_RX_PCTL           (UART_RXPIN_PCTL <<(4 * UART_RXPIN_POS))

       //
       //
       //这定义了引导加载程序正在使用的 UART 发送引脚。
       //
       //
       #define UART_TX                (1 << UART_TXPIN_POS)
       #define UART_TX_PCTL           (UART_TXPIN_PCTL <<(4 * UART_TXPIN_POS))

    对吗? 它是否将 PA0和 PA1引脚设置为 Tx/Rx?

    BTW -是否有调试 boot_serial 的方法? 它没有"main"、如果我可以在引导加载程序的 UARTSend/UARTReceive"调用上执行 BP、那将是一件好事。

    谢谢

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

    您好、Liran、

    关于 BL_UART.h 问题、如果您查看文件顶部的#define 列表、您可以看到 UART 映射到 UART0_BASE 和引脚 A0/A1、这是正确的。

    我以前没有调试过引导加载程序、因此我不确定、但在这些调用中放置 BP 时、理论上您应该能够在 bl_packet.c 文件中执行该操作。 SendData、FlushData 和 ReceiveData 函数与您所使用的引导加载程序的函数是宏式的、因此对于 UART、这些函数将指向:

    #ifdef UART_ENABLE_UPDATE
    #define SendData UARTSend
    #define FlushData UARTFlush
    #define ReceiveData UARTReceive
    #endif 

    关于为什么引导加载程序问题从您那里返回、我恐怕没有太多优惠、因为这听起来是您的操作顺序问题、或者可能是编译和下载代码时的问题。

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

    你(们)好。

    我终于发现了为什么闪存 boot_serial.bin 后无法通过 UART 上传的问题-我必须选中"编程后重置 MCU"才能使其正常工作。 当我来自 Arduino 世界时、我不知道编程结束时它不会重新启动-此问题最终得到解决。

    但是-我有几个问题:

    1.当我通过单击 boot_demo1上载 boot_demo1、然后-> debug 时、LED 开始闪烁、但如果我断开设备的电源线(关闭电源)、然后重新连接、LED 不会闪烁-为什么? 该程序是否应该以相同的方式启动断电/上电?

    2.有时、当我单击项目时、项目不会变为活动状态、例如-我无法使 boot_demo2处于活动状态(请参阅图片2以了解如何打开它、并参阅3 -因为它在单击后不会变为活动状态)-为什么会这样? 如果我尝试使用 "open project from file system"仅打开嵌套 boot_demo2/ccs 文件夹->它可以被激活、但不会编译。

    3.我无法使 boot_serial 处于活动状态、因此无法对其进行调试-请参阅图片1 (我注意到它没有 main.c?)。

    我已经为芯片创建了一个新项目、并通过它执行了闪烁的项目、以查看我需要进行哪些项目更改才能使其正常工作、并使其正常工作。 下一步是将引导加载程序代码添加到该项目中、使其闪烁并侦听来自 UART 的编程、但我需要一个工作示例、我可以对其进行调试、以了解我需要在项目中实现什么。

    BOOT_DE演 示1的工作方式很奇怪、正如我在 Q1中所述、但即使我在按下 SW1 (恰好在 DEBUG->START 之后)后尝试上载程序、它也不会加载并显示常规通信错误。


    谢谢

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

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

    抱歉-现已附加:

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

    似乎没有与这些项目关联的 target_config.ccxml 文件。

    我不会在您进行贴图的方法中导入工程、而是使用标题为"Project"的下拉菜单、然后选择"Import CCS Projects..." 这通常很好、但偶尔它不会选择.ccxml 作为"Active"文件、因此您可以右键单击它并找到"Set as Active Target Configuration"选项。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢-导入后、它可以加载。

    第1期怎么样?
    --
    1.当我通过单击 boot_demo1上载 boot_demo1、然后-> debug 时、LED 开始闪烁、但如果我断开设备的电源线(关闭电源)、然后重新连接、LED 不会闪烁-为什么? 该程序是否应该以相同的方式启动断电/上电?
    --
    从 code composer 上传到电路板的操作通过"Debug"完成-对吧? 我这样做了吗?

    我认为、当我关闭/打开电源时、预期的行为是闪烁开始并等待按下 SW1。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    调试项目与使用 LM Flasher 加载编译的映像的行为似乎不同:

    在 Code Composer Studio 中、"blinky"处于活动状态->按"Debug"、然后按"Resume"按钮->结果是 LED 开始闪烁
    芯片断电/通电- LED 闪烁-这很好。

    从 LM Flasher 应用程序:
    1.已检查"编程后重置 MCU"、地址0x0、配置快速设置为 TM4C1294XL Launchpad、端口:JTAG (通过 USB 上传)
    2.使用"c:\Users\Developer\workspace_v7\boot_serial\Debug\boot_serial.bin"(用于项目的相同文件夹)对器件进行编程
    3.程序成功
    4.在 LM Flasher 中-更改为手动配置(UART 设置)
    5.选择图像"c:\Users\Developer\workspace_v7\blinky\Debug\blinky.bin"
    6.程序地址0x4000、选中"程序后重置 MCU"
    7."program"按钮->成功。
    8.没有 LED 闪烁

    我已尝试关闭/打开设备电源,但仍然没有闪烁。 原因是什么? 0x4000是对其进行编程的正确地址吗?

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

    您好、Liran、

    您是否已将.cmd 文件中的 app_base 更改为 blinky 地址为0x4000并调整代码长度以正确反映新范围?

    #define APP_BASE 0x00004000
    #define RAM_BASE 0x20000000
    
    //系统存储器映射*/
    
    存储
    器{
    /*存储在内部闪存中并从内部闪存执行的应用程序*/
    闪存(RX):origin = app_BASE,length = 0x000fc000
    /*应用程序使用内部 RAM 进行数据*/
    SRAM (rwx):origin = 0x20000000,length = 0x00040000
    } 

    如果不可能、CCS 会覆盖您的引导加载程序、因此似乎不会有太多问题、但在 LMFlash 中、您无法正确加载程序。

    请注意、上述代码来自 boot_demo1示例的.cmd 文件。

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

    很多人——即将呼吁“众笑规则”(因为 Thread 已扩展 到3个论坛页面——28个“背面”)——真的希望(“这是”)证明(最后)正确!

    Thread 的标题"使用 FTDI 线缆连接到芯片" - 具有"小"关系(待人友好)-与一直在曲折中的帖子之间的关系-始终如一地找到(近)-此处...  (至少、正如拉尔夫一样、这个线程应该(正确)被斩成"适当"  的-论坛条目。

    我们很高兴海报成功(希望)-但看到( 无聊和不准确)的“FTDI 线缆”“却“厌倦”-每天(几乎)在论坛上飞溅!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不过、这一点很好-整个流程仅与一个主题相关-使引导加载程序代码可以在另一个项目中使用。 这个主题肯定会发生变化、但我认为这一切都与一个主题相关。

    另一个需要考虑的重要因素是、将其斩波到不同的线程需要从一开始就解释整个流程、以便支持人员了解导致当前问题的原因。

    最后-我相信支持团队的主要目标是帮助和解决使用您产品的人员的问题、而您不必跟踪所有帖子-我建议您跳过它。 本主题中可能会有更多相关问题。

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

    [引用 user="Liran Sorani"]我建议您跳过它。

    这有点难做-(错误主题行)证明这么长-它溢出到两行!    是否真的有必要(不停地)提醒我们注意、在 PC 的 USB 和 MCU 的 UART 之间使用 FTDI 线缆(流动)?   (您可以编辑主题行-减少其影响...)

    BTW -我是一名用户说明人(但在 该供应商的产品销量中、实现了(部分)显著的销量) 并且相信任何此类"主题主题线程"都与"无法搜索"和"排气"相框、他们可能(否则)受益于您和供应商精心制作的几个要点...   

    (存在宰杀规则... 很好的理由!)    而且、多个论坛用户对我进行了 PM -要求从这个正在进行的(涉及极少 FTDI)线程中获得一些"优先"。   (您是否认为 FTDI 可能会证明此类重复(表示极大的困难/混乱)不公平、因此不会被认可?   这 一事实是否应该-不要进入您的意识?)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在做您的评论-现在我正在为每个问题使用新的主题-谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您- FTDI 是我所在集团(和供应商)的长期客户。  

    我们的经验是、他们的各种 USB 产品显然是"顶级座舱!"     因此,当他们的“品牌” - 在  “有问题的论坛主题”中经常出现(>30个帖子)时,“不能更好!”   尤其是当他们的产品已经过供应商代理和海报的验证时、他们的产品完全"无光!"

    我被要求"提供帮助"(由于我在这里的悠久历史)-非常感谢您的合作...