主题中讨论的其他器件:CC2640、 MSP430FR6047
大家好、现在不是什么问题、而是一些评论:
- 如果还可以选择 MSP432Pxxx、那就更好了!
- 我们在设计中使用2 * MSP432P4011、CC2640 (模块)和 MSP430FR6047。 它由两个 PCB 组成:
PCB 1:CC2640+MSP432P4011、PCB 2:MSP432P4011 + MSP430FR6047
两个 PCB 均通过 RS485在两个 MSP432P4011之间进行连接
我们在所有芯片上编写了很多软件、一切都很好!
目前为止都很好
我们在四个月前开始实施 OAD、并成功升级了 CC2640及其配套的 MSP432P4011 (使用自定义 BSL 重新编程 MSP432P4011、如现有的'OAD_firmware_update'示例。 然后、我们继续实施 MSP432P4011以及 PCB 2上的 MSP430FR6047。 对于硬件、我们选择了建议的或强制的串行端口(UART)。 由于 MSP430FR6047将通过 MSP432P4011进行更新、因此应首先考虑后者! 那么麻烦就开始了!!
几周后、我们发现今天出现了什么问题! 我们红色的'slla622j'。
通过 pcb1的 MSP432P4011、我们向 BSL 发送了一条赞扬消息。 然后、MSP432P4011 (pcb2)执行:
案例 MSG_RS485_CMD_MC_OAD:
{
Display_print0 (displayOut、0、0、"MSG_RS485_CMD_MC_OAD Received");
MAP_Interrupt_disableMaster();
//在进入引导加载程序之前将中断优先级设置为0x00
int i;
对于(i=0;i < 240;i++) NVIC->IP[i]= 0;
NVIC->icer[0]= 0xFFFF;
NVIC->ICPR[0]= 0xFFFF;
NVIC->icer[1]= 0xFFFF;
NVIC->ICPR[1]= 0xFFFF;
//使用给定的 BSL 参数调用 BSL
(((void (*)()) BSL_entry_function)(((uint32_t) BSL_Param);
//此时 BSL 应该进行控制,此应用程序是否无效!
//从 CC 发送0xFF 并等待0x00!
}
中断;
然后、我们将发送0xff (pcb1)并接收0x00 ACK (pcb2)、这是可以的!
然后、我们发送密码0xff (256*)并重新接收'0x3B 0x05'、这在芯片被整体擦除时是不正常的!
由于我们还使用 MSP430FR6047、因此我们还用红色标记了它的论文、找到了另一种方法、即两次发送密码!!
然后、我们发现我们的板载 BSL 不是00430044版本(如文档中所示)、而是00430045!
因此、我们尝试了 MSP430FR6047的方法、并且:它可以正常工作!!!
问题:这是意外的,还是手册没有更新或其他内容?
Rgds.、
Laurent van Poppelen
2M 工程
荷兰