【MPC5744P】Bootloader上位机开发(CAN通讯)

上位机源码范例直接下载:https://download.csdn.net/download/u010875635/10882176

此处上位机采用C#编写,界面框架为WPF。

为保证烧录过程不出现错误,上下位机采用一问一答模式,上位机发送一帧数据后,下位机接收处理完毕再回馈给上位机,上位机再决定下一步动作。

核心代码逻辑部分,将命令分成EntryBootloader, Reset, Data, DataEnd, CheckBootloader, Erase, ERR几个部分。

烧录时会先检查是否处于Bootloader,,然后执行擦写操作(擦写地址范围由上位机发送),再发送数据(地址+数据为一帧),最后发送结束命令。

注意,由于CAN长度为8字节,而32位地址已经占用4字节,Flash地址从0x800000开始,所以所有地址减去0x800000,3字节即可,首字节作为数据类型。

示例代码中,无论是进入用户App还是Bootloader都会通过CAN回复当前状态,Bootloader中蓝色LED低频1s闪烁,烧录时红色LED快速闪烁,用户App中彩灯闪烁,Bootloader中4s未接收到命令会进入用户App中,若监测不到用户App存在,会再次复位到Bootloader中。

注意,本实例中使用的是周立功的USBCAN,理论上支持所有致远的CAN设备,实际试验的是USBCAN-E-mini,若是有其它的CAN设备,更换底层的CAN驱动代码即可,程序没有直接调用ZlgCAN,有中转类,方便替换(主要是初始化函数、波特率设置、发送、接收函数等)。

 

 

#region 连接断开

/// <summary>
/// 连接CAN
/// </summary>
bool Connect()
{
    if (m_BOpen)
        return true;

    MotorControl1CmdForDevelop.Scm_DevelopCanConfig scm_DevCanConfig = new MotorControl1CmdForDevelop.Scm_DevelopCanConfig();
    scm_DevCanConfig.canType = (CANDevices.ZlgCAN.ZlgCanType)Enum.Parse(typeof(CANDevices.ZlgCAN.ZlgCanType), cbCanType.SelectedItem.ToString());
    scm_DevCanConfig.devIndex = (uint)cbDeviceIndex.SelectedIndex;
    scm_DevCanConfig.canIndexs = m_CanIndexs
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值