KEKEMUYU 发表于 2010-7-14 12:53:53

马老师能介绍一下s51的isp协议吗?

马老师能介绍一下s51的isp协议吗,最今在研究用isp方式烧写s51,已能够删除flash,但在写入时遇到困难,我的思路是按照协议来的:1.写入0x40   2.写入16位地址3.写入数据       暂时没校验,但写进去后单片机没反应。请马老师指导一下。

machao 发表于 2010-7-17 12:31:33

我没有具体做过s51的isp,所以先看了S51手册中有关ISP的协议介绍。下面提几个注意点请参考。

1。你已经能够删除FLASH,说明基本的ISP命令格式下发已经正确了。
2。你写入一个字节的数据后,“单片机没反应”是什么概念?是否指按字节的方式把整个一段程序写到FLASH中,但单片机没有执行?

我建议你设计ISP编程器的话,需要一个现成的并口或ISP编程器帮助。
先仅写入一个字节到FLASH的固定地址上,然后用现成的工具读出该地址的数据,看是否这一个字节是否写入成功。只有在证明一个字节写入成功的基础上,才能进行批量的写入测试。

批量写入过程中需要非常注意的是ISP的时钟宽度以及每个ISP下发命令之间的间隔。在手册中对于ISP有文字说明和Serial Programming Timing、Table 10. Serial Programming Characteristics。其中重要的有:

1。SCK should be no faster than 1/16 of the system clock at XTAL1.
   也就是ISP的时钟不能高于芯片时钟的1/16。如果芯片为33M,ISP的时钟最高为2M。

2。注意Chip Erase Instruction Cycle Time(500ms)和Serial Byte Write Cycle Time(64 tCLCL + 400us)两个参数.
    芯片收到ISP命令后,内部真正实施对FLASH的删除和写操作都需要时间的,你的编程协议中必须留出足够的等待时间,才能进行下发下个操作命令。
    比如,下发了删除命令后,必须等待500MS后,才能下发下一个读或写的命令。而下发字节写命令后,也必须等待64 tCLCL + 400us(tCLCL是SCK的1/4宽度),才能发下一个写命令。

   我估计你的问题可能在第2点的等待时间没有考虑过。

   以上供参考。

KEKEMUYU 发表于 2010-7-18 08:04:02

太精辟了,写flash成功,就是第2点有问题,感谢machao

machao 发表于 2010-7-18 14:48:08

不客气,我就只花了5分钟,看了一下器件手册中关于ISP部分的内容说明。
   
    其实对于任何的器件的FLASH以及EEPROM的写和擦除操作,都需要一定时间的等待,这是基础的概念。如果你有这个概念,就会非常注意时序了。

    此外,串行接口的操作,比如读写SD卡等,都涉及这个问题。许多系统不稳定也是这个问题没有考虑到。
页: [1]
查看完整版本: 马老师能介绍一下s51的isp协议吗?