freetech

HCS08单片机改写FLASH参数之——上位机程序

0
阅读(3366)

    HCS08单片机支持在应用编程IAP,只要有合适的办法把要改写的内容传给单片机,就可以自己写稿FLASH实现永久存储。应用编程IAP折详细内容参照“AN3942”。

    飞思卡尔为在线参数修改和观察变量提供了一套成熟的解决方法——Freemaster,里面有一套读写Memory和变量的协议,还留了一条自定义命令方便用户扩展。我们就是用自定义命令实现写FLASH命令。

    该示例是一个波形发生器,功能是:

1、2路数字波形输出

2、第一路波形的高电平时间和低电平时间可调

3、第二路波形的上升沿相对第一路的下降沿有一个延时,该延时可调。

(VLC]SYY7%4K5OTG_]_3]`P[4]

做出来的界面是这样的效果:

image

程序要实现的是点“下载参数”时通过串口发送2条命令,下面是命令示例:

首先发送“2B10150A0210E0000000000A000000140000000FB0441400AA”,单片机会有个回应。——该命令是将要执行的命令传给单片机。

接着发送“2BC63A”,单片机会有个回应。——该命令是执行最后一次传给单片机的命令。

下面是点“下载参数”对应的一段代码:

void CFreeMasterDlg::OnButton9()
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);
    memset(dat,'\0',sizeof(char));
    dat[3] = m_hi_time & 0xFF;
    dat[2] = (m_hi_time>>8) & 0xFF;
    dat[1] = (m_hi_time>>16) & 0xFF;
    dat[0] = (m_hi_time>>24) & 0xFF;
    DWORD duty_time = m_lo_time + m_hi_time;
    dat[7] = duty_time & 0xFF;
    dat[6] = (duty_time>>8) & 0xFF;
    dat[5] = (duty_time>>16) & 0xFF;
    dat[4] = (duty_time>>24) & 0xFF;
    DWORD Second_time = m_delay_time + m_hi_time;//第二路波形
    dat[11] = Second_time & 0xFF;
    dat[10] = (Second_time>>8) & 0xFF;
    dat[9] = (Second_time>>16) & 0xFF;
    dat[8] = (Second_time>>24) & 0xFF;
     WriteFrame(ADDR,dat);
    SetTimer(1,100,NULL);
}

最后一句SetTimer是打开一个定时器,就是过一会后发送第二条命令“2BC63A”。