主题中讨论的其他部件: MSP-FET
你(们)好
我的MSP430F5638 USB正在工作,但USB COM端口有时无法建立连接。或者用户(如PC)请求MSP430F5638无法获得。 PC和设备识别USB COM端口,连接PC的编辑器发出声音,MSP侧的LED闪烁。 我不知道为什么请求不能传递到MSP,专家告诉我看到USB使用的2K RAM。 它可能无法分配内存空间, USB需要它。但我不知道在哪里可以看到或调试所使用的2K RAM USB。有人知道如何操作吗?
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.
你(们)好
我的MSP430F5638 USB正在工作,但USB COM端口有时无法建立连接。或者用户(如PC)请求MSP430F5638无法获得。 PC和设备识别USB COM端口,连接PC的编辑器发出声音,MSP侧的LED闪烁。 我不知道为什么请求不能传递到MSP,专家告诉我看到USB使用的2K RAM。 它可能无法分配内存空间, USB需要它。但我不知道在哪里可以看到或调试所使用的2K RAM USB。有人知道如何操作吗?
您好,James:
带有USB的设备和设备由电池和USB供电,初始设备打开电源,插入和拔下USB时,所有设备上的USB通信都可以正常工作。 但是,如果拔下USB,请保留电池供电的设备,运行日志时间,某些设备可能会在夜间运行, 其中一些可以在周末运行。 其他一些可以运行多天,在多天或长时间运行后,如果没有连接USB,请重新插入(连接) USB,USB通信将无法正常工作。 USB到PC的连接可以始终打开。 它可以从PC设备管理器或固件中看到,设备的LED会亮起。
根据您的建议,当USB到PC连接打开时,不要进入LPM,USB有电源线,设备不再需要LPM。
从USB_connectionState()可以判断连接是否打开。只有当设备没有USB连接时,才会进入LPM。 在我的测试案例中,在使用电池运行多天的过程中,设备进入LPM3以节省电池电量,当USB连接或USB_connectionState()返回ST_ENUM_ACTIVE,不再进入LPM时,我理解您的错了吗? 昨天的固件测试,设备固件进入LPM0 我测试了7个设备,但都没有出现故障。 当USB_connectionState()返回 ST_ENUM_ACTIVE时,您认为我应该删除PLM0吗? USB_connectionState()返回 ST_ENUM_IN_PROGRESS,它不在LPM中。 请您确认我做了什么对或错。 请您给我更多建议。
路易
您好,Louis:
这是有道理的。 根据 用户指南中的42.2 部分,MSP430F5638上的USB模块仅支持在电源模式活动模式(AM/),LPM0和LPM1期间的活动操作。 这就是您在使用LPM0而不是LPM3时没有任何失败的原因。
因此,我建议您继续使用LPM0。 如果您必须使用LPM3来节省功耗,我建议您定期唤醒设备以检查是否有USB连接。 显然,这不允许您立即检测USB连接,并且会有一些延迟。 我不确定这对您的应用程序是否重要。
希望这能有所帮助!
此致,
詹姆斯
MSP客户应用程序
您好,James:
有三种应用案例。
1. USB未连接,设备使用电池运行,固件位于LPM3中,但USB端口硬件已准备就绪,可供使用或连接。
2.检测USB是否已连接,但枚举正在处理中,设备是否通过USB电源运行,电池是否已连接。 固件位于AM中
3.检测USB是否已连接。 ENUM已激活,设备使用USB电源运行,电池也已连接,固件位于LPM0或AM中
在周末测试期间,我的4台设备中的设备最多为1台,星期一早上,4台设备(每次一台为2和3台),我的4台设备都能正常工作。 但我的同事有3台设备,其中两台无法正常工作,一台工作正常。 他使用相同的固件映像
我的问题是在情况1中,设备应该在LPM0或LPM3中。 您上周五的建议是什么。 如果设备计划使用USB,则该设备应位于LPM0或LPM1中,是否正确?
如果正确,这是对解释为什么一些装置工作,其他装置不工作,如果装置工作,它总是工作,如果它不工作,无论插入和拔下USB多少次,USB通信都不工作。 USB无法正常工作,很难根据我所了解的情况进行解释。
请告诉我您的建议是什么? 如果1个设备应保留在LPM3或LPM0 / LPM1中,以便在用户再次插入USB时保持USB连接再次工作。
路易
还有一件事。 以下 是应用手册的链接,该手册使用电池并在USB和电池之间切换。
此致,
Arthi
您好,Paul:
这意味着您需要在检测到USB后切换到更高的模式。 在我们的代码示例中,在USB_getConnectionState()状态机中切换到ST_ENUM_ACTIVE案例时,通常会立即执行此操作。
而(1) { Switch(USB_getConnectionState()) { 案例ST_ENUM_ACTIVE: __bis_sr_register(LPM0_bits + GIE);//输入LPM0 Function_is_USB_active(); 中断; 案例ST_PHY_DISCONNECTED: 案例ST_ENUM_Suspended: 案例ST_PHY_CONNGED_NOENUM_SUSP: __bis_sr_register (LPM3_bits + GIE);//输入LPM3 Function_is_USB_inactive(); 中断; 默认值:; } }
我看到Louis在上面提到,主板的70 % 通过了测试,而主板的30 % 失败了。 这种行为使我怀疑主板之间存在硬件问题。 如果出现软件问题,我希望所有主板都能通过或失败。 此外,在您观察到的故障期间,您看到PC上的设备管理器中列举了该设备,但该设备无法通信,对吗? 了解上面的哪个案例陈述最终会出现这种情况会很有帮助。
考虑到这一点,为USB PLL采购什么XT2? MSP430 USB API程序员指南中的11.2 3节介绍了PLL参考的几个重要要求。 如果XT2使用了晶体,则第11.2 5节讨论了负载电容器的重要性。 确保它符合数据表中指定的要求。
第12.2 章节1中有一些很好的地方可以帮助我们缩小此问题的范围。
此致,
詹姆斯
MSP客户应用程序
您好,James:
我们在检测到USB时从LPM 3切换到LPM 0,并在完成USB通信时切换回LPM 3。
当主板不通信时,PC始终会识别端口。 我们从计算机获得设备连接声音,并且设备管理器中显示了正确的端口。
Louis公司的30 % 数据是针对那些立即刷新并测试过的主板的。 重新刷新后,它们都能正常工作。
问题1:如果PC始终检测到端口,这是否意味着USB振荡器始终在启动?
问题2:我们正在使用 MSP430USBDevleopersPackage_3_20_00。 我们知道有一个较新的版本,但我们担心 升级会造成其他问题。 这是否会导致我们的问题?
谢谢你。
保罗
您好,Paul:
感谢您提供更多详细信息。 30 % 故障的行为非常奇怪。 我不知道为什么只需重新刷新设备就会有所帮助,除非编程过程中数据发生了某种程度的损坏。
如何对设备进行编程? 您使用的是哪种调试器(例如MSP-FET)? 您使用的是哪个界面(例如 BSL,4线JTAG,2线SBW)? 您能否提供详细的步骤,包括编程和测试?
例如,假设您通过2线SBW对设备进行编程,设备由MSP-FET供电。 编程完成后,假设您断开MSP-FET与主板的连接,电池将为主板供电。 然后,假设你通过USB将主板插入PC,它被枚举,由VBUS供电,你可以在主板和PC之间传递数据。 然后,假设您等待3天,主板仅使用电池供电,不会发生断电事件。 然后,通过USB将设备重新连接到PC,主板现在由VBUS供电,设备在PC上枚举,但无法接收数据。
其他一些问题:
Paul Mayer 说:问题1:如果PC始终检测到端口,这是否意味着USB振荡器始终在启动?[/QUOT]
正确。 当枚举发生并且PLL/振荡器以正确的频率工作时,可以在设备管理器中看到设备。
问题2:我们使用 的是MSP430USBDevleopersPackage_3_20_00。 我们知道有一个较新的版本,但我们担心 升级会造成其他问题。 这是否会导致我们的问题?[/QUOT]
这不应导致问题。
最后,我建议您在测试此问题时不要保持活动的调试会话。 相反,请将打开各种状态LED的代码放置在设备枚举但不发送数据后,找出代码结束的状态。
感谢您耐心等待我们解决问题。
此致,
詹姆斯
MSP客户应用程序
您好,James:
我们有两种方法对板进行编程:JTAG和我们自己的GUI (通过COM端口(USB,48.5232万))。
通过JTAG编程时,我们使用MSP-FET工具,并使用IAR工具或MSP闪光灯软件。
我们已让该装置在插入调试器的情况下运行,并使用另一台计算机通过USB进行测试。 这种做法从未失败。
以下是详细步骤:
1.使用JTAG和软件将固件闪存至MSP430。 装置仅由JTAG供电
2.拆下闪光灯。 设备断电。
3. 连接外部电源(电池)。 装置通电。
4.打开GUI。 连接USB。 GUI检测USB并识别端口。 使用GUI上的驱动程序下拉菜单选择端口。
5.建立联系。 使用GUI设置操作参数,单位,时间等
6.从计算机上拔下USB电缆。 设备现在仅使用电池运行。 关闭GUI
7.等待2-3天。 打开GUI。 连接USB电缆。 设备被枚举。 PC轮询装置。 无响应。
电池始终保持打开状态。 关闭电源后重启始终会使通信恢复。
JTAG在运行几天后不处于活动状态。
我们在几天内进行了一次测试并进行了活动调试会话,没有出现故障。
设备管理器端口的屏幕截图如下所示:
谢谢你。
保罗
您好,Paul:
我们不确定您为什么看到设备出现不一致的结果,在某些情况下,设备工作正常,而在其他情况下,直到您重新刷新设备时,设备才会出现。
我在上一篇文章中发送的链接指向一个应用说明,您可以从中下载代码,说明如何使电池供电+ USB供电设备在每个 USB状态下工作。 它可能值得一看,并根据 您的应用进行调整。
由于您看到枚举但设备 与GUI之间没有通信,我假定设备处于活动状态以外的其他状态。 要确定USB状态的确切位置,可能可以在每个USB状态下使用不同的闪烁速率来执行闪烁LED。 确定卡滞状态后,您可以实施类似 以下代码的操作以使其解除卡滞:
案例ST_USB_CONNUSTED_NO_ENUM:
//我们打开USB并连接到总线
如果(usb_enable()== kusb_s晒){
USB_RESET();
USB_CONNECT(); //在DP上生成上升边缘->主机将我们的设备枚举为全速设备
}
enu_in_prog =真;
enable_sleep =假;
中断;
此致,
Arthi