TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430FR2673: IIC 升级异常

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:

是的,是我这边的部分硬件导致,已经解决了,谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » MSP430FR2673: IIC 升级异常
分享到: 更多 (0)