|
经过几天晚上的努力,现在终于完成了最新的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编程,并且采用轮询方式检测的请给说明一下具体操作方式。
以下是上传的文件(为避免出现有的问驱动问题,我就把计算机上的驱动也一块上传上来):
|
|