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.

[参考译文] TM4C123GH6PM:什么是 GPIO 引脚上的 tm4c123微控制器最大速度

Guru**** 2465890 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/665321/tm4c123gh6pm-what-is-tm4c123-microcontroller-maximum-speed-at-gpio-pins

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

我可以从该微控制器的 GPIO 引脚获得的方波的最大频率是多少。 我编写了一个代码、在其中使用内置 PLL 作为以80MHz 频率工作的时钟源、并借助 iinterrupt。 但我能够在其中一个 GPIO 引脚上获得550Khz 方波。 我需要的是输出端的速度大约为2Mbps。 我应该怎么做?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您只需要一个方波、我建议您使用通用计时器或 PWM 计时器。 让硬件生成方波效率要高得多。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你没有这么快的速度、因为你错了-有一个中断。

    只需翻转一个引脚、至少需要两条指令。 或80MHz MCU 上的40MHz。 这是您可以得到的最大值。 任何低于该值的东西都是可能的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Danny F"]
    只需翻转一个引脚、至少需要两条指令。 或80MHz MCU 上的40MHz。 这是您可以得到的最大值。 可能小于该值的任何值。

    除了指令时钟之外、还有一些限制。 (循环开销、每个周期的指令、访问时间等) Bruno 以20 MHz 的频率测量他能达到的最快速度

    https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/p/506050/1840865#1840865

    PWM 应该能够更快。 这是否有用是另一个问题。 当然、如果您所做的只是制作方波、那么通过 PWM 使用处理器将会浪费资源。

    可能可以在~2MHz 时对输出进行 Bitbanging (尽管我会质疑必要性)。  在恰好为2MHz 的频率下执行它可能是一个错误。

    Robert

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

    "布鲁诺衡量他在20兆赫下能达到的最快速度"

    显然、他的行为是错误的:

    0x000006D0 F8C02080 STR R2、[r0、#0x80]
    61: LED_PORT->RESERVED0[LED]= LED;
    0x000006D4 F8C01080 STR R1、[r0、#0x80]
    62: LED_PORT->RESERVED0[LED]=~LED;
    

    从 Good old Keil 3.24起。 STR 是一条单周期指令。 因此、如果您在循环中填充该值、您将以1/2的主时钟运行。

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

    海报的应用是否会(合理地)延伸(超出)单个无限循环? 如果是,"这种方法"的残暴性和局限性将很快变得显而易见。   此外、通过该类别的 MCU 生成合适的40MHz 输出波形、证明极不可能!   

    假设(部分)要实现真正的 MCU 工作-使用配置为 PWM 模式的 MCU (多个)计时器之一应实现"稳定"(基于硬件) 2MHz 时钟输出-同时启用多个其他(正常) MCU 操作和流程...   哪一项(有效)符合"现实世界"使用要求...

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

    实际上,我想生成一个12位计数器,它从全0运行到全1运行,然后再次以精确的1.024Mhz 速率返回全0 (无限循环)。对于这个应用,PWM 也会工作吗? 如果是、如何在1.024Mhz 频率下为12位计数器配置 PWM?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "对于此应用程序,PWM 也会工作吗?"

    实际上、您是否考虑过使用 eusci 模块? 它将在这里发挥出色的作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="siddharth goyal"]实际上,我想生成一个12位计数器,该计数器从全0运行到全1运行,然后再次以精确的1.024Mhz 速率返回全0 (无限循环)。[/引用]

    接受这样的"实际"总是"令人沮丧",甚至是"疯狂制造"。  请求序列的末尾。    最初是否应该提供此详细信息?

    您的"新引入"(实际)您的主题/标题几乎没有相似之处-新的细节之前没有出现(也没有暗示)。   不是很好!

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

    如果您可以使用配置为80MHz 的 TM4C123生成40MHz 的"方波频率"[引用 OP]、并应用"优良的旧 Keil 3.24"校准、我将立即向您传送 PayPal 100美元的数据。

    像“显然他做错了”这样的句子应该得到真实的生活测试和概念证明的支持。

    此外、该 MCU 上有两个专为硬件控制的数字信号输出而设计的外设、即通用定时器和 PWM 模块、这正是 Mastermd 排名 Bob Crosby 明智的建议... 相反、您在一个糟糕的日子里通过降落伞降落在这里、并建议使用"eusci 模块"来生成方波信号输出。 真棒! 为什么您也不能帮助解决问题并提供一个可行的示例、以便我们大家都能学习到?

    此致

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

    [引用用户="Bruno Saraiva"]你在一个糟糕的日子里,用降落伞降落在这里[/引述]

    哦,Bruno——这不是很好!    (小写海报) Danny DID -"坚持他的着陆!"

    之前-这里有一个-请注意、此类 MCU 的输出结构"极不可能"生成(在附近的任何位置)适当的- 40MHz 输出...

    (听不清:. (笑声)  "你穿着的是防弹衣-还是你(高兴)看到我?")

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CB1放在这里、您宁愿创建一个新的线程并询问您的实际目标。
    我认为实现它的最佳方法是使用 DMA 和计时器。 我只是担心您能达到的最接近1.024MHz 的频率将是1.02041……

    但在这里讨论解决方案并不是很好、因为如果将来有人搜索类似的内容、他将永远不会看到名为"tm4c123微控制器在 GPIO 引脚上的最大速度"的线程。
    因此、如果您创建一个新帖子(此帖子的标题问题已得到解答)、我们将在这里为您提供帮助。
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="siddharth goyal"]实际上,我想生成一个12位计数器,该计数器从全0运行到全1运行,然后再次以精确的1.024Mhz 速率返回全0 (无限循环)。[/引用]

    您想要12位并行输出吗? 还是只是将时钟馈送到外部计数器? 在这两种情况下、原因是什么? 您的最终目标是什么?

    精确到1.024MHz? 精度和可重复性如何? Bitbanging 这不太可能产生后者、尤其是在微控制器上执行任何其他操作时。

    [引用 user="siddharth goyal"]对于此应用程序,PWM 也将起作用?[/引用]

    您能否使用 PWM 产生 MHz 信号? 是的。 但是、尤其考虑到目前缺少详细信息、您是否能轻松满足规格要求是不可知的。

    Robert

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

    [引用用户="Danny F"]

    显然、他的行为是错误的:

    0x000006D0 F8C02080 STR R2、[r0、#0x80]
    61: LED_PORT->RESERVED0[LED]= LED;
    0x000006D4 F8C01080 STR R1、[r0、#0x80]
    62: LED_PORT->RESERVED0[LED]=~LED; 

    [/报价]

    好的、这里有几件事

    • 首先、这显然也是错误 的、因为它不包含所需的循环。 是的、您可以展开、但这只能进行到目前为止
    • 第二、您是否进行了测试? 正如我所指出的、执行的操作比指令更多。 甚至是在微处理器中、我们才会进入外设。 我的经验是、在微秒内、手臂切换速度受指令时序以外的其他时间限制。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么、您认为在某个时候、单周期指令会以单周期运行吗? MCU 会随机吃一些?...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Danny F">您认为在某些时候、单周期指令会在单周期中运行? MCU 会随机吃一些?...

    [/报价]

    愚蠢的人,我曾在哪里暗示过这一点?

    否、还有其他因素会减慢指令速度。 流水线效应、高速缓存效应、外设时序。 我相信还有更多。

     Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。 假设有-显然有、就像一个引脚电流驱动....

    但是、您是否认为这些指令将按照核心发出的相同顺序到达端口? 指令是否会导致引脚摆动、尽管可能不够? 但它们仍会摆动。 否?

    如果引脚在由外设驱动时能够以40MHz 的频率摆动、那么引脚在由内核驱动时能够以40MHz 的频率摆动、这是否合乎逻辑?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Danny F"]很明显,就像引脚电流驱动器一样...

    请尝试对其进行措辞

    [引用 USER="Danny F]但是您认为这些指令将按照核心发出的相同顺序到达端口吗? [/报价]

    指令未到达端口。 我想我理解您想说什么。 输出将以指令执行的顺序*到达端口。 其时序可能受指令周期计数以外的其他因素的限制、因此可能会插入额外的周期。

    [引用 USER="Danny F]指令是否会导致引脚摆动、尽管可能不够? [/报价]

    是的

    [引述 USER="Danny F"]是否有逻辑认为、如果引脚在由外设驱动时能够以40MHz 的频率摆动、则引脚在由内核驱动时能够以40MHz 的频率摆动?[/QUESP]

    否 实际上、观察其他情况是非常常规的。 外设将绕过端口结构并直接与引脚驱动程序**连接。 因此、外设的速率限制可能与端口有很大不同。

    Robert

    *在这种情况下、我甚至会同意指令将按所写的顺序执行。

    **我认为我从未遇到过将引脚驱动器复用的器件。

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

    [引用用户="Danny F">所以它***可以***有。 但它有吗?

    什么可以有? 你的朋友是个单词,没有短缺。

    Robert