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.

[参考译文] MSP430F5510:USB PLL激活时的XT2频率偏移

Guru**** 2613775 points
Other Parts Discussed in Thread: MSP430F5510, MSP-FET

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/662907/msp430f5510-xt2-frequency-shift-when-usb-pll-is-active

部件号:MSP430F5510
主题中讨论的其他部件: MSP-FET

我一直在尝试调试MSP430F5510上的USB问题;控制器从未在设置数据包上设置过SETUPIFG。  我知道主机会发送它们。  我在这里想弄清楚这个问题时,已经划伤了我的头脑;这不是间歇性的,而是一致的。  我从未见过安装中断。  其他一切都很好。  很遗憾,我没有USB协议分析器...  我没有PLL中断,除非我用电阻器短暂地将XT2晶体短路,以验证它们是否发生。  他们确实发生了!  这一切都在我滥用时钟的时候发生。

晶体是12MHz,我不使用UCS FLL。  我对某些器件勘误表运行DCO,表明USB PLL可能无法启动,但在操作过程中未使用- MCLK为XT2 1:1,SMCLK和ACLK除以4。

所以我决定检查晶体频率。  首先验证它是否通过示波器振动(使用LeCroy ZS1000有源探头,0.9pF 1M)。  一个水晶终端很干净,另一个看起来有点吵,但也不是特别吵。  我没有注意到,但我认为由于其阻抗较高,XT2IN的噪声更大。

接着,我把ACLK转到了WFP 1.0 (ACLK将XT2CLK除以4,以3MHz),然后用一个计数器(Agilent 5.3131万A)对其进行了探测。  其测量值为2.99.9966万MHz,偏差为~11ppm。

但是当我插入USB接口时,频率会下降到2.99.62万MHz,这是由0.12 % 关闭的!  这超出了USB 0.1 % 时钟规格。  当主机停止枚举并挂起设备时(在连接点关闭USB PLL时),ACLK将恢复到与未插入时相同的速度。  ACLK在奇怪的频率下保持稳定;它不会像在噪声/抖动中假设的那样跳转。

这里可能的根本原因是什么?

此时钟转换是否会导致安装始终失败?  只有2.0 全速...  我希望如果它如此接近规格极限,它将会间歇性且不一致。  我从未看到过SETUPIFG。

它似乎不是由VBus上的噪音引起的。  (我没有铁氧体磁珠,但它有一个肖特基。)

USB电缆护罩未连接。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我刚刚尝试了其中一个USB演示(H8_Keyboard),它可以完美地工作-所以这不是硬件问题。 所以我想我一直在尝试弄清楚为什么UBM只是拒绝接受设置...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Jan,

    我的第一个建议是让你尝试一下已经做过的一个例子,以确保它能起作用。 下一步是查看示例和原始代码之间的设置差异,以缩小问题范围。 另外,MSP430必须为VCORE 2级,USB模块才能正常工作。 您是否在原始代码中适当地更改了VCORE级别?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我确实设置Vcore。  我还尝试使用演示版(PMM.c)中的代码,而不是采用slau208o (F5xx和F6xx系列指南)的P108中的代码,包括步进。  它将成功升级到2级或3级,但USB模块没有骰子...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我目前看到的唯一一件事是演示启用了我当前不使用的FLL ...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使DCO以24MHz的频率运行,并通过WFP 1.0 上的ACLK用计数器进行验证。 现在,我直接在DCO下运行MCLK,在XT2下运行ACLK/SMCLK,在3MHz下运行。 VCORE级别3。 仍然看不到设置数据包... :(
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我从未使用过带有USB的DCO,因为我需要性能和精度。 主板仅通过PC连接运行(并提供电源),因此功耗或多或少无关紧要。 从未发现(直到今天) MSP430F5510样品在24 MHz MCLK / SMCLK下无法工作(USB),其来源为24 MHz XT2 (默认Vcore级别(零))和2.0V VCC (室温)。

    MSP430F5510还可以通过48 MHz XT2和旁路(禁用) PLL直接运行USB模块,但不能在低电压下运行(如果我记得正确,则必须高于2.5V)。 同样,在室温下。

    (对我而言)无法通过断点/调试器调试USB。 我为此使用了高速UART (1 Mbps)日志。 按照TI的原始开放源代码USB开发包,从零开始制作我自己的USB堆栈。

    尝试从TI的开放源代码工作示例开始,与您的目标类似,并在小步骤中进行修改。

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

    “无法通过断点调试”是什么意思? 在ISR中设置HW Breakpoont是完全可能的,以确保发生中断。  确认后,您将重置并重新开始。  如果MSP-FET通过干扰中断逻辑或导致IFG被清除来阻止这种情况,则它将完全不可用。

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

    很高兴看到示例代码运行良好。 您是否在演示中启用了设置IFG并看到了这些数据包?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗯,也许我应该,只是为了验证它是否工作。

    我刚收到一个LeCroy Mercury T2 USB协议分析器,我可以立即看到USB收发器根本不发送任何内容,就好像没有设置Fen或PUSEL一样。   主机将继续尝试并通过Se0->Setup in (设置在)->reset,然后重试。  在物理连接上,它从重置和SOF开始。  UBM从未说过蹲,实际上触发了暂停,因为它显然认为公共汽车在3毫秒内处于非活动状态。  分析仪跟踪显示不是。  因此,要么收发器保持禁用状态,要么PLL锁定到错误的频率,要么从收发器中关闭门控。  这不会连接MSP-FET,也不会进行任何调试。

    我还看到演示在3.2768万Hz下运行FLL OFF REFO以约束DCO,而我根本不使用REFO。  我不知道REFO是否必须活跃?

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

    已尝试运行FLL OFF REFOCLK;没有区别 ,UBM仍然保持沉默。

    Se0上的修正,这在稍后才会发生...  这是前21个数据包。  所有H->S.

    packet#
    ______ |________________________________________________________________
    packet(1) Dir Reset( 3.883 US) 34.000 ns) Time Stamp(31. 9.38658966亿)
    ______ |________________________________________________________________
    Packet (2) Dir F (S) Sync (_0.0001万) in (0x96) ADDR (5) ENDP (3) CRC5 (0x12)
    ______ | EOP (266.660 ns) Pkt Len (36位(5字节))持续时间(2.933 us)
    _______ |空闲( 1.315 US)时间戳(31. 9.3866355亿)
    ______ |________________________________________________________________
    packet(3) Dir Reset( 3.700 US) 33.330 ns) Time Stamp(31. 9.38667132亿)
    ______ |________________________________________________________________
    Packet (4) Dir F (S) Sync (0.0001万) in (0x96) ADDR (5) ENDP (3) CRC5 (0x12)
    ______ | EOP (266.660 ns) Pkt Len (36位(5字节))持续时间(2.933 us)
    _______ |空闲( 1.233 US)时间戳(31. 9.38671532亿)
    ______ |________________________________________________________________
    packet(5) Dir Reset( 5.450 US) 33.340 ns) Time Stamp(31. 9.38675032亿)
    ______ |________________________________________________________________
    Packet (6) Dir F (S) Sync (0.0001万) in (0x96) ADDR (5) ENDP (3) CRC5 (0x12)
    ______ | EOP (266.660 ns) Pkt Len (36位(5字节))持续时间(2.933 us)
    _______ |空闲( 1.483 US)时间戳(31. 9.38681182亿)
    ______ |________________________________________________________________
    packet(7)目录重置( 7.334 us)空闲(33.340 ns)时间戳(31. 9.38684932亿)
    ______ |________________________________________________________________
    Packet (8) Dir F (S) Sync (_0.0001万) in (0x96) ADDR (5) ENDP (3) CRC5 (0x12)
    ______ | EOP (266.660 ns) Pkt Len (36位(5字节))持续时间(2.933 us)
    _______ |空闲( 1.249 US)时间戳(31. 9.38692966亿)
    ______ |________________________________________________________________
    packet(9) Dir Reset( 4.233 US) 34.000 ns) Time Stamp(31. 9.38696482亿)
    ______ |________________________________________________________________
    Packet (10) Dir F (S) Sync (_0.0001万) in (0x96) ADDR (5) ENDP (3) CRC5 (0x12)
    ______ | EOP (266.660 ns) Pkt Len (36位(5字节))持续时间(2.933 us)
    _______ |空闲( 1.199 US)时间戳(31. 9.38701416亿)
    ______ |________________________________________________________________
    packet(11)目录重置( 4.268 us)空闲(33.340 ns)时间戳(31. 9.38704882亿)
    ______ |________________________________________________________________
    Packet (12) Dir F (S) Sync (_0.0001万) in (0x96) ADDR (5) ENDP (3) CRC5 (0x12)
    ______ | EOP (266.660 ns) Pkt Len (36位(5字节))持续时间(2.933 us)
    _______ |空闲( 1.249 US)时间戳(31. 9.3870985亿)
    ______ |________________________________________________________________
    packet(13) Dir Reset( 4.233 US) 34.000 ns) Time Stamp(31. 9.38713366亿)
    ______ |________________________________________________________________
    Packet (14) Dir F (S) Sync (_0.0001万) in (0x96) ADDR (5) ENDP (3) CRC5 (0x12)
    ______ | EOP (266.660 ns) Pkt Len (36位(5字节))持续时间(2.933 us)
    _______ |空闲( 1.265 US)时间戳(31. 9.387183亿)
    ______ |________________________________________________________________
    packet(15) Dir Reset( 69.868 US) 33.330 ns) Time Stamp(31. 9.38721832亿)
    ______ |________________________________________________________________
    Packet (16) Dir F (S) Sync (_0.0001万) SOF (0xA5) Frame #(1652) CRC5 (0x17)
    ______ | EOP (250.000 ns) Pkt Len (35位(5字节))持续时间(2.917 us)
    _______ |空闲( 1.250 US)时间戳(31. 9.387924亿)
    ______ |________________________________________________________________
    packet(17) Dir 166.667 ns) 32.670 ns)时间戳(31. 9.387959亿)
    ______ |________________________________________________________________
    Packet (18) Dir F (S) Sync (_0.0001万) in (0x96) ADDR (5) ENDP (1) CRC5 (0x06)
    ______ | EOP (250.000 ns) Pkt Len (35位(5字节))持续时间(2.917 us)
    _______ |空闲( 1.334 US)时间戳(31. 9.38796766亿)
    ______ |________________________________________________________________
    Packet (19) Dir Se0 (950.000 ns) Idle (33.330 ns) Time Stamp(31. 9.3880035亿)
    ______ |________________________________________________________________
    Packet (20) Dir F (S) Sync (0.0001万) in (0x96) ADDR (5) ENDP (3) CRC5 (0x12)
    ______ | EOP (250.000 ns) Pkt Len (35位(5字节))持续时间(2.917 us)
    _______ |空闲( 1.282 US)时间戳(31. 9.38802亿)
    ______ |________________________________________________________________
    packet(21)目录重置( 4.100 us)空闲(33.340 ns)时间戳(31. 9.38805532亿)
    ______ |________________________________________________________________
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在演示代码的UBM ISR中设置断点(包括视情况而定的SETUPIFG)可以正常工作。 每次连接电缆开始枚举时,它都会停止在那里。 等待状态似乎没有影响。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Jan,
    是否可以得到一些澄清? 我知道您成功运行了H8_Keyboard示例,但在运行应用程序时遇到了问题。

    您使用的是H8_Keyboard示例附带的同一USB库代码库(USB_API中的文件),还是更改了现有代码? 如果是,您做了哪些更改?

    您的应用程序是否遵循H8_Keyboard示例中列出的USB和PMM设置程序? 按此顺序:
    pm_setvCore(),initPorts,initClocks,initButtons,Keyboard_init, USB_setup()?

    如果您的应用程序是键盘,是否可以像现在一样使用H8_Keyboard示例项目,但使用应用程序的内容替换main.c文件中whiles()循环中的项目,并查看是否获得了安装包?

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

    我根本不使用任何TI代码。  这是从NXP ARM Cortex-M移植而来的代码库,它在ARM7TDMI时代开始使用,因此需要连接到特定的任务调度和内存管理模型。  资源少得多,缺乏以太网,动态内存不足(尽管我想可能会使用dlmalloc)等因素对于许多琐碎的应用程序来说都是合适的。  它仍然允许利用现有的已知可靠代码。  除了这个愚蠢的USB接口,其他几乎都能正常工作,包括最后期限安排,渲染到LCD TFT面板-除了触摸输入和深度睡眠(LPM4),我还没有实施。  这两种简单的方式都不会让我担心USB接口的工作方式。   我唯一使用的TI代码是msp430f5510.h,即使它最终也可能会被替换(我讨厌它如何使用#define而不是枚举,这意味着它不能包含在名称空间中,而且它很容易被一些名称(如NAK)绊倒。  幸运的是,由于我使用枚举,这只会导致编译错误,而不是完全损坏的代码,但如此庞大的#define列表令人非常不安。  此外,我更喜欢使用封装结构来描述器件,以及任何非普通的存取器件,但这仅在器件在内存中排列为连续时才有效;使用TI头文件可以轻松支持多个处理器系列)。

    在TI设置中断处理程序中检查USB器件寄存器时,它们的配置完全与我的代码在预期看到设置之前生成的代码完全相同,但有一个例外-在TI代码中未设置Fen。  我试图不将其清除以匹配,但没有成功。  他们对USB模块的配置完全相同,但这种硬件并不是很强大,而且有很多隐藏变量和逻辑。

    每当我暂停代码时,我都可以看到USBFN发生变化,因此我知道它正在接收SOFS。  这意味着PLL锁定到正确的频率,收发器至少可以接收。

    在REFO外运行DCO不会产生任何功能差异。  (因为我想在没有可运行任务时输入LPM3,所以这是一个不可运行的任务。)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还尝试将MCLK设置为3MHz -这一点根本不起作用-我甚至不会收到VBON中断。 这完全是个问题。 6MHz时相同。 在12MHz时,它像往常一样工作-没有设置中断。 这会引起时钟域问题。

    我想我已经完成了。 这是一个死胡同
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Jan,

    很抱歉,您在使用的代码库中无法使USB正常工作。 我们建议使用USB堆栈以获得正确的USB功能。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.该代码不可维护:意大利面不易理解。 它有许多未使用的功能,例如支持永远不会存在的晶体频率,而自动检测只是另一种可能会中断的功能。 基本上,它看起来像某人的学校项目。 实际上不可用。
    2.不能仅通过文档对设备进行编程。 这是一个大问题,因为它意味着对功能的理解不够充分。

    这就让我们无法继续。 MSP430不再在地图上。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    感谢您对我们的USB堆栈的反馈。USB外设和USB堆栈是一起开发的,建议大多数用户不要自行开发。 USB堆栈旨在允许具有各种不同硬件配置的各种开发者在MSP430 MCU上使用USB接口,而无需了解相关MSP430s中USB外设的具体情况。 硬件控制的黑盒功能(如果需要)。 该堆栈也是为大多数MSP430应用开发的,这些应用没有您正在实施的调度程序,RTOS或代码结构。 我们确实提供了此USB堆栈的另一个版本,该版本包含在用于MSP430的TI-RTOS中,更适合这些类型的应用。 我建议您进一步检查此项以满足您的应用需求。

    此外,我查看了此芯片的已知勘误表,发现您的情况与USB8勘误表非常相似。 您是否可以检查芯片的版本以查看是否受到影响? 作为测试,您可能还需要实施变通办法。

    目前,我们不支持开发自定义USB堆栈。