本帖最后由 小恩GG 于 2021-5-20 10:44 编辑
有不少LPC55用户在使用ISPUSB0端口进行固件升级时遇到无法连接或升级失败的情况。 我们一般的建议是,对于LPC55(S)6x/2x,LPC55(S)1x/0x,不要使用USB0作为固件升级的端口。
LPC55 USB0是USB Full Speed端口。CMPA的默认设置关闭了USB0口,有个别用户为了使用ISP USB0 Boot,通过重新配置CMPA使能ISP USB0,但是在实际操作中,我们并不建议这样使用。 ISP USB0使用LPC55内置FRO作为时钟源。根据LPC55数据手册,FRO的精度仅为+-2%,而USB FS对时钟精度的要求是+-2500ppm(+-0.25%),显然LPC55 FRO的精度指标无法满足USB0对时钟的要求。
可能这时候有用户会问,为什么在用户应用程序里USB0就可以使用内置FRO作时钟源呢?但凡用FRO做USB0时钟源,我们必须用软件校准过的FRO作为USB0的时钟源进行通信,在很多MCUXpressoSDK USB 例程中都体现了USB时钟校准的应用。当使用FRO作为USB0的时钟源时,为了确保USB0时钟的准确性,我们必须用USB0 SOF帧同步去校准FRO从而确保USB FS时钟源的准确性(参考设计TN00063 TN00063 - LPC5500 Crystal-less USBSolution (nxp.com))。但遗憾的是LPC55的BOOT ROM不支持USB SOF 校准FRO,因此即便我们使能了ISP USB0,在非室温条件下,FRO的时钟漂移仍可导致USB0 通信失败。
既然不推荐ISP USB0用作固件升级,用户手册也不再对外公布ISP USB0在CMPA的使能地址位。如果用户需要用USB进行固件升级,我们推荐用ISP USB1 (High Speed USB). USB1精准的外部时钟源可确保ISP USB1工作的可靠性。
此外再补充一点,ISPUSB的通信协议符合BLHOSTspec. 详见:
|