3.2 目标芯片总线频率的测定
不同型号的MCU总线频率不一样,因此编程系统的通用性还在于能使编程调试器自动获取目标MCU的通信频率,使之适应不同型号的MCU。
在HCS12中有一条比较特殊的BDM指令SYNC,它用于探测目标MCU的BDM接口的通信频率。该指令没有具体的操作码,因此不要求知道具体的目标芯片BDM通信频率。表2给出了使用SYNC指令探测目标芯片BDM通信频率的过程。
编程调试器是通过拉低至少128个目标芯片时钟周期来请求SYNC指令的,为了能够测量所有的S12系列芯片BDM通信频率,需要设置一个缺省计时参数。当目标芯片总线频率低于1 MHz的时候,Flash的擦除写入操作不能正常运行,因此可以设置目标芯片的最低BDM接口频率为1 MHz。128个周期时长为128÷1 MHz=128μs。在这个延时时间内,可以向S12系列芯片成功请求SYNC指令。下面给出了测试目标芯片通信频率的代码。
阴影部分是JM60在目标芯片发送128个周期低电平的时间所做的操作,花费的指令周期为count=5+1+6×A(寄存器A的计数次数),目标芯片的通信频率就可以通过公式fBDM=128×fbus÷count计算得到。编程调试器只需要根据计算得到的目标芯片的通信频率,调用在编程调试器方编写的针对不同通信频率段的收发子程序,就可以实现和不同型号目标芯片的正确通信。
结 语
编程系统的通信速率和通用性是衡量编程调试器性能的重要指标。在实际应用中,用户需要不断地修改、调试程序,程序的下载操作会频繁发生,因此减少数据的通信时间,提高用户目标代码的写入速度显得尤为重要。本文针对S12新型编程系统的设计思想已经应用于SD-Pro-grammer For S12 V2中,通信速度提高了5倍多,能适应当前S12系列所有的MCU,对于新款MCU可以实现快速支持。文中给出的编程系统中提高通信速度的设计方法对类似于嵌入式系统的应用开发也有着很好的借鉴作用。