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/TM4C123GH6PM:UART:如何从 FIFO 读取下一个字符而不将其删除?

Guru**** 2482225 points
Other Parts Discussed in Thread: ENERGIA

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/719142/ccs-tm4c123gh6pm-uart-how-to-read-next-char-from-fifo-without-removing-it

器件型号:TM4C123GH6PM
主题中讨论的其他器件:TM4C123ENERGIA

工具/软件:Code Composer Studio

您好!

TivaDriverLib 中是否存在与 Serial.peek() energy 函数等效的函数?

UARTCharGetNonBlocking 从 FIFO 中获取下一个字符、但将其删除。 我需要能够读取它、但将其保留在 FIFO 中。 如何做到这一点?

谢谢

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

    大家好、上一页、

    我想说的是-这是一个多么了不起、深思熟虑的问题!   做得非常好!

    现在你没有透露、"为什么你要寻求这种能力"-但如果"你的需求"证明 "一般利益"-这是否能确保更广泛的兴趣?    以及 为您投入(甚至更多)时间/精力?

    我的小组负责检查(多个) ARM MCU 供应商采用的"不同 FIFO 方案"。   

    因此,如果不可能的话,用“高度可识别”的“ 模式和/或值”“将 FIFO“传送” ,然后... 尝试发现、"如何及在哪里"-存储此类 FIFO 数据 

    必须"希望"-如果这种方法发现 MCU FIFO 的存储(甚至瞬态存储)机制-这样的 FIFO 内容"读取和/或复制"(到"更方便"的用户位置)-本身不会-卸载/解压 FIFO ...

    产生这样一种“有意识”的方法(“松散”使用的术语)会让您使用 API 函数... 然而(仅限于)"读取和存储" FIFO 内容- 并且立即"遵循该内容"并完全重新加载 FIFO ...   (请信赖我-这是否可行... 我将(否则)拒绝授权。)

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

    我为何要这种能力?
    我正在尝试将在 Arduino 上制作的项目移植到 TM4C123。

    此外、该项目还与 RS485总线交互。

    由于从站响应速度非常快、因此 Arduino 无法区分主站的消息和从站的消息(消息之间没有暂停)、因此我在该总线中遇到了问题。 我发现的唯一方法是每次遇到"4"(EOT)时、检查下一个字符是"1"(SOH)还是"6"(ACK)、这意味着消息已达到结束(消息中间有时会出现"4")。

    在 Arduino 上、我使用 peeke()函数执行此操作。 Energia.nu/Serial_Peek.html

    这就是为什么我要尝试一种方法来执行相同的操作。

    我看过 Energia 透视图的实现、但似乎他们重建了自己的 FIFO (循环缓冲器)

    我对 TM4C123非常陌生。

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

    感谢您-事实证明、"Arduino"很难(可能)"超出性能" ARM 器件。

    从更广泛的意义上讲-现在您已经将'RS485识别为"在运行中"-在这种 RS485总线事务中(通常)遇到的这种(确切的)挑战是不是吗?   我可以(仅限于)回忆起"快速切换 RS485差分线路驱动器"从发送到接收的(已知)愿望。   (避免-总线输出争用!)

    这就是说、我不能像您所描述的那样、在"级联"中回忆'多条消息-无停顿地到达'。   必须询问-是否"无暂停"消息到达、"确认和/或正常/习惯" RS485、 标准操作程序?

    创建一个单独的缓冲器(由另一个缓冲器实现)(以替换或扩充此 MCU 的 FIFO)似乎是一种有效的方法。

    您未提及(或)先前提出的2项建议。   您(已经)有没有得出结论、如果有、您是否能描述您的"成功"?

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

    我查看了器件数据表、了解如何处理 MCU 的 UART FIFO 操作、找不到任何允许您执行所指示的操作的功能。 访问数据的唯一方法是从我可以看到的内容中读取数据。

    我喜欢 CB1的想法、即使用单独的缓冲区来实现这一目的、在这种情况下、缓冲区中填充了 UART 数据、然后您可以随意"浏览"缓冲区、以做出您需要的决定。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、Ralph。

    我们是否可以问-您(有)是否知道将此类'FIFO'数据存储在何处?   (员工认真"梳理"了几本 MCU 手册、甚至连提示都不是"最轻"。)

    您的指导-非常感谢您的接受-同时(跳板)深入了解 FIFO!

    我们的想法是使用"易于识别"(大小适当)的数据模式"将 FIFO "传送"、然后(简单)搜索。   (在 RAM 和 MCU 寄存器中)  、这可能(也可能)证明(另一种)是指"扩大 FIFO 机制的使用和理解"、这几乎可以确定为"提高用户能力和成就!"

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

    您好、Rsh、

    您写的内容:“我不能像您描述的那样,在“级联”中调用“多条消息-无暂停到达”。  "

    我正在研究与几件硬器件的沟通、我遇到了许多硬件、它们会立即响应一条令人发指的消息。
    我在 RS232中遇到过这种情况、但这不是问题、因为答案不在同一信道上。
    在 RS485上、主从数据在同一通道上接收。 我已在示波器上确认、答案是最短的延迟。 这样 、while (UARTCharsAvail (UART0_BASE) )不会在正确的位置暂停、以便能够区分主设备和从设备。

    无论如何、我将研究其他解决方案、例如拥有自己的 FIFO。

    感谢您的解释。 我没有想象 FIFO 是如此的隐蔽!

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

    希望您的"报告"和调查比 您的"作者认知"更准确-如上所述...

    您注意到的主要"解释"-来自 Ralph 的 sprang (不)。  (Ralph 非常恰当地指出、他"找不到任何功能来满足您的目标" 、虽然很感激、但他却不是"解决问题"。)

    您如何确定-该帖子-是否"解决了您的问题"-证明可疑 -不是吗?    而且、前两条建议(在这里的第一个回复帖子中)仍然不会给出您的评论...