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:有关 UART 9位 API 的问题

Guru**** 2448780 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/622998/ek-tm4c1294xl-question-about-uart-9-bit-apis

器件型号:EK-TM4C1294XL

UART 9位模式、用于 MDB。

在9位模式下、EK1 UART 每隔几秒钟定期发送(主器件)、LED 闪烁、

字节在范围上可见。

EK2 UART 接收(外设)在9位模式下、LED 闪烁。

 

目前在发送器 EK1项目中、这两个 API 都包含地址 x43、即

为外设 EK2分配的地址。 我希望更清楚地了解这两个 API 中的地址。

UART9BitAddrSend

UART9BitAddrSet

 

 

如果 EK2 UART 需要将不同的字节发回主器件(EK1)、这在中的工作原理是什么

9位模式、特别是 UART9BitAddrSend 和 UART9BitAddrSet API?

 

谢谢、

Priya

 

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

    [引用用户="Priya Nadathur70"]

     如果 EK2 UART 需要向主器件(EK1)发回不同的字节、

    [/报价]

    它是否需要是"地址"? 如果是、则使用 UART9BitAddrSend 设置标志位、否则使用正常的 UARTCharSend 将使标志位保持清零状态。

    [引用用户="Priya Nadathur70"]

    这是如何工作的

    9位模式、特别是 UART9BitAddrSend 和 UART9BitAddrSet API?

    [/报价]

    UART9BitAddrSet 仅与接收器件相关。 它决定您开始接收的9位地址(以及您将在哪个9位地址上中断)。

     

    Robert

    我从这个开始、您已经了解了对9位中断的中断响应?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我从这个开始、您已经了解了对9位中断的中断响应?

    在 UART 接收中断处理程序中使用此功能可使 EK2 LED 闪烁:
    if ((((UART_INT_RX 和 ui32Status)=UART_INT_RX)||((UART_INT_9BIT 和 ui32Status)=UART_INT_9BIT)||((UART_INT_RT 和 ui32Status)== UART_INT_RT))))(){

    在 EK2项目(外设)中、我有以下 API:
    ROM_UART9BitAddrSet (UART5_BASE、0x43、0xFF);
    ROM_UART9BitEnable (UART5_BASE);

    ROM_UARTFIFODisable (UART5_BASE);

    //
    //启用 UART 中断。
    //
    ROM_IntEnable (INT_UART5);

    ROM_UARTIntEnable (UART5_BASE、UART_INT_RX | UART_INT_RT | UART_INT_9BIT);


    我使用 ROM_UARTCharPutNonBlocking 在 UART 接收中断处理程序内将另一个字节从 EK2发送回 EK1。 但我无法在示波器上看到 EK2发送 UART 字节。 我不清楚设置在哪里缺失了什么。

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

    您仍然需要弄清楚

    这将有助于查看该循环的内容

    if ((((UART_INT_RX 和 ui32Status)=UART_INT_RX)||((UART_INT_9BIT 和 ui32Status)=UART_INT_9BIT)||((UART_INT_RT 和 ui32Status)== UART_INT_RT))))(){ 

    我怀疑您将对所有三个中断源进行完全相同的处理。 你不能这么做。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我可以添加如下所示的虚拟循环:
    if ((UART_INT_RT 和 ui32Status)=UART_INT_RT){
    while (ROM_UARTBusy (UART5_BASE))

    //执行 nothng



    我仍然不清楚外设到主控传输在9位模式下是如何工作的。
    mdb 要求外设将最后一个字节上的 MODE 位置位以表示传输结束
    而不是其他。 如何执行此操作?

    目前、外设(EK2)获取时的处理没有差异
    UART_INT_RX 或 UART_INT_9BIT。 它发回一个不同的字节并使两个 LED 闪烁
    情况。

    我需要为其中一个 EKS 提供单独的电源、以便能够在另一个 EK 上运行调试器。
    我目前没有进行此设置。

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

    [引用 user="Priya Nadathur70">我可以添加如下虚拟循环:
    if ((UART_INT_RT 和 ui32Status)=UART_INT_RT){
    while (ROM_UARTBusy (UART5_BASE))

    //执行 nothng

    }[/报价]

    您可能希望将您的应用程序标记为您已接收到地址字节。 否则、这是一个良好的开始。

    [引用 USER="Priya Nadathur70">我仍然不清楚外设到主控传输在9位模式下是如何工作的。
    mdb 要求外设将最后一个字节上的 MODE 位置位以表示传输结束
    而不是其他。 如何执行此操作?[/quot]

    UART9BitAddrSend

    [引用 user="Priya Nadathur70">当前,外设(EK2)获取时,处理方式没有差别
    UART_INT_RX 或 UART_INT_9BIT。 它发回一个不同的字节并使两个 LED 闪烁
    案例。[/报价]

    如前所述、您需要更改此值。

    Robert

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

    关于使用 UART9BitAddrSend:

    说:

    EK2外设地址43。

    EK1外设地址21。

    在 EK1代码内部 、UART9BitAddrSend 应该具有43、 UART9BitAddrSet 21?

    与在 EK2代码中一样、 UART9BitAddrSend 应该具有21、 UART9BitAddrSet 43?

    我想我已经尝试过这种组合。  

    我确实到达了从 EK2发送的一个字节在示波器上可见的位置、但是  

    它不会反复触发。 为此、我在 EK1代码和 EK2代码中仅使用地址43、  

    我  在 EK2中没有 UART9BitAddrSend。

    谢谢、

    Priya

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想补充的是、在 MDB 文档中、没有用于主器件的地址、只有外设。
    除了8个数据位外、外设还使用一个模式位。 该位将在一定程度上置位
    外设与主设备之间的通信。 我不清楚如何设置该位以及如何设置该位
    使9位 UART 传输不同于具有奇偶校验的8位模式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Priya Nadathur"]在 MDB 文档中,主设备没有地址,只有外设。

    您是否可以提供该链接(MDB 文档)以便我们可以阅读/审阅?    

    如果"模式位"与"地址位"不同-我们必须知道哪个位用作"模式位"。   (假设它是8个"正常"数据位之一-(可能)阻止二进制数据的传输-或(偶数)数据≥128 (十进制)。)

    怀疑您可以通过在这个 MDB 总线上"间谍"(成功)通信来了解很多...   在没有此类 (成功)通信的情况下、有(必须)"交易示例"可以很好地说明协议、并提供各种数据交换、您可以(然后)模型...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    第9位、奇偶校验位和地址位是同一位的不同名称。

    您可以使用奇偶校验调制来仿真9位模式、根据需要替换标记和空间奇偶校验。

    TM4C 中的九位模式似乎提供了两种功能。 自动识别定义的地址、忽略所有接收到的值、直到接收到地址(之后的注释)。 其次、它提供了一种在发送时设置地址位的简单方法、软件在发送字节前确保 FIFO 为空、并将第9位置位。

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

    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我告诉过您如何设置第九位、您已经在使用这种方法了。

    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的参与-(相同)位的多个名称(以某种方式)似乎会引起混淆。
    在这张海报的努力之后- RS485在价值/易用性方面急剧上升...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    CB1_MOBILE 说:
    谢谢您的帮助-(相同)位的多个名称(以某种方式)似乎会引起混淆。

    它们就是这样做的。

    这一标准从微观的历史早期就开始出现、并孤立地发展了其术语。

    Robert

    BTW、如果您使用的9位协议要求您同时识别9位值并区分它们(即具有广播地址的协议、或使用不同的9位代码来区分数据包类型而不是地址等) 那么、这个处理器上的9位支持似乎是无用的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的所有回复。 处理器必须执行 MDB、9位模式可能以有限的方式使用、而在其他时间需要常规 UART 模式。 它还必须进行 ccTalk、其中提到了 RS485。 也许这也会使 MDB 的实现变得更容易、此时我并不理解其中的所有内容。

    我确实使 UART 地址发送按照 Tx 和 Rx 的应有方式工作。 但是、发送 ACK 字节以响应 Rx 字节似乎不起作用。 我也设置了 Tx 中断、但我希望仅有条件地触发(在接收之后)。 我似乎无法通过启用和禁用 TX 中断来触发条件 TX 中断。

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

    [引用 user="Priya Nadathur70"]还必须进行 ccTalk,其中提到 RS485 [/引用]

    RS-485和9位串行是正交技术。 您可以使用具有或不具有 RS-485的9位、也可以使用具有或不具有9位 RS-485的 RS-485。

    [引用 user="Priya Nadathur70"]通过启用和禁用 TX 中断,我似乎无法获得要触发的条件 TX 中断。

    发送中断不是这样工作的。 它们仅在 FIFO 超过触发阈值时触发。 它们不会在下面持续触发一次。 在发送中断触发之前、必须先填充超过阈值的 FIFO。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只有在 UART 接收之后才能设置 UART 发送的最佳方法是什么?

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

    [引用 user="Priya Nadathur70"]只有在 UART 接收之后才能设置 UART 发送的最佳方法是什么?

    我很确定这不是你想要的。  

    您希望在接收到数据包后发送回复数据包。 这是一个更简单的问题。 您知道、当您收到数据包时、您可以发送回复。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、我可以将 UART 接收和发送数据包作为主循环的单独部分。

    主器件到外设 MDB 通信将始终涉及一个地址字节。 但是、用于主控模式位的外设可能总是被置位、也可能不总是被置位。 如何在9位模式下解决此问题? 即使在8位模式下、这也意味着发送和接收中的奇偶校验相反。

    我不确定是否在发送器和接收器代码中正确设置了 UART_9BitAddrSet 和 UART_9BitAddrSend。 我将回顾 LED 的工作情况。

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

    [引用 USER="Priya Nadathur70">但是、用于主控模式位的外设可能总是被置位、也可能不总是被置位。 如何在9位模式下解决此问题?[/quot]

    我认为您不能使用该处理器。 这意味着您必须对主器件进行具有奇偶校验调制的9位模式仿真。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    应用手册的内容是这样吗? AN01280–2010年8月使用9位软件使用 StellarisRegistered微控制器。
    是否有代码片段介绍了如何访问您可以在此处提供的 UART 线路控制寄存器?

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

    [引用 user="Robert Adsett"] RS-485和9位串行是正交技术。

    这句话非常强大、而且解释/边界很重要!   (请记住性能跑车的"快乐"-以及(残酷且强制执行的)当地速度法-也是正交的。)

    如此陡峭的学习曲线令人怀疑、"这种且只有这种情况"(MDB)解决方案。

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

    另一个想法产生了-正如您在此处确定了 MCU 的"限制"(在这个有限的角色中)-可能会发布海报"发现那些已经(已经)成功地与 MDB "在运行"的 MCU "-提供所需的见解?

    首先认识-然后研究"增强"MDB 的"易用性"(必须有一些)的特性和特殊功能、可以突出 MDB 对(无电) MCU 的强制要求...

    减去这种"内部知识"(通过集中、比较、数据收集实现)-海报(似乎)在"黑暗中"拍摄(非常多)。

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

    [引用 user="Priya Nadathur70">应用手册是否位于此处? AN01280–2010年8月使用9位软件使用 StellarisRegistered微控制器。
     [/报价]

    Damdifino。 我尚未阅读应用手册。

    [引用 USER="Priya Nadathur70"]是否有有关如何访问 UART 线控寄存器的代码片段,您可以在此处提供?

    不、我目前对 UART 没有太多的处理。

    Robert

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

    [引用 USER="CB1_MOBIST"]另一个想法产生了-正如您已经确定了 MCU 的"限制"(在这个有限的角色中)-可能会发布海报"发现那些已经(已经)成功地与 MDB "在运行"的 MCU -提供所需的见解? [/报价]

    我可能看到其他的微控制器、它们的9位模式可能更适合。

    我认为9600bd 上的奇偶校验调制不应超出此处理器功能、但它可能超出 OP 所需的处理能力。

    [引用 USER="CB1_MOBIST]首先识别-然后研究"增强"MDB 的"易用性"(必须有一些)的特性和特殊功能、以突出 MDB 对(无电) MCU 的强制要求...

    减去这种"内部知识"(通过集中、比较、数据收集实现)-海报(似乎)在"黑暗中"拍摄(非常多)。"[/引述]

    我认为、无论在哪种情况下、这都必须是缓慢的逐步构建能力。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我可能看到其他的微控制器、它们的9位模式可能更适合。

    您能说出其中一些微控制器的名称吗?

    我认为9600bd 上的奇偶校验调制不应超出此处理器功能、但它可能超出 OP 所需的处理能力。
    我将继续致力于这方面的工作,感谢你们的帮助。



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

    [引用 user="Priya Nadathur70">我可能看到其他9位模式可能更适合的微控制器。

    您能说出这些微控制器中的一些吗?[/引述]

    否 很抱歉,我无法。 我只是顺便说一下这些功能。

    Robert

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

    (这是针对海报 Priya!)   (即使我点击了过去的 Priya 帖子-已允许/(已申请)论坛(升级?) 回复 Robert。。。)

    嗨! 等待一个(血腥)秒- twas CB1、他"建议识别(其他成功的 MCU)能够利用"MDB"。
    海报罗伯特的确值得他的"核实"-但这一经核实的帖子 包括(大量) CB1引述-正义在哪里?  (这种对细节的关注是必需的-要通过 MDB 成功...)  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CB1-我认为他们不会为了 MDB 而更改应用中的 MCU。 其他 MCU
    我曾问过。 我相信 Robert 已经回答了我的许多问题、我单击了其中一个问题的"verified (验证)"。 我不是
    单击每个响应上的验证。 我也很高兴在您的回复中单击"验证"、谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是最公平的-谢谢-感激。    Robert 显然是最优秀的依据:mdb。   

    话虽如此-我建议您采用以下方法来更好地加强您的调查:

    • 搜索并发现(然后记录)"MDB 领导者"所使用的(已经) MCU。
    • 研究"这些 MCU 为 MDB 所做的调整"。
    • 仔细比较/对比(这些 MDB 后续 MCU)与此处重点关注的(当然) MDB "调整"。
    • 如果(已经是 MDB 成功) MCU 的 MDB 调整远远超过/超过此处 MCU 的调整数、则必须"权衡"将不情愿的 MCU 投入使用"的时间/精力/费用。
    • 虽然"反向直观"-您对(其他) ARM MCU (再次转到 MDB 关注点)的评论几乎可以肯定地揭示、"所采用的生产技术-获得(部分) MDB 便利。"   仅依赖一个来源不太可能"充分揭示" MCU 领域的创新努力"-这会使您失去(非常)所需的想法、方法和解决方法...

    需要注意的是、您已经(尚未)揭示了为什么"MDB"是这样的要求-并且类似的器件(可避免 MDB)是否能够(更好)满足您的需求!   "不能保证"您在追求"MDB"方面投入更多时间/精力将"获得回报"。   (我不想劝阻-我试图提出卓越(更广泛)的方法-公司/我"知道证明有效...")

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    mdb 用于控制应用程序中的硬币单元。 为投币者做的演讲。
    谢谢、
    Priya
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    虽然这(MDB)肯定是"正确"的-您(完全/正确)是否进行了调查、以了解(MDB)是否是(并保持)控制"硬币单元"的唯一方法?
    我想问-为什么选择 MDB -这种承诺有多坚定?    当然(其他)更快/更容易的方法也可以成功-这不是真的吗?

    您"沉默"(关于)多个"调查建议刚刚提供"-您认为这些(附加见解)没有价值吗?

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

    [引用 USER="CB1_MOBIST"]应该注意的是、您(尚未)已经揭示了为什么"MDB"是这样的要求-并且类似的器件(可避免 MDB)是否能够(更好)满足您的需求!  [/报价]

    从我看到的、我只做了一个快速扫描、看起来 MDB 和 ccTalk 主导着自动售货机网络。

    我怀疑基于某种产品可能更适合此用途、但这些产品具有历史记录、MDB 至少具有开放标准文档。

    Robert

    我也只对 MDB 进行了表面扫描、但没有真正的专家显示出来。

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

    R.A. “但我在电视上播放一个。”

    而且-我们被告知-相当好...
    但我的"芝加哥(湖景)高层办公室"(仅在某些场合)可以接收"朱(朱)号站"(小行星观测站)或加拿大广播... 拉茨!

    (请注意、"您"提供了"缺失"的操作信息、详述了"为什么选择 MDB!") 借助这些新信息-以及(已经成功的) MCU 的方法/功能的简单调查)、我们的海报必将收集更多所需信息-尽管您做了最佳(广播)和其他努力...