3.2.2 读写汇编子程序

    主机方以下降沿通知目标机方的BKGD端,位通信开始,每一位传输至少需要16个时钟周期。具体过程如下:

    主机首先拉低BKGD引脚,并使低电平维持时间不短于512个时钟周期,目标机探测到下降沿信号后清命令寄存器,同时等待接收主机的BDM命令。

    主机写位O到目标机BKGD端的操作为:主机拉低目标机的BKGD端不少于12个时钟周期,目标机在探测到低电平以后的第10个周期对BKGD采样,读入该位的O。

    主机写位l到目标机BKGD端的操作为:主机拉低目标机的BKGD端2~4个时钟周期后释放BKGD端,使之为高电平,目标机在探测到低电平以后的第10个周期对BKGD采样,读人该位的l。

    下面是写一个字节的汇编代码:

   
    主机读目标机BKGD端的信息时.主机拉低目标机BKGD端2~4个周期后释放BKGD端,然后定义该引脚为输入状态,读取BKGD端的电平。如果目标机输出为0电平,则继续拉低BKGD端,从探测到主机拉低BKGD端起持续13个时钟周期。所以主机的读操作应在从拉低BKGD线算起的13个时钟周期内完成。对于目标机输出为1的情况,无需目标机输出高电平,因为BKGD端已用电阻上拉,只需定义该引脚为输入,则自然会使之为1。

    下面是读取一个字节的汇编代码:

   

   

    对于硬件命令,命令之间间隔要大于150个时钟周期;对于固件命令,送出读命令到读取数据之间要延迟32个时钟周期;写命令后面可紧跟需要写的数据,但与下一条命令之间要间隔32个时钟周期。

3.2.3 测试程序

    为了测试以上程序的正确性,特用VC6.0编写了一个计算机端的测试程序。该程序通过串口与JB8通信,以完成对B32 Flash的读写和擦除。由于源代码较长,限于篇幅不在此列出。