|
经过几天晚上的努力,现在终于完成了最新的USBASP的固件升级。现在最新版的固件与我原来发布的一样支持速度自动调整功能。也就是原来对于AVR芯片操作的一切优点保留,现在支持S51系列芯片(我用的是S52来测试)。对于S52一样可以自动调整速度,不过在测试过程中发现读取类速度可以达到183KHz(最大我用过375KHz),可惜只要是对FLASH进行写入就会失败!最终发现只能在23KHz左右才可以稳定,所以现在我将51的最高速度限制为12KHz,也就是可以自动向下降速,但上限速度被限制住了。但是在程序里面我一样增加了自动判断数据进行加速的代码,所以实际速度一样非常快。另外程序支持页写入模式,也支持页读取模式。我用的是智峰的progisp1.66版,在此表示感谢。里面的数据不用进行任何修改(最好将页大小改为256,否则采用字节写入方式)。但在测试过程中发现对S52操作的时候写的时候可以按照配置数据来,但在读取的时候,因为AVR没有页读取模式,所以发送的命令就不分页和字节读取的区别,在这个代码里面我为了加速,所以在读取的时候强制采用页读取的模式。这样明显能够看出来速度的变化。实际测试速度,基本在页写入模式是每毫秒一个字节。这个速度是足够了。大致算了一下,主要时间在ISP的时间上了,可惜我不能再提高速度了。
在这里提醒注意几个问题,这个代码因为里面有自动调整速度的功能,所以采用的芯片判别方法是通过复位来判断的,对于51类芯片正常工作的时候,复位是低电平,所以代码就自动采用51代码来工作,所以要使用此代码先保证单片机能够在最小系统下正常工作!
另外在此请问大家几个问题,就是在写入后如果不采用延时等待的方法,我如何检测写入完成?请详细点说明。另外对于数据手册上面的数据我发现可能不对,因为我在写入完成后延时1.28毫秒如果SPI速度过快一样会失败!只要降低SPI速度就可以了!我想要做就做好,请各位帮忙看一下。或者以前有用其他方法做过对51进行SPI编程,并且采用轮询方式检测的请给说明一下具体操作方式。
以下是上传的文件(为避免出现有的问驱动问题,我就把计算机上的驱动也一块上传上来):
点击此处下载上位机驱动.rar(文件大小:28K)
点击此处下载固件程序.rar(文件大小:8K)
现在我用的不是公版电路来实际测试,我用的是自己设计的电路,板上芯片用的是M16,并且引脚也不同。这个应用于公版电路,芯片用M8的是我修改过的,应该没有问题。
补充上电路图:
用于公版电路,无电路图,有两个代码文件,分别是工作于页写入模式和强制字节写入模式。
点击此处下载ourdev_207372.rar(文件大小:5K)
用于自己做的一个用M16的电路板,只使用其中的SPI编程功能,同样包括了两个代码文件和电路图文件。
点击此处下载ourdev_207373.rar(文件大小:367K)
有朋友问用M48的图纸,在此一块放出来,里面同时有写入的固件程序,不过因为容量已经不足了,所以此固件是以前的老版本,不支持现在的S51系列芯片。
点击此处下载ourdev_207374.rar(文件大小:62K)
同时在此说明一下,因为S51系列的页大小正好是256字节,这样在上位机给编程器传送命令的时候发送页大小的低位字节就是相同的了,都是0,而传送命令中没在考虑到页会超过一个字节的情况,所以无法分出到底是不是按页写方式,所以我就要采用两种方式来处理了,按字节写入的代码读取速度非常快,其实写入速度也足够了,各位自己测试一下就知道了。页写入速度更快,只是因为不知道为什么页写入模式在ISP速度过快的时候就不能成功,所以我强制降速了,就这样,有的时候页写还会不成功。所以各位凭自己的爱好来选择吧。不过对于S51内部读取的时候我全部采用了页读取模式,这样速度就能快好多了。
其实有的时候写入不成功不一定是编程时序问题,在这里说明我调试过程中就碰到的一个情况,那就是目标板上的外部设备造成了通讯数据错误,但同样是读取标志、读取其他的都正常,就在写的时候不成功,最后发现自己电路上那三条数据线上有保护电阻,呵呵。可能是S51要求驱动能力更大吧,最后把电阻改小到100欧姆就能够正常操作了。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|