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.

[参考译文] TM4C123GH6PGE:示例 USB_DEV_SERIAL

Guru**** 2524460 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/847586/tm4c123gh6pge-example-usb_dev_serial

器件型号:TM4C123GH6PGE

您好!

Q1>[图1]和[图2]中的绿色条是否不变?

      绿条总是满的。

此致。

Jame、Shin

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

    Jame、您好!

     我认为绿条总是满的是正确的。 当它全绿色时、表示它是空的。 如果有转印、绿色条的一部分将用红色填充。  

     当它在 main()中首次初始化时, 调用 DrawBufferMeter()。 如果您看 一下 DrawBufferMeter 的源代码,它有以下代码,表示该表用绿色填充,表示为空。  

    //
    //用绿色填充仪表以指示为空
    //
    环境 ForegroundSet (psContext、ClrGreen);
    GrRectFill (psContext、&sRect);

    //
    //在仪表周围放置一个白色框。
    //
    环境 ForegroundSet (psContext、ClrWhite);
    GrRectDraw (psContext,&sRect);

    另请查看 UpdateBufferMeter() API,其中部分或全部绿色条根据传输状态填充为红色。  

    //
    //用红色填充整个部分(如果有任何要绘制的内容)
    //
    if (ui32FullPercent)

    环境 ForegroundSet (psContext、ClrRed);
    GrRectFill (psContext、&sRect);

    //
    //用绿色填充空白部分。
    //
    sRect.i16XMin = i32XBreak;
    sRect.i16XMax = i32X + buffer_meter_width - 2;
    if (sRect.i16XMax > sRect.i16XMin)

    环境 ForegroundSet (psContext、ClrGreen);
    GrRectFill (psContext、&sRect);

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

    您好、Charles、

    感谢你的答复。

    我用您的回答对其进行了分析。

    示例源代码似乎有问题。

    当 ui32Fullness 值变为常量时、无条件地绘制一条红色条。

    绿色条再次高速覆盖、眼睛看不到。

    如何在带有色条的 FIFO 中显示数据?

    //由主函数调用

    DrawBufferMeter (&g_sContext、40、22);

    DrawBufferMeter (&g_sContext、40、42);

    //自上次检查以来是否有任何(发送或接收)流量?

       发送  到 UART Tx 到 USB Rx 缓冲区的1个字节      (1 * 100)/256=0.390625, 结果0

      发送到 UART Tx 到 USB Rx 缓冲器的100字节      (100*100)/256 = 39.0625,  结果39

    ui32Fullness =((USBBufferDataAvailable(&g_sRxBuffer)* 100)/ UART_buffer_size);

    UpdateBufferMeter (&g_sContext、ui32Fullness、40、22);

    ui32Fullness =((USBBufferDataAvailable(&g_sTxBuffer)* 100)/ UART_buffer_size);

    UpdateBufferMeter (&g_sContext、ui32Fullness、40、42);

    //用红色填充整个部分(如果有任何要绘制的内容)

    UpdateBufferMeter (tContext *psContext、uint32_t ui32FullPercent、int32_t i32X、int32_t i32Y)

    //确定在完全(红色)段和空(绿色)段之间的断点发生的位置。

      i32XBreak =(i32X + 1)+(ui32FullPercent *(buffer_meter_width - 2)))/ 100;

              Case1> //(40+1)+(0 * 54)/ 100 = 41 + 0    = 41

              CASE2>// (40+1)+(39 * 54)/100 =  41 + 21.06 = 62

    if (ui32FullPercent)

      {

          环境 ForegroundSet (psContext、ClrRed);

          GrRectFill (psContext、&sRect);

      }

      //用绿色填充空白部分

      sRect.i16XMin = i32XBreak;

      sRect.i16XMax = i32X + buffer_meter_width - 2;

      if (sRect.i16XMax > sRect.i16XMin)

      {

          GrRectFill (psContext、&sRect

          环境 ForegroundSet (psContext、ClrGreen););

      }

      //恢复为白色,以便稍后进行文本绘图。

      环境 ForegroundSet (psContext、ClrWhite);

    此致、

    Jame、Shin

     

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

    Jame、您好!

     色条只是试图反映 TX 或 RX USB 缓冲区中可用的数据数量。 我真的看不到它有什么问题。 我看到红色从左向右变化。 请注意,只有在从 UART 的角度看存在任何发送或接收流量时,才会更新缓冲区表。 您可以尝试将大量数据(即文本文件)从 USB 传输到 UART。 您将看到 Tx 条快速变化。  

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

    您好、Charles、

    感谢你的答复

    在[图5]中、很难看到何时发送了大量数据一次。

    [图6]显示了发送大量数据时非常小的红色条变化。

    我有点难检查。

    这是否意味着我可以看到您告诉我的 TX 条快速变化?

    没有明显的变化。

    周末愉快!  ^。 ^μ A

    此致、

    Jame、Shin

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

    Jame、您好!

     请记住 USB 和 UART 在缓冲区大小方面的区别。 全速 USB 批量传输可以缓冲64字节的数据、而 UART 有一个小得多的 FIFO 缓冲区(即16)。 因此、当 UART 接收时、UpdateBufferMeter 的调用频率会比 USB 端口接收时更频繁(快得多、快4倍)。 请注意、对于 RX 条、ui32Fullness 是相对于 UART 的接收缓冲区的。  

     

    //
    //更新 TX 缓冲区的全性能。 请记住缓冲器是
    //相对于 USB 命名,而状态显示为
    // UART 的视角。 USB 的发送缓冲区是 UART
    //接收缓冲区。
    //
    ui32Fullness =((USBBufferDataAvailable (&g_sTxBuffer)* 100)/
    UART_buffer_size); 
    UpdateBufferMeter (&g_sContext、ui32Fullness、40、42);


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

    您好、Charles、

    感谢你的答复

    我理解您的说法。

    PC 主机 USB0 (Stellaris 串行 USB) TX  --- > ICD-EVB --- >Rx 16x8位 FIFO -------------------

                                                1                                         2.                              |

    PC 主机 USB1 (TivaWare 串行 USB) RX <---  USBDEV-EVB <--- USB Tx 缓冲器(g_pi8USBTxBuffer[256]) <--

                                                 USBDCDC

    PC 主机 USB0 (Stellaris 串行 USB) RX  <--- ICD-EVB <---  TX 16x8位 FIFO -------------------------------------------------------

                                                 1                                      2.                               |

    PC 主机 USB1 (TivaWare 串行 USB) TX --- >USBDEV-EVB --- > USB Rx 缓冲器(g_pi8USBRxBuffer[256]) --

                                                 USBDCDC

    1:批量输入/输出、中断输入、结束0  64字节/s

    2、硬接线 Tx/Rx FIFO 大小16字节

    Q1>通过在 UARTFIFOLevelSet ()函数中设置 FIFO 中断级别、UART_FIFO_TX4_8是什么意思 ?

          将填充4个字节、占 FIFO 总大小的25%。 因此、USBUARTintHandler ()函数被调用四次。

        总之,UpdateBufferMeter ()函数被调用16次!!

    此致、

    Jame、Shin

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

    Jame、您好!

     您的理解是正确的、不同之处在于  UART_FIFO_TX4_8 将以 FIFO 的一半(16字节中的8字节)或50%的频率进行中断。 因此 、USBUARTintHandler 的调用速度比 USB 接收/发送速度快8倍。

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

    您好、Charles、

    感谢你的答复

    UART_FIFO_TX1_8、

    UART_FIFO_TX2_8、

    UART_FIFO_TX4_8、

    UART_FIFO_TX6_8、  

    UART_FIFO_TX7_8。

     

    DRL-UG 文档没有字节大小的说明。

    xxxx_TXN_n 是否意味着 N x n 位 ?

    它是如何8字节的。

    此致、

    Jame、Shin

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

    Jame、您好!

     请转至 uart.h 文件以了解宏定义。

    //
    //
    //可以作为 ui32TxLevel 参数传递给 UARTFIFOLevelSet
    并由 UARTFIFOLevelGet 在 pui32TxLevel 中返回的值。
    ////
    *****************
    #define UART_FIFO_TX1_8 0x00000000 // 1/8满
    #define UART_FIFO_TX2_8时的发送中断 0x00000001 //发送中断(1/4满
    #define UART_FIFO_TX4_8) 0x00000002 //半满时发送中断
    #define UART_FIFO_TX6_8 0x00000003 //发送中断3/4满
    #define UART_FIFO_TX7_8 0x00000004 //在7/8满时发送中断
    
    //*********
    //
    //可以作为 ui32RxLevel 参数传递给 UARTFIFOLevelSet
    并由 UARTFIFOLevelGet 在 pui32RxLevel 中返回的值。
    ////
    *****************
    #define UART_FIFO_RX1_8 0x00000000 // 1/8满
    时的接收中断#define UART_FIFO_RX2_8 0x00000008 //在1/4满
    #define UART_FIFO_RX4_8时接收中断 0x00000010 //在1/2满
    时接收中断#define UART_FIFO_RX6_8 0x00000018 //接收3/4满#define
    UART_FIFO_RX7_8的中断 0x00000020 //接收中断7/8已满 





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

    南瓜很漂亮。  ?

    你好。、  

    每个人

    它会带来愉快的笑声。  

    此致、

    Jame、Shin

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

    Jame、您好!

     你人真是太好了。 祝您万圣节快乐、产品成功!

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

    朋友 Jame、

    Crack 员工注意到 Pumpkin #1和 CB1之间的"不可开"相似之处。   (CB1在"良好"的一天... 然而,南瓜却“避开”CB1的“1000码石!”)   幸运的是、没有信号显示:栓腿、神经/水槽或脚踝手镯/监视器。   (员工告诉你——法官不喜欢我……)

    让记录表明、"很久以前"- CB1 (婴儿)的"错误的 incisors"从牙齿童话中获取"最高美元"。   新植入的是*喜欢的*-由工作人员和大白人。   (鲨鱼 ...  因为 我们共享同一个"错误的植入体团队...")

    我们的"后台"办公室(以某种方式)在每一个万圣节都变得"受欢迎"。   (员工-令人诱惑的是:法国女佣、Stern Nurses 和 Witches - 可能会提高我们公司的形象-至少在那一天...)

    标签:否:'5x5字体、实时更新列表框或黑色猫'-在创建此(类似)帖子时受到损害...

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

    您好、Charles、

    我不知道 USB 开发串行 API 中的源代码接口。

    Q1>如何使用哪个源代码将 g_sTxBuffer 中的数据发送到 PC Rx 主机 USB1 (批量输入)?

    Q2>如何使用 PC Tx 主机 USB1的源代码(批量输出)访问 g_sRxbuffer?

    此致、

    Jame、Shin

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

    朋友 Jame、您好!

    什么-"您的"线程现在是否已升至另一个"不可伦和不可缓冲"区域?   这种独特性/精神在哪里?

    工作人员注意到,您送我们的南瓜“到达还不错”,但时间过了,不是很好!   (这里的员工注意到(现在)您的南瓜和'CB1'(由于轻微老化)都必须接受'极端治疗!'   (例如、"重建塑料手术"和"希望不高"-两者都是...)

    标签: "提问"可能"不是必需的"-对于我们商店的某些人-下一个万圣节...

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

    Jame、您好!

     请参阅下面的 usbbuffer.c 和 usbdcdcdc.c /usblib 表示源代码。 您将找到 USABufferRad()和 USBBufferWrite()。

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

    大家好,我的明星和朋友 CB1

    我想在"无南瓜"的荒芜地区找到肥沃的土地来种植南瓜。

    非常基础,在简单的地方寻找想法!!

    我将为抗衰老药物发送维生素 E。

    我可以向您提出问题。

    Q1>数据写入 TxFIFO 时、是否会立即自动发送到 UART0 Tx 引脚?

        还是根据 FIFO 存储器中的中断级别50%设置将其发送到 UART0 Tx?

    周末愉快!

    此致、

    Jame、Shin

    标签: 下一个万圣节的南瓜种植。

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

    您好 Jame、

    请务必感谢供应商的 Charles 快速而完整的回答!   (关于他的明确指导: USABufferRad()和 USBBufferWrite()。)

    假设"装满溢出的碗"-包括 一个很好的罕见的层块、"菲力牛排"-在蔬菜旅下面缠住(短暂)。   我们的"成长中的男孩"需要"真正的蛋白质"-您会意识到。

    员工大约在20分钟内到达-他们会建议/告知您的 UART_TX 问题...   (他们肯定会"注意"您包含的"正确的、汇总后的标签"、而不是默认值(哦、太糟糕了-非描述性)...)

    "翻滚"-裂缝 crüe 报告(这是直接从'351'手册收集的):

    "为了进行传输、数据被写入发送 FIFO。 如果 UART 模块使能、那么将按照 UARTLCRH 寄存器中的参数开始发送数据帧。  数据将继续传输、直到发送 FIFO 中没有剩余的数据。"

    ' FIFO 产生中断的触发点由 UART 中断 FIFO LEVELSelect (UARTIFLS)寄存器(见922页)控制。   两个 FIFO 都可以单独配置为在不同级别触发中断。   可用配置包括⅛、¼、½、¾和⅞。"

    现在-针对您的具体问题:

    1) 1)"当数据写入 TxFIFO 时、是否会立即自动发送到 UART0 Tx 引脚?"    您对"立即"的定义是什么?   (这很重要-不是吗?)   未启用 FIFO -员工注释(near)来自 UARTn_TX 的立即输出。   (通过 O 范围观察到)

    2) 2)"是否根据 FIFO 存储器中的中断级别50%设置将其发送到 UART0 Tx?"   本手册从未具体说明 UART 输出与中断级别之间的链接。   (或者-员工和我无法(轻易)找到它。)   怀疑 UART_TXN 输出被中断级别"扣为人质"-您应该能够设计一个简单的测试进行确认。   (员工不懒惰-这是一个很好的"学习工具...")

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

    您好 CB1、

    CB1说>您对"立即"的定义是什么?  (这很重要-不是吗?)  

    a>在 USB_DEV_serial API 中、UART_FIFO_TX4_8通过一半 FIFO (16个字节中的8个字节)或50%中断配置启用

    CB1说>不启用 FIFO -员工注释(near) UARTn_TX 的立即输出。   (通过 O 范围观察到)

    a> 即 、从 USB1传输串行终端发送1个字节字符立即从 USB0接收串行终端接收1个字节字符。

    Q1>用 CB1和教职员工的话来说、如果启用 FIFO、它是否会等待 FIFO 中的8个字节、然后将其打印到下一个 USB0 (通过 ICD)接收终端窗口?

         (自我反思,我的想法和行动很懒,现在没有 O 范围)

    此致、

    Jame、Shin

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

    向本论坛的"艺术总监"致以问候。    虽然您的创造力(可能)"有些疼痛"-但您已经为另一种"贫瘠的平原"增添了活力

     尽管周日晚8点才到-只有3名员工“进来”-我们所有人(突然)都饿了!   ("感谢"(以某种方式)论坛的艺术总监!)

    没有示波器会使您处于"真正的劣势"-尤其是在部署串行接口时。   (即 SPI、I2C、CAN -最显著)

    这句话——不是一个“创意和资源”足以向这个“菲力牛排”(否则)“剪切/粘贴普通”——能够“想象”“替换/替换”?

    现在、范围提供了两个主要优势:

    • 注意 信号是否存在
    • 揭示了"信号到达的平衡性"-通常非常详细
    • 通常允许(合理)准确、"定时测量":
      • 信号宽度
      • 信号相互"定时关系"的识别
      • 有时扩展到"频率和 占空比"测量和显示

    现在-要回答您的特定问题- 不仅是"到达时间"(甚至是"如果信号到达")-您的真正问题吗?

    这里的年轻员工认为、"是这样的"、因此可以 (以某种方式)检测到信号的"到达/存在"  又不能检测到示波器?

    员工-"破坏"您的"艺术档案"(至少在"档案"中)-演示:

      此外当"存在、生成(和/ 或脉动)"证明感兴趣和/或值时、"足够的范围替代"。   

    虽然"计时"信息 似乎不可用-也可以通过(富有想象力)"精简":

    • '反馈您的信号-'UARTn_TX'(在本例中)
    • 更改为" MCU (多个)计时器引脚中的一个(多个-甚至更好)"
    • 输入一些"十六进制"计时器编程"
    • 然后”启用 “定时测量”-没有任何范围...  

    标签:  当"无范围"证明"无借口!"时   (现在这是一个"正确的标签!")

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

    您好 CB1、

    我尊重您、我认为您很友好。

    您的帖子与上一个问题相去甚远。

    请允许我告诉您我的感受。

    很抱歉,谢谢。

    此致、

    Jame、Shin

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

    我的朋友-空闲论坛-请使用论坛(更私密)的"PM"功能。   (我们在这里有100多名员工、他们以这种方式与我们联系...)

    您将需要"启用对话"(或类似的-如果该选项已被"重新措辞")。   这是通过"论坛设置屏幕"完成的。

    员工/我认为、"而不是剪切/粘贴答案"-我们会以"构建"您的 MCU 和问题解决能力的方式"挑战您"。

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

    Jame、

    Jame shin 说:
    Q1>用 CB1和职员的话来说,如果启用 FIFO,它是否会等待 FIFO 中的8个字节,然后将其打印到下一个 USB0 (通过 ICD)接收终端窗口?

    无论是否处于 FIFO 模式、只要您写入 FIFO、传输就会开始。 有一个16字节深的 TX FIFO。 生成 TX 中断的阈值是可编程的。 假设您将 TX 中断 FIFO 触发电平编程为1/2。 这意味着只有在 FIFO 中有8个字节或更少字节时才会产生中断。 处理器可能以突发方式向 TX FIFO 写入16个字节。 在第一个字节被写入 TX FIFO 后、发送开始。 如果您使用示波器进行捕获、则应立即在 UART TX 引脚上看到开始位。 在8个字节被发出后、FIFO 中只剩下8个字节。 这是产生 TX FIFO 中断通知处理器向 TX FIFO 写入更多数据的时间。   

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

    您好、Charles、

    是否可以注意到-此类"非常相似"的数据"之前已"提交到该海报中?"

    [引用 USER="CB1_MOBILE"]

    "翻滚"-裂缝 crüe 报告(这是直接从'351'手册收集的):

    "为了进行传输、数据被写入发送 FIFO。 如果 UART 模块使能、那么将按照 UARTLCRH 寄存器中的参数开始发送数据帧。  数据将继续传输、直到发送 FIFO 中没有剩余的数据。"

    ' FIFO 产生中断的触发点由 UART 中断 FIFO LEVELSelect (UARTIFLS)寄存器(见922页)控制。   两个 FIFO 都可以单独配置为在不同级别触发中断。   可用配置包括⅛、¼、½、¾和⅞。"

    [/报价]

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

    您好 CB1、

     谢谢、很抱歉、我没收到您的回复。

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

    您好、Charles、

    我已经看到了 USBL-UG 文档和您提到的源代码。

    我了解了在 USB 主机和 API 之间发送和接收的接口。

    此外、FIFO 的描述比数据表更好地分步说明。

    很棒!!

    感谢您的讲解指南。

    此致、

    Jame、Shin