我们的设计使用 MSP430F5438A、我们使用 Code Composer Studio (CCS)来实现 IDE。
此设计需要通过 I2C 进行固件更新。 我们已决定使用 TI 提供的 BSL 代码(下载为 zip 文件) 、其中包含开始使用所需的文件。
该设计使用 UCB0 P3.1和 P3.2。 下面是用于定义端口和引脚的设置。
|
BSL_Device_File.h |
|
(笑声) /*特定于器件的定义*/
#define UCZNCTL1 UCB0CTL1
#define programming_functions #ifdef programming_functions (笑声) |
下面是执行代码后 pi_init()中的代码和分配的寄存器值。

使用 JTAG、我可以下载 BSL 并单步执行代码(CCS 调试器)、直到 文件 BSL430_PT_USCIB_I2C.c 中的函数 pi_receivePacket ()、其中代码等待 I2C 开始条件(检查 UCZIV 中的更改)。
|
BSL430_PI_USCIB_I2C.c |
|
char pi_receivePacket() while (RX_STATUSFlags = RX_PACKET_RUSDING_RUSDINUSing) (笑声) |
我们使用文档中提供的代码调用 BSL:
| _disable_interrupt ();/*禁用中断*/ ((void (*)() 0x1000)();/*跳转至 BSL */ |
我甚至添加了一个 LED、以便在调用 BSL 时亮起...
上面的寄存器和代码段是否看起来正确?
问题:
为了测试此设计、我们使用另一个 MSP430F5438A 通过 I2C 使用从地址0x48与上述 BSL 从器件通信。 出于某种原因、我们永远不会得到启动条件。
- 当 接收到启动条件时、我尝试添加另一个 LED 进行切换、但不会发生任何情况。
- 我已经尝试使用两台计算机、其中两台 JTAGs 一台用于主器件、另一台用于使用 switch 语句开始条件中的断点调试 BSL 代码、但没有发生任何情况。
注意: 在调用 BSL 之前 、2个微控制器通过 I2C 进行通信、而不会发出来回发送消息的问题。 其中一条消息调用代码来调用 BSL。
如果上面显示的寄存器设置和代码正确、接下来我可以检查/验证哪些内容?
一旦我能够让 BSL 识别 启动条件-其余的就是解决协议(密码等)