Part Number:MSP430FR2673
您好!
我在使用MSP430自带的BSL进行升级时遇到了固件传输问题。430从机进入BSL后的rx_password写入正常,id读取正常,固件大小约6kB。从下载地址0xC000开始传输到0xC0f0时一切传输正常,但在地址0xc0f4时,出现IIC通信超时,且之后一直无法正常通信。使用示波器捕获波形后发现SDA电平一直为低,只有MSP430断电重启后才能恢复。
我尝试过:
(1)将IIC通信频率从200k一直降低到1k,;
(2)将每包固件从200bytes减少到4bytes.
(3)在每次IIC写入后添加10~1000ms的延时。
以上方法均未能解决此问题,且当我以每包4btes固件传输时,通信总是在地址0xcof4这一包出现失败。
请问通过IIC使用BSL对430进行升级还有什么必须注意的地方吗?这个问题可以提供一些解决方法吗?谢谢!
Cherry Zhou:
您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!
,
Cherry Zhou:
您好,请问您是如何调用 BSL的?
您提到的超时发生在通信期间:
如果使用硬件调用,您能否提供SCL 、 SDA 和测试 REST 引脚的波形?
如果使用软件调用,请使用 GPIO 切换信号来显示调用点,并提供相应的波形。
,
ying hou:
带红圈的图片是出现问题的通信波形,这包数据仅成功写入了IIC从机地址和一个数据字节,后续SCL电平就持续拉低。另一张图是上一张的局部图。
当前使用的通信频率为200k,写入后延时时间为50ms,仍然是在boot中通信时突然出现异常。
,
ying hou:
我是使用软件进入的BSL,没有使用到430的复位引脚。跳转代码如下:
if(reg_data == CMD_UPDATE) //跳转升级 { __disable_interrupt(); // disable interrupts ((void (*)())0x1000)(); // jump to BSL }
这是我放慢升级通信速度捕获到的波形(每次写入后延时1s),从这一包开始,后续都是异常的。
上面图片异常是卡在下载固件的地址为0xc07c,反复升级都是卡在这里。
,
ying hou:
我尝试了延长IIC通信超时时间,但问题依然存在
,
ying hou:
因为固件校验的指令是12字节,我再次尝试了以200kHz速度,3bytes每包进行固件升级。同样出现了失败现象,但情况又有不同。在出现异常时此数据包截图如下:
此次异常传输中出现了数据错误,0xA1传输成了0xA0 0x01,但出错后总线电平正常,因此我尝试在出错后以一个字节一包重新进行传输,结果可以传输成功。于是我又尝试了以下逻辑:升级时以3字节每包传输固件,如果出现传输错误,则以1字节每包重传;重传成功后,恢复3字节每包继续传输。结果在地址0xc560时再次出现错误,且1字节重传失败,此时检查总线电平,SDA线被拉低且等待超过8分钟未恢复(无法自动恢复)。
,
Cherry Zhou:
好的收到,帮您反馈给工程师看下,有新的消息尽快给到您哈。
,
Gary Gao:
ying hou 说:此次异常传输中出现了数据错误
我看你的波形,感觉你的I2C驱动有点弱啊。 你用的的多大的上拉电阻?
频率降低到10K,抓个波看看。
,
ying hou:
10k的结果和200k没有差别,都会出现相同的异常。不过已经定位到影响通信的问题了,谢谢关注。
,
Cherry Zhou:
您好,请问您的问题已经得到解决了吗?Gary是工程师,您要是还有问题的话可以直接进行沟通。
,
ying hou:
是的,是我这边的部分硬件导致,已经解决了,谢谢!