“线程:测试”中讨论的其它部件
您好,
我们在 MSP430 bootloader 模式方面遇到了一些问题。
下面是我们的应用程序的一些简要说明。
根据我们的硬件架构,DSP (F2838x 系列)是 I2C 主控器,MSP430是从控器。
在某些情况下,MSP430正在作为 BSL 模式工作,因此我们希望让 DSP 知道 MSP430 BSL 核心命令,以便控制 MSP430 FRAM。
在我们的 DSP I2C 结构中,Rx 数据包长度是一个定义的参数,该参数随命令的不同而变化。
但是,我们发现一些棘手的问题是 MSP430响应数据包的长度会随“Rx 密码前”或“Rx 密码后”的情况而变化。
以核心命令 TX BSL 版本为例。
如果在 Rx 密码解锁后使用此命令,我们将获得5个数据包( CMD+ D1 + D2 + D3 + D4,下面是灰色部分)。

另一方面,如果使用此命令时 Rx 密码被锁定,则我们将获得2字节的核心响应和消息数据,而不是5字节的数据。
在 DSP I2C 中设置的 Rx 数据包长度是为锁定方案预定义的。 这就是我们所期望的8字节 Rx 数据包长度。(Ack + Header + Length1 + Length2 + Core RSP + Core Msg + CKL + CKH)
问题是,
如果在 Rx 密码解锁后执行 Tx BSL 版本命令两次,
我们第一次能够以一种“停止”和“停止”状态结束完整的通信过程。
第二次,当我们将第二个数据字节写入从属设备时发现通信失败。而 SCL 被 MSP430 I2C 停止。
这是因为我们在仍有一些未发送的字节时断言 nack + stop? 如果是,这是否意味着我们必须读取所有字节,或者 SCL 将被 MSP430 I2C 停止?
对这一机制是否有任何解释?

问题2:
我们是否有任何方法可以将 BSL 恢复为锁定状态?
谢谢你。