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.

[参考译文] TM4C1294NCPDT:CAN 总线工作不正常、怀疑电源连接有问题。

Guru**** 2464110 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/659422/tm4c1294ncpdt-can-bus-not-working-properly-power-hook-up-is-a-suspect

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件:EK-TM4C1294XLTM4C123

大家好、

我有两个几乎相同的板、使用几乎相同的内核。 它们通过 CAN 总线进行通信

我只有其中一个发生 CAN 总线错误。 我确保它不是单板问题:它在整个5批中重复出现。

两个电路板都使用 Artesyn DC-DC POL 12V/3.3V 转换器来实现 VDD、3A 功能单元。

这种解决方案似乎可以正常工作、它具有一个单独衍生的 VDDA、由通过隔离式 POL 运行的外部12V 电源、然后是5V LDO、再是3.3V LDO。 (如果芯片想锁定、我在 VDD 和 VDDA 之间确实有一个二极管)。

有问题的解决方案具有连接到 VDD 和 VDDA 的相同3.3V 总线、这种情况并不少见。

我决定将电路板中的两个正常工作的电压短路(电压是独立产生的)、并且开始出现完全相同的问题。

电路板的其余部分似乎正常工作、代码运行正常、直到发生 CAN 通信、此时它发出错误信号。

此问题仅在下电上电后出现:最初、当通过调试器对电路板进行编程而不进行下电上电时、其工作正常。

在应用报告 SPMA056–2013年10月的《TivaTmC 系列微控制器 TM4C129x 系列的系统设计指南》中,我有以下内容不确定是否完全理解:

3.4.1微控制器电源。

'连接到 VDD 的电源必须能够适应短暂的额外浪涌时间(40μSec μ s 至60μSec μ s)
连接到 VDDC 轨上 LDO 的去耦电容器充电至时产生的电流
VDDC 电压电平。 内部电路将浪涌限制为的数据表中指定的 IINRUSH (最大值)
部件。 连接到 VDD 的电源可以将其提供的电流自限制在小于的值
最大 IINRUSH、但这会延长使 VDDC 上升到工作电压所需的时间。"

这是具有相同 VDD/AVDD 的电路板设置。

这是具有单独 VDD/AVDD 的设置

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我是说评估板。 飞镖自动校正器:)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当我进入时,“汽车 val”... 自动校正器已提交、"评估"。

    在我们之前的"固化"(同样是另一个 ARM MCU)中、我们向 (同时) VDD 和 VDDA 提供了详尽控制的双通道驱动电压。    通过这种方式、"电源定序/质量/阻抗"问题变得容易得多、 然后"设置和调整!"    

    这 种控制方法-驾驶/探测方法-迄今为止最好的证明-并使我们 的 MCU "泄露"(深) MCU "机密。   (即使(尤其是)该供应商(也)声称从未遇到过此类情况...)

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

    Bob、CB1、

    我想这就是关闭它、因为我尝试通过简单地在电压稳定后延迟复位来模拟监控电路。 这是一个没有昨天 MOD 的电路板、其中 VDD 和 VDDA 连接在一起、而现在我在做了冶金焊接的壮举之后、在0402 0.1uF 电容器上缝了一个0603 1uF 电容器、将 RST 信号延迟了10ms。

    下面是10ms/div - 1V/div 时+3.3V VDD (黄色轨迹)与 RST (蓝色轨迹)的关系。 (VDD 也代表 VDDA)。

    我完全希望 except...it 能够正常工作、但没有。 相同的误差。  
    执行硬复位后、电路板开始工作。

    我缺少什么吗? 或者、监控器是否不会提供帮助、我是否需要提高+3.3V 的速度或延迟 VDDA 与 VDD?

    Mike。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我本来希望这也能正常工作。 当 VDD 达到3V 时、RST 远低于0.35*VDD。 如何执行"硬重置"? 是否通过拉低 RST 线路来实现?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我有一个2引脚100mil 接头 RST/GND、我将其短接。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还想使用评估套件、但我没有 Booster 板、因此无法使用 CAN。 但是、我认为我们对正在发生的事情有了很好的了解、因此我认为我可以使用我的板。 :(叹息......
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的电路板上有多大的大容量电容? 值得移除一些电阻器、看看它是否会缩短 VDD 的上升时间以及是否会影响问题。

    顺便说一下、您在本周获得了我的"赢得专家"奖。 请记住、在定义为:
    例如:A 已经是
    吐气:压力下滴水
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    原谅-但 FIRM/I 始终在 GND 和 MCU 复位之外包含(部分)串联电阻器。 MCU 复位引脚必须是"复杂"的-并且应尽力"确保它们安全、快乐"。

    我还想指出的是、我仍然怀疑只有 CAN 行为受到此(VDD 与 VDDA)问题的"影响"。   您的测试"非常可能"尚未"完全全面"(正如我们被迫做的那样)、并且"其他 MCU 外设区域"也 可能会证明"受到干扰"。    (和... 尚未检测到... 由于缺乏全面和系统-多外设模块测试)

    "有限测试"没有进行这种"发现"这一事实证明远远没有说服力!    (我们的"巨大"客户绝不会允许这样做...)

    值得注意 的是、供应商 Bob 的"专家定义"(由尊敬的、有裂缝的千禧一代员工所指出)超出 了"供应商代理"的范围。   (我的汽车后备箱(许多)舒适性-等待工作人员提出此类通知-(甚至)那些声称"在 mascara 申请中遇到困难"的人-通过令人愉悦的6W、令人放松。)

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

    我不能确切地从您的描述中确定电阻器的放置位置、但我在复位跳线和电容器之间还有一个电阻器、一个10欧姆的电阻器、用于"防止火花"跳线。 虽然跳线可以做到这一点、但当我需要 MOSFET 使电容器短路时、我通常会依赖这一点、因为我看到一个相当大的 FET (额定电流为3A)在将充电的0.1uF 电容器短接至5V 时会被损坏、因此是10 Ω 电阻器。 不确定我们所说的是相同的东西。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果将 VDDA 包括在内、则(Tek)范围跟踪本会"更有价值"。 当此类复杂设备"运行"时、很少有2个通道(单独)证明"足以执行任务"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Michael Nudelman"]我不确定您的描述中电阻器的放置位置

    我们的研究结果-"连接到 MCU 复位"的任何/所有组件应尽可能"靠近"安装到所述的复位。   

    射频和其他耦合/传导噪声的到来-以往任何时候都更频繁、更高级别!     您过去给 Bob 写的文章避免了提及该"保护性"串联电阻器。

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

    我使用大量的散装材料、但没有什么特别高的:6块47uF 陶瓷、为282uF、可能低于100块0.1uF 芯片电容器(我通常慷慨解耦)、这块陶瓷电容器中增加了10uF。 我将讨论+3.3V 直流/直流转换器输出端的电容。 我可以减小它吗? 是的。 但300 μ F 的电容不是那么大。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CB1、

    安装非常紧凑: 我在引脚上使用0402组件和去耦合器、在整个平面上洒满更多的组件、我的电阻器是相同的、所有这些都非常紧密、今天我必须使用我所有的焊接技巧。

    至于显示的独立于 VDD 的 VDDA、它并不是真正可行的、因为它与 VDD 引脚的其余部分位于同一平面上。 相同的固态未分区+3.3V 平面和相同的固态未分区 GND 平面。 即使使用"Texaco 刀子"GND、我的示波器也不会显示差异。 因此、我可以说、VDD 布线可以非常精确地表示 VDDA、低至1微伏甚至更低(我知道、作为一个非常相似的电路板、基于相同的 CPU 测量 UVs、非常成功)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果我可以... (Bob 在限制下运营)我们的外部人员"更自由!"

    向 Bob 提供"有关哪些工作要做的更多信息!"   他"提示"降低该容性负载-当然、您应该-"这样做吧。"   您已为供应商代理进入"旅行不良的地区"(可能是"从未旅行过的地区")。   对这位记者来说不是这样——他们“解决了这样的问题!”    (在这种过程中获得了丰厚的回报...)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦...说到电阻器,它已经显示在提供的 sch 中,每页都重复了:)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "在"每页"上重复... 更合适... 应该注意"在每一个"深埋、远已过去的页"上重复--不应该这样做?
    我们的职位刚刚越过-但我们的"心智不能融化"仍在继续。

    为了方便助手、您不能"无电帮助者"为"挖掘这些事实"而承担"无电帮助者"责任-这应该由您提出!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bob

    另一件事是、我刚刚转到了我所使用电源的数据表、Artesyn 的 LDO03C (或者他们现在是 Emerson?) 要查看最大负载电容:我的值似乎应该介于为2.5V (1000uF)和5V (500uF)的输出列出的值之间(它们没有列出3.3V)-也就是说、如果我以线性方式外推、  3.3V 时的最大值大约为840uF。 我的电容低于300uF。

    现在、我已安装了一个仅具有片上电容的空载 LDO、并将其与电路板的 LDO 进行了比较。

    这是图片。 如您所见、虽然由于 LDO 处理电容的方式、电路板上的启动本身会延迟、但斜率压摆率保持不变。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、
    当您告诉我、电容只有300uF 时、电源固有的 VDD 上升时间很慢。 令我感到困惑的是、为什么 RST 上的电容器不工作、但稍后将 RST 置为有效。 您能否尝试在将 RST 保持在低电平的情况下加电、然后移除跳线?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想我可以...虽然让我先问 Scott,但我认为我们做到了。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Bob、是的、我们这样做了、但我们再次这样做只是为了诚实。
    我安装了复位跳线并通电。
    然后,我移除了 REST 跳线(延迟等于数个 seconds....infinity,用于所有目的和目的),我们遇到了错误。

    然后、我在保持通电的同时安装并移除了跳线、通信工作正常。

    监控电路几乎必须创建一个完整的上-下-上脉冲才能工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更多需要:

    我已决定查看实验室电源(3A/输出或6A 并联)的上升时间是否会影响这种情况。 复位仍然像以前一样延迟。

    为此、我首先拍摄了+3.3V VDD (和 VDDA)在电源通过按下"电源按钮"供电时的上升画面。 正如您在下面的图片中看到的、12V 上升速度非常慢、VDD 上有这些"阶跃"-显然是由于 Vin 和 Vout 之间的差异不够。

    再说一次、黄色是 VDD、蓝色是12Vin、紫色是复位。

    以及相同的放大。

    我们已经知道了误差。

    然后、我预先为实验室电源通电、并通过将导线插入电源的正极为卡通电。 这就解决了缓慢的上升时间问题。

    您可以看到、不再有台阶、VDD 的干净漂亮斜率、当然还有延迟很好的复位。

    和2ms/div 处的放大

    一切都很好。 除了… 仍然是错误、并且始终如一。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最后两个实验表明、在功率稳定之前、由于开始执行而导致的损坏并不那么简单。

    与外部复位或掉电复位相比、软件是否可以在上电复位上采用不同的路径? 为此、软件必须读取(并清除中的设置位)复位原因(RESC)寄存器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    我很确定我们不会这样做。  我刚刚检查了发送给您的 SimpleRx 项目、这就是我在 startup_css.c 中看到的全部内容:

    //
    //
    //这是处理器首次开始执行时调用的代码
    //重置事件之后。 仅执行绝对必要的设置、
    //在此之后调用应用程序提供的 entry()例程。 任何花哨的东西
    //操作(例如根据复位原因寄存器做出决策)、和
    //重置该寄存器中的位)只能由控制
    //应用。
    //
    //
    无效
    ResetISR (空)

    //
    //跳转到 CCS C 初始化例程。 这将启用
    //浮点单元,因此不需要在此处执行此操作。
    //
    _asm (".global _c_int00\n"
    " b.w _c_int00");

    在我们的 main()中,我们没有对复位原因进行任何检查。

    Scott

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

    Bob

    再做一个实验(傅里叶越多)。

    我们还有另一个电路板、我们使用的范围非常广泛。 它在我们使用它的每个方面都运行良好:它运行 A/D、SPI 总线、通信(USB、I2C、以太网和 RS-232)、 和多个 GPIO (用于运行步进电机等)。

    我刚刚记得、在一个组的请求下、"以防万一"(从未使用过)、我还为 CAN 总线引入了一个接线。

    现在、该板具有单独的 VDD 和 VDDA、但与具有工作 CAN (工作 CAN)的板不同、当使用完全相同的 POL 派生 VDD 时、VDDA 的派生方式与我在使用非固定 CAN 板的实验中所做的完全相同、 当提升 VDDA 引脚并通过连接到12V 输入电压的 LDO 运行时。 因此、除非使用电阻器和输入电容器进行延迟、否则它将更快地出现。 您应该记得、在我引入电阻器之前、不工作的电路板仍然无法工作、然后由于在12Vin 和 LDO 输入之间引入1K 电阻器后的延迟、电路板开始工作。

    因此、以完全相同的方式、VDDA 由两个 LDO 的串联电压衍生而来、即12Vin - 12V 至5V LDO、而5V 至3.3V LDO 成为 VDDA。

    因此、将电路板连接到 CAN 总线后、我们获得的结果与使用不工作 CAN 的电路板中的结果完全相同:编程代码后、电路板通信正常、在下电上电后、它进入 CAN 错误。

    有趣的是、VDDA 略先于 VDD。

    这些是电压和复位的示波器捕获。

    Yelolow 是 VDD、Blue 是 VDDA、紫色是 Reset。

    和放气

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我只想强调一点:在上一篇文章中讨论的最后一个板中、虽然我确信我们不会使用 CPU 提供的每个资源、但我们使用了相当多的资源。 我们在该板中使用的任何内容都没有问题。 包括我们用于测量称重传感器提供的信号的模拟部分。 以太网通信工作正常。 USB 通信工作正常。 我们使用 I2C 通信通过 IO 扩展器提供额外的 GPIO、效果良好。 SPI 总线用于与太多 D/A 转换器通信以及读取/写入非易失性存储器、工作正常。 我们需要为步进电机提供步进信号(需要使用计时器来提供速度精度)的 GPIO、以及负责使能、方向和微步进命令的异步 GPIO、都是可以接受的。 当然、还有 Heartbeat LED。

    到目前为止、CAN 是唯一对加电序列中的任何操作敏感的功能。

    哦… 为了预见到这一问题、由 VDDA 主导 VDD 而导致的 CPU 闩锁由两者之间的肖特基二极管防止、VDDA 驱动 VDD。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否像 simple_Rx 项目一样以25MHz 运行应用? 我在该项目接收来自 NI GPIB CAN 控制器的数据时遇到问题、但它可以使用 simple_tx 项目从另一个 EK-TM4C1294 Launchpad 接收数据。 在更深入的分析中、我看到单个 CAN 位宽度为15.5uS、而不是预期的10uS。 我将系统时钟从25MHz 改为120MHz、现在位宽为10uS。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bob

    Scott 可以更好地回答这个问题、但我们确实以25MHz 运行、如果未安装以太网偏置电阻器(已安装)、这会产生奇怪的效果、这也是我的想法、除了有其他运行正常的电路板。 除非同时有25MHz 和电源定序的组合....

    我使用25MHz 内核作为我们所有运行以太网的其他板、因此我更容易使用相同的晶体、电容器等 尽管人们会认为、如果运行以太网、为什么使用 CAN。 )

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、
    抱歉、我想问的是系统时钟速度、而不是晶体。 您是否使用 PLL、还是以晶体频率运行系统时钟? 今天早上我已经被淹没了、但计划在今天下午的25 MHz 下深入探讨 CAN 波特率问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不打算说"Poison these diagnostic water"-然而、当我们等待供应商 Bob 的时间表对抗时、我认为提出问题对"Post Bob 的到达和分析"很有用。

    [引用 user="Michael Nudelman"]此问题仅在下电上电后发生:最初,当通过调试器对电路板进行编程而不进行下电上电时,它可以正常工作。

    这个线程(现在)达到80个帖子-并且(非常)大小-使得"完全调用"变得很困难。   如果我所寻求的-这里/现在-已经得到了答复(我很抱歉)... 以下内容为:

     "成功 CAN 操作发生"的(唯一)时间是否正确:

    • 连接的调试器
    • 编程后-再次连接调试器

    现在-如果发生了上述任一(或两种)-然后移除了调试器(理想情况下断开连接)-那怎么办?   正确的 CAN 操作是否继续?   此外-是否采用了外部 JTAG/SWD 上拉电阻器?  (不是内部(值过高) MCU 电阻器)

    [引用 USER="Michael Nudelman"]有问题的那个有同样的3.3V 总线连接到 VDD 和 VDDA,这没什么不寻常的。[/引用]

    虽然这(可能)符合"无异常"标准-这种"宽松"的联系证明远非最佳...   我们的"解决方案"揭示了" VDD 和 VDDA 的独立性"、这是一种极大的优势。

    我的公司成功地纠正了(类似) 由(2个其他) ARM MCU 供应商提供的两个不同 ARM MCU 遇到的" MCU 复位后"问题。   

    此类"校正"可能(不)符合"通用"标准-并且已经证明(在某种程度上)与" MCU 流程相关"-但在部署时证明是"最佳且唯一的方法"、以实现(合理地完全-潜在完全完全完全完全完全完全完全) MCU 操作。    

    不要让 Bob (以及他/他人的方法)"浑浊水"、我的偏好是让 "供应商分析/洞察"继续进行、如果失败、 则只展示我们的调查结果!

    请告知您是否需要这些调查结果(我们的调查结果)。    (到达之后: Bob /他人的努力/扩展了"固定方向...")

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

    尊敬的 Bob:

    我们的应用程序正在配置时钟、与 SimpleRx 应用程序的配置相同:

    G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、50000000);

    Scott

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

    与该问题有关的任何调查结果都是令人感兴趣的。

    也就是说、TI 的 ARM Cortex Stellaris 在这方面的行为与 Tiva 不同。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Michael Nudelman"]... 在这方面、TI 的 ARM Cortex Stellaris 的行为与 Tiva 不同。

    以及(其他)的(许多) ARM MCU -(也是)介绍了"过程中的差异"。    "曾经工作过"的内容-可能无法继续(完全)-尤其是在您/您的公司所处的"特殊条件"下。     我会问-有多频繁(有人)... (甚至 Bob)... 是否在 MCU 复位后立即运行 CAN 模块?    (生成 "您的 " CAN 故障开始!)

    除了 "调查结果令人感兴趣"之外-还提出了多个问题-尚未 提供答案...     这些"答案"也证明"有趣"... (可能 会为您"改变游戏规则")

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

    以下是我们能够使 CAN 正常运行的条件:

    1) 1)在下电上电后对接收节点重新编程(重新编程后、可以保持连接或移除调试器)
    2) 2)从 LMFlash 编程器发送硬件复位命令
    3) 3)通过暂时将 RST 线路拉至低电平来手动触发复位
    4) 4)向我们的应用添加逻辑、以便在下电上电后首次运行时触发复位、方法是向寄存器 NVIC_APINT_VECTKEY | NVIC_APINT_SYSRESETREQ 写入值
    5) 5)延迟 VDDA

    显然、方法1、2和3不会帮助我们长期工作。
    选项4可能是一种解决方案、但很难看、有时会失败-可能我需要在触发复位之前延迟
    方案5可能是我们今天所了解的首选解决方案、但它需要我们的电路板进行新的旋转。 在执行此操作之前、我们希望确切了解延迟的原因和要求、以便我们确信我们的设计更改将是一个强大的解决方案。

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

    谢谢-非常感谢您的详细回答。

    您的"方案#5"体现了我公司(经证实)解决方案的"部分"。   (已在2个供应商 的"每个供应商努力解决问题"之后创建的 ARM MCU 模型-来自2个不同 ARM MCU 供应商的 ARM MCU 模型-之前失败  了!)

    我必须指出、(仍然)我们的重点问题仍未得到解答-这会降低我们充分/适当地增进理解的能力...

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

    当 Scott 回答您和 CB1时、下面是我的一些想法。

    我可以使用我们在电源序列方面所学的知识来重新设计电路板。 我不想更改我正在使用的 POL、因此我可能会尝试使用 VDD 作为 LDO 的 PG 信号、或者、例如、将 VDD 应用于 VDDA 的 MOSFET。 加上延迟复位、具有电压监控功能的监控器等。 我确信、如果我保留足够的挂钩、某些配置将正常工作 (此时、我希望我有一个具有 CAN 的 Booster Pack、这样我就可以使用 EK-TM4C1429电路板来尝试重复症状、但我没有这种症状、而且我也不打算开始原型设计、除非有人以低廉的价格出售)。
    但是在我构建电路板之前、我知道存在一个问题、无论它是否是我的过错、我都希望在我违反的书籍中看到它是(或不是)什么工厂分析 (或者我们可能还不知道"到目前为止")、因为我有这样的能力、至少可以尝试通过指南进行设计(如果有的话)。

    我没有看到任何与其他供应商经常显示的图类似的图、其中显示的 VDD/VDDA/VDDC 和此类电压彼此相对上升。 我所看到的就是:

    >>> Tiva C 系列微控制器只需要一个连接到 VDD 和 VDDA 的+3.3V 电源。 (spma059应用。 报告)。

    如果没有任何官方指导、为我重新设计电路板、即使它能使电路板工作得非常完美、也仍然是一种不在标签上的猜测设计、我想尽可能避免这种情况。

    所以、我不知道你们在某个地方是否有某种仿真器、它可以用于模拟情况、或者您是否有具有 CAN BoosterPack 2的 EK-TM4C1429评估板、您可以使用单个电源来尝试。 或者你可以想到的其他东西、但我想知道它为什么这么做、因为它说它应该只使用一个电源(嗯、如果人们不考虑 CAN、它就有点做了!)

    最棒的

    Mike。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Mike:
    我完全理解在重新设计电路板之前需要找到真正的根本原因。 我正在使用 EK-TM4C1294XL launchpad 尝试重现您的问题。 我还不喜欢推迟 VDDA 的想法、因为这种解决方案对我来说毫无意义。 本周我的时间有点有限、因为这是我回答大多数论坛问题的一周。 我希望下周有更多时间专门讨论这个问题。 尽管如此,我今天下午仍将就这一问题开展工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Bob、我们将等待您的调查结果。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mike 和 Scott:

    您是否像在发送给我的 SimpleRX 项目中一样在应用中设置 CAN 波特率?

    CANBitRateSet (CAN0_BASE、SysCtlClockGet ()、100000);
    

    函数"SysCtlClockGet ()对 TM4C1294器件无效。 您可以将系统时钟 值硬编码为50000000、或执行以下操作:

    uint32_t ui32SysClock;
    
    ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_480)、50000000);
    ...
    CANBitRateSet (CAN0_BASE、ui32SysClock、100000);
    

    由于 TM4C1294器件上 SysCtlClockGet ()返回的值是不可预测的、因此它可能会根据器件的加电方式发生很大变化。 这可能是根本原因。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的差。 您似乎发现了问题。 我们只是尝试一下、它看起来是根本原因。 感谢大家对此提供的帮助、很遗憾大家花了这么多时间来犯此错误。

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

    谢谢、似乎就是这样。
    感谢所有帮助。

    CB1、也谢谢。

    我们现在应该认为它已经解决了。

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

    稍等!   

    您(其他)同样的新开发板中必须存在相同的编码"错误"-这些开发板被报告正常工作!     (以及哪个-独立供电的 VDD 和 VDDA!)    或者-您的软件是否为分离了 VDD 和 VDDA 的电路板采用了不同的系统时钟编码?

    这是如何解释的?

    我仍然反对 VDD 和 VDDA 的"婚姻"。

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

    [引用 USER="CB1_MOBILE"]

    稍等!   

    您(其他)同样的新开发板中必须存在相同的编码"错误"-这些开发板被报告正常工作!     (以及哪个-独立供电的 VDD 和 VDDA!)    或者-您的软件是否为分离了 VDD 和 VDDA 的电路板采用了不同的系统时钟编码?

    这是如何解释的?

    我仍然反对 VDD 和 VDDA 的"婚姻"。

    [/报价]

    CB1、

    引用 Bob 的话、

    "由于 TM4C1294器件上 SysCtlClockGet ()返回的值是不可预测的、因此它很可能会根据器件的加电方式发生变化。"

    因此、如果我们处理的函数的值可能取决于加电条件、而后者在同一类型的电路板中是相当可重复的、那么我们可以有两种不同类型的电路板、它们具有不同的可重复初始化值。 因此、一个电路板现在在事后看来工作的事实可能不是我们所想的。

    我们可以使用两个初始化类似的相同电源设置板。 一旦我转换了另一个电路板、它的初始化方式与第一个电路板类似。

    我们没有尝试(我们可以在下周一检查)两块坏板(已婚 VDD/VDDA)、看看它们是否相互通信。 现在、我想他们可能会这样做。

    因此、可能没有工作/不工作的板、而只是具有不同波特率初始化值的板。 正如我说过的,如果斯科特感觉自己像这样,我们可以在星期一试一下:)

    Mike。

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

    当然、您的电话-但电路板之间缺乏"一致性"-这种"修复"-会通过我们的团队发送"错误"...

    我认为、"不同代码" (或所谓的不同代码)在调试器下如何正常运行、然后在调试器离开时失败、这仍然是无法解释的!

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

    CB1、

    没有、代码没有这样做。 我在使用调试器作为编程器进行编程后运行、在删除调试器后将继续运行、仅在下电上电后才会失败。 原因是、甲油墨、即编程人员在完成编程后向 RST 引脚发出硬件复位-正如我们知道的、复位变为高-低-高、而被隔离的电路板始终使电路板正常运行。

    AMOF 我们到目前为止还没有将调试器用作调试器-我们将它用作 JTAG 编程 Pod。

    让我们等到星期一、我现在要做两个坏板实验。

    Mike。

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

    我的朋友-您之前已经说过、您有两种稍微不同的电路板实现方式。   必须假定这两个-就系统时钟设置代码而言(至少)是相同的。   大家都同意这一点吗?

    (现在接近90个帖子深)刚刚发现系统时钟被编程为不正确的(过去的 MCU)代码实现。
    如果您的这两组, “两个有点不同的主板实现”采用了“相同的代码”(同样,就系统时钟设置而言)... 然后、 "如何解释一个电路板组"正常工作"-第二个失败?"

    这种"事实陈述"是否得到了充分/适当的认可、如果是、您如何解释"一个板套件即使在系统时钟设置不足的情况下也能正常工作、尤其是在这种情况下?

    如果这一问题是由于"电路板的独特互连"而导致的(仅或主要)-那么我是否可以说、这种"互连细节"没有得到正确/充分的注意-应该得到更多的"强调"。

    供应商和我的目标是帮助您取得成功-我相信此处提出的要点-为您的长期成功而运营...    (以及实施"真正持久的解决办法"-我担心这可能不是"明确的证据"。)

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

    一个很好的星期一。 大家好。

    正如我在星期五承诺的那样、我做了这个实验、可能会加快故障排除速度、但我们从未这样做过。

    我们现在使用了两个"坏"板、即 VDD 和 VDDA 连接在一起的板、过去拒绝与"好"板交谈、其中 VDDA 和 VDD 是分开的、VDD 在上电期间领导 VDDA。

    到目前为止、Bob 的理论是、初始化取决于电源设置和两个板的初始化方式不同、因此当我们解决该问题时、由于 INIT 命令本应在该 uController 中不起作用、他们开始相互对话。

    我在星期五曾说过,如果是这种情况,那两个带有旧代码的“坏板”在初始化相似时仍然应该互相交谈,同样的原因是,两个“好”板之前互相交谈。

    今天、我从 bin 中取出了两块"坏"板、根本没有电机、将它们连接起来、Scott 在这两块板中放入了旧代码、但没有初始化函数校正。
    编程后和执行下电上电后、电路板相互通信。

    我认为这支持 Bob 的想法。

    也就是说、如果没有校正、两个同类型的板(两个"坏"或两个"好")将相互通信、而两个不同类型的板不会("坏"到"好")。
    校正后、任何电路板将与任何其他电路板通信("良好"至"不良"或"良好"至"良好"或"不良"至"不良")。

    我不知道 Bob 是否想提供一些最后的想法来消除我们留下的任何恐惧;他很高兴这样做。
    Scott 同时表示,他希望查看初始值以及初始化函数返回的值。

    Mike。

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

    Michael、Scott、

    很高兴听到有人说、现在一切都按预期工作。 我们可以更深入地探究函数 SysCtlClockGet()(对于 TM4C129器件无效)为什么在两个电路板配置中返回不同的值、但这只是一个学术练习。 我要感谢你们两位的坚持和不接受解决办法而不充分理解问题。 这种态度很好地反映了您的产品质量。

    CB1、

    只需一个澄清即可。 他们使用了正确的功能来设置系统时钟频率、问题是使用了错误的功能(或错误的方法)将系统时钟频率传递给设置 CAN 波特率的功能。

    对我来说,有趣的问题是如何防止今后出现这种混乱。 如果我们在 TivaWare 中使用相同的功能(和方法)来设置系统时钟速率并返回系统频率、那会更好、但这匹马已经离开了谷仓。 我们确实在 TivaWare 源代码中包含了一条 assert 语句、该语句检查是否在 TM4C123器件上调用了该函数。 遗憾的是、在使能断言的情况下构建项目所需的开销和额外工作量往往不能使用断言。 尽管如此、也许当我将头部置于水面之上(生活在船上的人说了很多)时、我可以将一份应用手册放在一起、解释如何使用它们。

    uint32_t
    SysCtlClockGet (void)
    {
    uint32_t ui32RCC、ui32RCC2、ui32PLL、ui32Clk、ui32Max;
    uint32_t ui32PLL1;
    
    //
    //此函数仅在 TM4C123器件上有效。
    //
    断言(class_y_IS_TM4C123);
    ...