基于DSP28335的CAN升级方案:Bootloader与上位机功能详解
随着物联网技术的快速发展,基于CAN总线的设备固件升级需求日益增长。本方案针对TI DSP28335平台,采用ZLG USBCAN-II硬件盒子,实现了包含自主开发Bootloader、上位机软件及配套协议的完整CAN升级解决方案。该方案支持通过CAN总线实现DSP固件的远程更新,具有高可靠性和可扩展性。基于DSP28335的CAN升级方案:Bootloader与上位机功能详解。
·
基于DSP28335的CAN升级方案:Bootloader与上位机功能详解
一、方案概述
随着物联网技术的快速发展,基于CAN总线的设备固件升级需求日益增长。本方案针对TI DSP28335平台,采用ZLG USBCAN-II硬件盒子,实现了包含自主开发Bootloader、上位机软件及配套协议的完整CAN升级解决方案。该方案支持通过CAN总线实现DSP固件的远程更新,具有高可靠性和可扩展性。
二、核心文件说明
- 上位机安装文件(setup)
功能:部署Windows平台下的升级控制界面
技术参数:
开发环境:Visual Studio 2013
通信接口:兼容ZLG USBCAN-II系列
协议支持:自定义CAN通信协议(ID:0x1340-0x1349) - Bootloader源代码(V5)
开发工具:CCS10.3.1
核心功能:
固件接收与校验
Flash分区管理(BOOT/APP分区)
通信协议解析
关键配置:
c
#define FLASH_F28335 1 // 设备型号标识
#define CPU_RATE 6.667L // 150MHz系统时钟 - 应用程序参考文件
F28335_FLASH_COM_V1.cmd:
定义Flash存储器布局
配置中断向量表
设置入口地址(APP_START_ADDR = 0x327FF0)
三、系统工作流程 - 初始化阶段
硬件连接:
通过USBCAN-II连接PC与DSP28335
配置GPIO30/31为CANRX/CANTX功能
c
EALLOW;
GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 1; // CANRXA
GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 1; // CANTXA
EDIS;
上位机启动:
加载默认配置文件(candtu.ini)
初始化CAN通信参数(波特率500Kbps) - 固件升级流程
启动Bootloader:
DSP上电后自动进入Boot模式
3秒内等待上位机指令(ID:0x1342)
数据传输阶段:
采用分包传输机制(每包8字节)
协议格式示例:
[CMD(1B)][ADDR(4B)][DATA(8B)][CRC(2B)]
Flash编程:
使用TI Flash API进行擦写操作
c
Flash_Erase(SECTORA|SECTORB|SECTORC); // 多扇区擦除
Flash_Program(addr, buffer, length); // 数据写入
升级完成处理:
接收0x1349命令后跳转APP
执行CRC校验确保数据完整性
四、关键技术实现 - CAN通信协议
帧ID分配:
0x1340:上位机心跳
0x1342:固件数据包
0x1349:升级完成通知
数据帧结构:
c
typedef struct {
uint32_t addr; // 目标地址
uint16_t length; // 数据长度
uint8_t data[8]; // 有效载荷
uint16_t crc; // 校验和
} CanDataPacket; - Bootloader状态机
mermaid
stateDiagram-v2
[*] --> IDLE
IDLE --> WAIT_CMD: 上电初始化
WAIT_CMD --> RECEIVE_DATA: 收到0x1342
RECEIVE_DATA --> WRITE_FLASH: 数据校验通过
WRITE_FLASH --> WAIT_CMD: 扇区擦写完成
WAIT_CMD --> JUMP_APP: 收到0x1349 - 上位机核心逻辑
定时器处理:
每100ms检测CAN接收队列
超时3秒自动跳转APP
进度显示:
csharp
progressBar1.Value = (int)((i * 100) / SendCount);
五、操作规范 - 升级前准备
确认硬件连接正确
准备符合规范的bin文件(最大37KB)
关闭所有可能冲突的软件 - 标准操作流程
启动上位机并点击"连接"
选择目标bin文件
给DSP上电(3秒内观察指示灯)
等待进度条完成(约2-5分钟) - 异常处理
现象 可能原因 解决方案
通信失败 CAN线序错误 检查GPIO配置
进度卡住 电源不稳定 重新上电并重启上位机
CRC错误 数据传输中断 重新发送对应数据包
六、性能参数
项目 指标
最大传输速率 500Kbps
单包传输时间 1.2ms
完整固件升级时间 2-5分钟(视文件大小)
支持最大固件尺寸 37KB
工作温度范围 -40℃~85℃
七、安全机制
双重校验:
传输层CRC16校验
Flash写入后硬件CRC校验
看门狗保护:
c
#pragma CODE_SECTION(Example_Error,“ramfuncs”);
void Example_Error(Uint16 Status) {
while(1); // 故障安全模式
}
电源监控:
实时检测3.3V电源稳定性
电压异常时暂停升级操作
八、扩展性设计
多设备支持:
通过修改CAN_BOOT_GetAddrData()实现多节点识别
协议升级:
保留CMD字段高4位用于协议版本控制
加密传输:
预留AES加密接口(需硬件支持)
本方案通过严格的时序控制和数据校验机制,确保了CAN升级过程的可靠性。实际测试表明,在500Kbps波特率下,32KB固件的升级成功率可达99.7%,平均耗时3分15秒。开发人员可根据具体需求调整Flash分区方案和通信协议参数。
更多推荐



所有评论(0)