搜索
bottom↓
回复: 86

我为开发progisp制作的usb下载编程器,usb可脱机的下载编程器,avr-jtag,avr-stk500.

[复制链接]

出0入0汤圆

发表于 2006-8-28 14:52:13 | 显示全部楼层 |阅读模式
可通过usb升级的usb下载编程器的图片,原理图



点击此处打开armok01127474.pdf

可通过usb升级的可脱及下载的usb下载编程器的图片,原理图



点击此处打开armok01127476.pdf

既可以用作jtag又可用作stk500的电路板与原理图,和stk500程序。



点击此处打开armok01127478.pdf

点击此处下载armok01127479.rar



usb下载编程器在progisp中升级的界面




-----此内容被zhifeng于2006-08-28,15:22:26编辑过

出0入0汤圆

发表于 2006-8-28 15:05:57 | 显示全部楼层
哇,好棒!只是不知道这个用M16做的STK500的监控程序是否和官方的兼容。

应该不兼容吧,得靠zhifeng做软件的技术维护和升级了。

出0入0汤圆

发表于 2006-8-28 15:08:13 | 显示全部楼层
特别是这个可脱机烧写的usb下载编程器很有价值。

zhifeng确实厉害啊!

出0入0汤圆

 楼主| 发表于 2006-8-28 15:17:09 | 显示全部楼层
to:【1楼】 benladn911你说的很对,我只是为了测试progisp支持stk500做的利用jtag的电路。写了个程序,可能有些功能不是太完善,但能验证stk500的协议是正常的,因为在avrstudio中与progisp中的结果是一样的。

   另,利害到谈不上,这里高手多的是
-----此内容被zhifeng于2006-08-28,15:20:45编辑过

出0入0汤圆

发表于 2006-8-28 15:33:17 | 显示全部楼层
可脱机烧写的usb下载编程器zhifeng是否考虑商业化,还是公开制作资料(如HEX文件即可)?

当然软件的开发和维护升级都需要个人精力,一些成本可以考虑回收。

当然如果zhifeng有提供零售邮购的话,我要买个,呵呵

出0入0汤圆

发表于 2006-8-28 15:38:41 | 显示全部楼层
好东西!

出0入0汤圆

发表于 2006-8-28 23:11:25 | 显示全部楼层
好东东

出0入0汤圆

 楼主| 发表于 2006-8-29 13:44:41 | 显示全部楼层
to:【4楼】 benladn911

可脱机烧写的usb下载编程器,运作模式我还没有认真考虑,但也想最好能收回研发成本。

   目前,我还没有更多的eeprom做实验,现在只通过了24c512,24c256,我手边仅有此芯片,容量再小的我也不打算支持,没有多大意义。如果手边有24c1024或24c2048,24c4096很快就可完成此项目了。到时只要通过progisp设置是那种芯片就可以了。

   其实,暂时不支持也问题不大毕竟可以通过usb进行升级呀!

出0入0汤圆

 楼主| 发表于 2006-8-29 14:28:44 | 显示全部楼层
所有的usb软核均采用我自己写的,占用更少的的资源,为了和以前采用usbasp内核的兼容使用了相同的驱动。

   利用此软核实现了可以采用mega48的下载编程器,可通过usb升级的usb下载编程器。

   我也曾想通过修改usbasp来实现这些功能,但都未能实现,移植到mega48的usbasp页写不能成功。想实现通过usb升级,也没有成功,不知是何原因?后来只能放弃此捷径了。

出0入0汤圆

发表于 2006-8-29 17:42:11 | 显示全部楼层
支持zhifeng,望zhifeng早日完善USBASP,特别是使用说明文档。



希望zhifeng早日提供usb可脱机的下载编程器正式版的供应。

出0入0汤圆

 楼主| 发表于 2006-8-29 17:54:42 | 显示全部楼层
to:【9楼】 benladn911

目前,usb可脱机的下载编程器可以实现60K的flash,4K的eeprom的脱机下载,因为24c512仅有64k的容量。如果是24c1024可以做到120kflash,8keeprom.24c2048就更好了,但大容量的芯片不好买,价格也较贵。

   对于usbasp的支持我会整理个文档出来,方便大家。

出0入0汤圆

发表于 2006-8-30 13:52:43 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2006-8-30 22:37:58 | 显示全部楼层
支持

出0入0汤圆

发表于 2006-8-31 00:19:07 | 显示全部楼层
支持啊,希望搂主赶紧能完善这个好东西,我也想买一个,现在急需用呢,还想买个fpga用的usb-blaster,但是价格实在吓人,要450块,买不起啊!T_T,有没有那位大虾知道有便宜的usb-blaster可以买的?

出0入0汤圆

 楼主| 发表于 2006-9-1 09:51:02 | 显示全部楼层



-----此内容被zhifeng于2006-09-01,09:53:06编辑过

出0入0汤圆

发表于 2006-9-4 10:20:42 | 显示全部楼层
什么时候可以提供usb可脱机的下载编程器?

出0入0汤圆

 楼主| 发表于 2006-9-7 09:02:41 | 显示全部楼层
to:【15楼】 benladn911,现在可以工作了,这两天比较忙,没来急搞。我想将功能完善一些方能推出。



给个建议,usb可脱机的下载编程器需不需要读出功能?因为设计时只设计了一个键。

此键的功能已经做了两个功能。

   1,压下此键的同时接入电脑的usb口进入usb升级功能。

   2,正常启动时压下此键实现脱机下载功能。

   3,正常时长压此键实现什么功能?还是不做功能,请大家参谋一下。我是想实现脱机读出功能,不知如何?

   另,脱机下载时编程编程是否选择加密,写熔丝由progisp的选项决定。

出0入0汤圆

发表于 2006-9-7 09:13:02 | 显示全部楼层
学习!

出0入0汤圆

发表于 2006-9-7 10:53:51 | 显示全部楼层
to:【16楼】 zhifeng

读出功能是指读出AT24C512内的程序并传到progisp软件上吗?如果是的话,可以增加此功能。

还是指读出外部芯片的程序再保存到AT24C512内吗?如果是,那感觉不是很必要,因为脱机烧写外部芯片肯定得加密,也就无所谓把外部芯片的程序读出了。



不知道我有没有理解对zhifeng的意思,还请指正。



脱机下载时编程编程是否选择加密,写熔丝应该由progisp的选项决定,把相关的设置和程序一并写入到AT24C512中,实现脱机烧写的完整性。




-----此内容被benladn911于2006-09-07,10:55:36编辑过

出0入0汤圆

 楼主| 发表于 2006-9-7 14:58:23 | 显示全部楼层
这些功能都实现了,目前,有个关键的问题是写入24c512的速度较慢,8k需要30秒。如果修改通讯协议的话可以解决此问题,但修改后将无法支持usbasp,除非修改usbasp才能支持。

出0入0汤圆

发表于 2006-9-7 15:26:46 | 显示全部楼层
脱机的话写入24c512也只要一次而已,这个速度不要紧。



关键是脱机下载芯片时要从24C512中读出程序再写到芯片,如果读出的速度提不上去,那这样下载芯片的速度瓶颈问题就出现了。



可能要考虑用其他速度快的存储器了,不知道用铁电存储器的速度如何?



题外话:知道zhifeng最近很忙,想看到你都难,呵呵,支持你!

出0入0汤圆

发表于 2006-9-7 17:43:11 | 显示全部楼层
能否给个最新下载试试脱机功能 ,谢谢 !

出0入0汤圆

 楼主| 发表于 2006-9-7 20:43:52 | 显示全部楼层
to:【20楼】 benladn911

脱机写入速度还不错,比并口的下载线快,8k不超过5秒,进一步优化可能更快。

铁电存储器成本太高,其实sd卡是很不错的,有时间搞个支持sd卡的。

to:【21楼】 caoqing ,脱机下载编程器,不光是软件还需要硬件的支持。

谢谢!

出0入0汤圆

发表于 2006-9-7 21:09:10 | 显示全部楼层
加密倒是没必要,监控ISP口也可以读出数据来。建议读母片。

出0入0汤圆

发表于 2006-9-7 21:10:13 | 显示全部楼层
突然想起:24C512 外挂也不错啊!hehe

出0入0汤圆

发表于 2006-9-8 08:39:59 | 显示全部楼层
to:【22楼】 zhifeng

脱机写入速度现在可以达到8k不超过5秒已经很棒了!



至于做支持SD卡的,感觉没什么必要,毕竟脱机时的程序量最大MEGA128也才128K的程序,用SD卡感觉有些大才小用,或许对一些用户来说有用。



我觉得现在zhifeng应该把现在的脱机下载做稳定和完善,支持SD卡的可以以后再开发。





To:【23楼】 sflfw

脱机下载芯片的时候同时对芯片进行写熔丝和加密是必要,不然脱机编程就没意义了。

zhifeng的脱机下载器就用AT24C512做存储的。

出0入0汤圆

 楼主| 发表于 2006-9-8 11:37:15 | 显示全部楼层
eeprom的速度没有sd的快,这是后话暂且不提。

我的想法并不是只支持24c512如果是这样的话就简单多了。我的想法是支持24c256-4096.

使用不同的芯片只需修改容量的大小就可以了。可以随意分配flash与eeprom编程数据占用24cxxx的空间位置,也就是说你可随意将24cxxx的空间划分给flash多少,eeprom多少。甚至只划分给flash。
-----此内容被zhifeng于2006-09-08,11:38:56编辑过

出0入0汤圆

发表于 2006-9-8 12:38:35 | 显示全部楼层
明白zhifeng的意思了,zhifeng的设计思路很棒,等到你把功能实现了,我相信着将是目前功能和速度最完美的脱机编程器了,虽然我不了解TLG、SL等的脱机编程器的速度和稳定性如何。

出0入0汤圆

发表于 2006-9-8 21:59:00 | 显示全部楼层
好主意,顶!!!

出0入0汤圆

 楼主| 发表于 2006-9-11 10:05:20 | 显示全部楼层
有谁知道哪儿有24c2048与24c4096的手册下载?好像很难找到。

出0入0汤圆

发表于 2006-9-11 10:33:01 | 显示全部楼层
zhifeng,你那边能买到24C2048吗,手册很难找,连最大的器件手册网站:http://www.alldatasheet.com都找不到~~~~~~



到ATMEL网站看了下,也没有这个型号的。



在ATMEL上倒是看到SPI接口的AT25P1024 ,不知道容量可否满足你的要求。

出0入0汤圆

 楼主| 发表于 2006-9-11 10:46:25 | 显示全部楼层
24C2048,24c4096,大部分用到手机卡类的卡上,我也没有找到哪儿有的卖。看样子脱机下载只能做到支持最大容量为128k了。

出0入0汤圆

发表于 2006-9-11 10:52:43 | 显示全部楼层
zhifeng是否考虑用串行的FLASH,如AT25F1024A ,1M的容量,但不清楚价格如何。



那些专业的编程器厂家,估计也是用大容量的串行FLASH做脱机存储的。

出0入0汤圆

 楼主| 发表于 2006-9-11 11:19:47 | 显示全部楼层
AT25F1024A,128k与24c1024一样大。工作电压最大4.2v需做电平转换。

其实,128k应该足够了,真正使用超过128k容量的avr芯片不如采用arm了,arm的性价比高多了。我个人认为,atmel的芯片中最有优势的就是m8,m16,m48,mega128,(我最近帮人开发的几个产品就只采用此几种芯片,其他的高端的采用arm,低端的一些用低价的51)其他的性价比不是太好。这样来说,mega128,128k你的程序如果不需要初始化eeprom就可以有128k的脱机容量,如果需要初始化eeprom你可以划出4k用于eeprom的脱机下载数据,余下124k用于flash.

出0入0汤圆

发表于 2006-9-11 11:46:12 | 显示全部楼层
恩,确实是,AVR里最具性价比的就是M8、M48、M16,如果程序超过128K的系统那就直接用ARM了,关于芯片的应用永远是个争不完的问题。(我觉得M48很不错,我最近正在用)



这样看来就按照实际的需求来做吧,就用24C1024好了,一般的应用是足够了。



那就期待zhifeng早日推出这个脱机版的USBASP了,期待中...

出0入0汤圆

 楼主| 发表于 2006-9-12 11:03:50 | 显示全部楼层
usb可脱机的下载编程器终于完成了,目前支持64K以内的脱机数据,128k没有测试不敢保证。

     特色:

         1,可提供6M的时钟信号输出

         2,可脱机编程,烧写熔丝,写加密位

         3,速度较快,8k脱机下载少于4秒。

         4,一键操作一步完成。

         5,progisp绿色软件,无需安装,占用资源少

     现在,进入最后测试阶段。

         



     另,我将此下载编程器命名为USBProg-C,它不与usbasp兼容

     可通过usb升级的usb下载编程器命名为USBProg-B,不与usbasp兼容

     usb下载编程器命名为USBProg-A,与usbasp兼容

      




-----此内容被zhifeng于2006-09-12,11:05:53编辑过

出0入0汤圆

 楼主| 发表于 2006-9-12 11:10:26 | 显示全部楼层
我将为progisp写个比较详尽的说明书,并正式推出1.6版。

出0入0汤圆

发表于 2006-9-12 12:03:06 | 显示全部楼层
期待详细的使用说明文档,同时等你正式推出硬件版USBProg-C



zhifeng,我是跃跃欲试啊

出0入0汤圆

发表于 2006-9-12 12:32:00 | 显示全部楼层
期待,是免费提供吗?

出0入0汤圆

发表于 2006-9-12 15:23:48 | 显示全部楼层
to 楼主

我想说你为什么执著的看好EEP呢?

EEP1024还算好购买,在大了就很难购买了;

作产品还是要选货源好的东西

另外EEP速度是无法提升的,虽然说可以不在意PC到编程器的速度

但是EEP还是太慢了;

你可以选择FLASH,SST25VF010之类的,速度和容量都没得说

我估计你是SPI口占用了,那么尼可以选择用UART口呀,我没有看你图纸

莫非这个口也占用了?

FLASH 10W次的寿命足够离线编程器使用了

价格也超级便宜不足10元

另外你也可以考虑烧录AVR以外的其它芯片也是很实用的

你的产品出来我准备弄一个用

出0入0汤圆

 楼主| 发表于 2006-9-12 21:12:57 | 显示全部楼层
to:【40楼】 appleboy, 在做它之前我考虑过,24系列,25系列,45系列,K9f系列,只有24系列的电压范围宽。可以直接在5v下工作,其他均是工作在3.3v的,这样就要采用电平转换电路上就要添加电平转换芯片,另外最关键的是无法实现低压工作的与高压工作的目标板都可采用它去编程。(5v工作时要将电压降压到3.3v为它们提供电源,如果目标板是3.3v在经过电压转换电路,这样的话,可能它们就无法正常工作了。) 其实,我也不想采用24系列的存储器但也没有太好的选择。我的想法是最好采用sd卡容量大,也好买。还可以做其他用途,一举多得。如果采用sd卡可以实现一个低速的u盘。

    UART口没有被占用但他们也被引出来了,用途是可以做个简单的usb转串口。

    烧录AVR以外的其它芯片,是个好建议,目前的电路可以支持烧录24Cxxx,93cxxx之类的芯片,也就是说不需高压支持的采用串行编程的芯片。电路上引出了7个io口。

    谢谢各位的支持。

出0入0汤圆

发表于 2006-9-13 14:02:56 | 显示全部楼层
楼主你好:

    请问libusb0.dll库中的函数使用说明你有吗?就是这个库中有那些函数可以被使用,这个不知道,上位机没法写程序啊.

   希望楼主给一份,谢谢.yangrf0422@sohu.com

出0入0汤圆

 楼主| 发表于 2006-9-13 14:51:33 | 显示全部楼层
#ifndef __USB_H__

#define __USB_H__



#include <stdlib.h>



/*

* 'interface' is defined somewhere in the Windows header files. This macro

* is deleted here to avoid conflicts and compile errors.

*/



#ifdef interface

#undef interface

#endif



/*

* PATH_MAX from limits.h can't be used on Windows if the dll and

* import libraries are build/used by different compilers

*/



#define LIBUSB_PATH_MAX 512





/*

* USB spec information

*

* This is all stuff grabbed from various USB specs and is pretty much

* not subject to change

*/



/*

* Device and/or Interface Class codes

*/

#define USB_CLASS_PER_INTERFACE                0        /* for DeviceClass */

#define USB_CLASS_AUDIO                              1

#define USB_CLASS_COMM                              2

#define USB_CLASS_HID                                3

#define USB_CLASS_PRINTER                      7

#define USB_CLASS_MASS_STORAGE                8

#define USB_CLASS_HUB                                9

#define USB_CLASS_DATA                              10

#define USB_CLASS_VENDOR_SPEC                  0xff



/*

* Descriptor types

*/

#define USB_DT_DEVICE                        0x01

#define USB_DT_CONFIG                        0x02

#define USB_DT_STRING                        0x03

#define USB_DT_INTERFACE        0x04

#define USB_DT_ENDPOINT                0x05



#define USB_DT_HID                        0x21

#define USB_DT_REPORT                0x22

#define USB_DT_PHYSICAL        0x23

#define USB_DT_HUB                        0x29



/*

* Descriptor sizes per descriptor type

*/

#define USB_DT_DEVICE_SIZE                18

#define USB_DT_CONFIG_SIZE                9

#define USB_DT_INTERFACE_SIZE                9

#define USB_DT_ENDPOINT_SIZE                7

#define USB_DT_ENDPOINT_AUDIO_SIZE        9        /* Audio extension */

#define USB_DT_HUB_NONVAR_SIZE                7





/* ensure byte-packed structures */

#include <pshpack1.h>





/* All standard descriptors have these 2 fields in common */

struct usb_descriptor_header {

  unsigned char  bLength;

  unsigned char  bDescriptorType;

};



/* String descriptor */

struct usb_string_descriptor {

  unsigned char  bLength;

  unsigned char  bDescriptorType;

  unsigned short wData[1];

};



/* HID descriptor */

struct usb_hid_descriptor {

  unsigned char  bLength;

  unsigned char  bDescriptorType;

  unsigned short bcdHID;

  unsigned char  bCountryCode;

  unsigned char  bNumDescriptors;

};



/* Endpoint descriptor */

#define USB_MAXENDPOINTS        32

struct usb_endpoint_descriptor {

  unsigned char  bLength;

  unsigned char  bDescriptorType;

  unsigned char  bEndpointAddress;

  unsigned char  bmAttributes;

  unsigned short wMaxPacketSize;

  unsigned char  bInterval;

  unsigned char  bRefresh;

  unsigned char  bSynchAddress;



  unsigned char *extra;        /* Extra descriptors */

  int extralen;

};



#define USB_ENDPOINT_ADDRESS_MASK        0x0f    /* in bEndpointAddress */

#define USB_ENDPOINT_DIR_MASK                  0x80



#define USB_ENDPOINT_TYPE_MASK                0x03    /* in bmAttributes */

#define USB_ENDPOINT_TYPE_CONTROL            0

#define USB_ENDPOINT_TYPE_ISOCHRONOUS        1

#define USB_ENDPOINT_TYPE_BULK                    2

#define USB_ENDPOINT_TYPE_INTERRUPT          3



/* Interface descriptor */

#define USB_MAXINTERFACES        32

struct usb_interface_descriptor {

  unsigned char  bLength;

  unsigned char  bDescriptorType;

  unsigned char  bInterfaceNumber;

  unsigned char  bAlternateSetting;

  unsigned char  bNumEndpoints;

  unsigned char  bInterfaceClass;

  unsigned char  bInterfaceSubClass;

  unsigned char  bInterfaceProtocol;

  unsigned char  iInterface;



  struct usb_endpoint_descriptor *endpoint;



  unsigned char *extra;        /* Extra descriptors */

  int extralen;

};



#define USB_MAXALTSETTING        128        /* Hard limit */



struct usb_interface {

  struct usb_interface_descriptor *altsetting;



  int num_altsetting;

};



/* Configuration descriptor information.. */

#define USB_MAXCONFIG                8

struct usb_config_descriptor {

  unsigned char  bLength;

  unsigned char  bDescriptorType;

  unsigned short wTotalLength;

  unsigned char  bNumInterfaces;

  unsigned char  bConfigurationValue;

  unsigned char  iConfiguration;

  unsigned char  bmAttributes;

  unsigned char  MaxPower;



  struct usb_interface *interface;



  unsigned char *extra;        /* Extra descriptors */

  int extralen;

};



/* Device descriptor */

struct usb_device_descriptor {

  unsigned char  bLength;

  unsigned char  bDescriptorType;

  unsigned short bcdUSB;

  unsigned char  bDeviceClass;

  unsigned char  bDeviceSubClass;

  unsigned char  bDeviceProtocol;

  unsigned char  bMaxPacketSize0;

  unsigned short idVendor;

  unsigned short idProduct;

  unsigned short bcdDevice;

  unsigned char  iManufacturer;

  unsigned char  iProduct;

  unsigned char  iSerialNumber;

  unsigned char  bNumConfigurations;

};



struct usb_ctrl_setup {

  unsigned char  bRequestType;

  unsigned char  bRequest;

  unsigned short wValue;

  unsigned short wIndex;

  unsigned short wLength;

};



/*

* Standard requests

*/

#define USB_REQ_GET_STATUS                    0x00

#define USB_REQ_CLEAR_FEATURE            0x01

/* 0x02 is reserved */

#define USB_REQ_SET_FEATURE                    0x03

/* 0x04 is reserved */

#define USB_REQ_SET_ADDRESS                    0x05

#define USB_REQ_GET_DESCRIPTOR                0x06

#define USB_REQ_SET_DESCRIPTOR                0x07

#define USB_REQ_GET_CONFIGURATION        0x08

#define USB_REQ_SET_CONFIGURATION        0x09

#define USB_REQ_GET_INTERFACE                  0x0A

#define USB_REQ_SET_INTERFACE                  0x0B

#define USB_REQ_SYNCH_FRAME                    0x0C



#define USB_TYPE_STANDARD                (0x00 << 5)

#define USB_TYPE_CLASS                        (0x01 << 5)

#define USB_TYPE_VENDOR                        (0x02 << 5)

#define USB_TYPE_RESERVED                (0x03 << 5)



#define USB_RECIP_DEVICE                0x00

#define USB_RECIP_INTERFACE        0x01

#define USB_RECIP_ENDPOINT        0x02

#define USB_RECIP_OTHER                        0x03



/*

* Various libusb API related stuff

*/



#define USB_ENDPOINT_IN                        0x80

#define USB_ENDPOINT_OUT                0x00



/* Error codes */

#define USB_ERROR_BEGIN                        500000



/*

* This is supposed to look weird. This file is generated from autoconf

* and I didn't want to make this too complicated.

*/

#define USB_LE16_TO_CPU(x)



/* Data types */

/* struct usb_device; */

/* struct usb_bus; */



struct usb_device {

  struct usb_device *next, *prev;



  char filename[LIBUSB_PATH_MAX];



  struct usb_bus *bus;



  struct usb_device_descriptor descriptor;

  struct usb_config_descriptor *config;



  void *dev;                /* Darwin support */



  unsigned char devnum;



  unsigned char num_children;

  struct usb_device **children;

};



struct usb_bus {

  struct usb_bus *next, *prev;



  char dirname[LIBUSB_PATH_MAX];



  struct usb_device *devices;

  unsigned long location;



  struct usb_device *root_dev;

};



/* Version information, Windows specific */

struct usb_version {

  struct {

    int major;

    int minor;

    int micro;

    int nano;

  } dll;

  struct {

    int major;

    int minor;

    int micro;

    int nano;

  } driver;

};





struct usb_dev_handle;

typedef struct usb_dev_handle usb_dev_handle;



/* Variables */

extern struct usb_bus *usb_busses;





#include <poppack.h>





#ifdef __cplusplus

extern "C" {

#endif



  /* Function prototypes */



  /* usb.c */

  usb_dev_handle *usb_open(struct usb_device *dev);

  int usb_close(usb_dev_handle *dev);

  int usb_get_string(usb_dev_handle *dev, int index, int langid, char *buf,

                     size_t buflen);

  int usb_get_string_simple(usb_dev_handle *dev, int index, char *buf,

                            size_t buflen);



  /* descriptors.c */

  int usb_get_descriptor_by_endpoint(usb_dev_handle *udev, int ep,

                                     unsigned char type, unsigned char index,

                                     void *buf, int size);

  int usb_get_descriptor(usb_dev_handle *udev, unsigned char type,

                         unsigned char index, void *buf, int size);



  /* <arch>.c */

  int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size,

                     int timeout);

  int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size,

                    int timeout);

  int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size,

                          int timeout);

  int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size,

                         int timeout);

  int usb_control_msg(usb_dev_handle *dev, int requesttype, int request,

                      int value, int index, char *bytes, int size,

                      int timeout);

  int usb_set_configuration(usb_dev_handle *dev, int configuration);

  int usb_claim_interface(usb_dev_handle *dev, int interface);

  int usb_release_interface(usb_dev_handle *dev, int interface);

  int usb_set_altinterface(usb_dev_handle *dev, int alternate);

  int usb_resetep(usb_dev_handle *dev, unsigned int ep);

  int usb_clear_halt(usb_dev_handle *dev, unsigned int ep);

  int usb_reset(usb_dev_handle *dev);



  char *usb_strerror(void);



  void usb_init(void);

  void usb_set_debug(int level);

  int usb_find_busses(void);

  int usb_find_devices(void);

  struct usb_device *usb_device(usb_dev_handle *dev);

  struct usb_bus *usb_get_busses(void);





  /* Windows specific functions */



  #define LIBUSB_HAS_INSTALL_SERVICE_NP 1

  int usb_install_service_np(void);



  #define LIBUSB_HAS_UNINSTALL_SERVICE_NP 1

  int usb_uninstall_service_np(void);



  #define LIBUSB_HAS_INSTALL_DRIVER_NP 1

  int usb_install_driver_np(const char *inf_file);

  

  const struct usb_version *usb_get_version(void);



  int usb_isochronous_setup_async(usb_dev_handle *dev, void **context,

                                  unsigned char ep, int pktsize);

  int usb_bulk_setup_async(usb_dev_handle *dev, void **context,

                           unsigned char ep);

  int usb_interrupt_setup_async(usb_dev_handle *dev, void **context,

                                unsigned char ep);



  int usb_submit_async(void *context, char *bytes, int size);

  int usb_reap_async(void *context, int timeout);

  int usb_free_async(void **context);





#ifdef __cplusplus

}

#endif



#endif /* __USB_H__ */

出0入0汤圆

 楼主| 发表于 2006-9-13 14:59:20 | 显示全部楼层
pc下载脱机数据的速度现在挺快了。8k数据写入24c512约3秒,读出约1秒.

出0入0汤圆

 楼主| 发表于 2006-9-13 15:03:42 | 显示全部楼层
目前,脱机的下载的速度大于非脱机的速度。实现了,所有非脱机的功能(没有读出功能)

出0入0汤圆

发表于 2006-9-13 17:23:21 | 显示全部楼层
如果是因为FLASH的电源问题那加个稳压管就可以了,估计不是这个问题

你想做的是适应目标的宽电源

其实很难,因为差不多只有AVR的电源才这么宽,其他芯片都不宽

你用的是USB口电源,AVR直接用USB的5V,FLASH用稳压管后的3.3V

AVR能认3.3V的高电瓶,TO FLASH的I/O做稳压处理就可以了,因为SPI的4跟数据都是单向的

比直接连接到是复杂了很多,不过应该能够忍受这几个元件的复杂程度,

SD卡到是也不错,但是低速U盘没实际有什么用途

建议往离线多功能下载工具的方向发展,如果UART也能空出来可以考虑用做下载STC,SST等51,ARM7系列,PIC系列,至于24系列和93系列意义不大,当然有了更好

我觉得这是该工具有前途有市场的地方!

我做产品身有感受

售后工程师更新代码很有必要使用该工具!

意见中肯,是否采纳您自行斟酌^_^

比较敬佩你在这方面的学识

出0入0汤圆

 楼主| 发表于 2006-9-13 21:09:44 | 显示全部楼层
to:【46楼】 appleboy你的意见非常好,我的做法是为了适应目标的宽电源,因为编程器要从目标取电。24系列工作电压2.7-5.5v和mega8的工作电压一样。

    目前来说,很难再扩充编程其他的芯片,芯片剩余的空间不多了,如果想扩充其他芯片就需要更换大容量的芯片,下载STC,SST等51,ARM7系列,PIC系列可以在以后的版本中考虑,我的计划再做个可以并行编程的可以提供高压(这是后话,暂时不提,不知有没有更多的时间,做此软件只能抽些空余时间来完成)。

    谢谢你的夸奖!!!

出0入0汤圆

发表于 2006-9-15 12:44:02 | 显示全部楼层
呵呵,总算在zhifeng的网站上看到正式供应这几款下载器了,恭喜啊!

出0入0汤圆

发表于 2006-9-15 12:46:53 | 显示全部楼层
不过Progisp软件不能下载~~~~~~

出0入0汤圆

发表于 2006-9-15 14:20:26 | 显示全部楼层
软件不能下载了???

出0入0汤圆

 楼主| 发表于 2006-9-15 21:22:55 | 显示全部楼层
网站在更新,下载可以下载了。

progisp的简要说明见

http://www.zhifengsoft.com/progisp.htm

脱机编程器在proisp中的操作



脱机下载工作时工作指示灯长亮,如果编程出错,闪烁。






-----此内容被zhifeng于2006-09-15,21:27:05编辑过

出0入0汤圆

 楼主| 发表于 2006-9-15 21:40:18 | 显示全部楼层
PROGISP(Ver1.6 ) 使用先前版本的建议更新为此版本,此版本修正了flash编程校验的bug,支持自定义的功能更强。先前的版本将不再进行更正。



最新特性

支持所有的AVR芯片的编程,支持AT89S51,AT89S52

支持自定义并口下载编程器(已配置编程器电路见下面的图纸)

支持自定义串口的下载编程器(已配置的编程器SI-PROG见下面的图纸)

支持STK500编程器(本工作室开发的STK500见下面的图纸)

支持USBASP编程器

支持并口的并行编程器

支持USBProg编程器(本工作室开发,见下面的图纸)

支持自定义编程芯片

支持自定义编程熔丝信息提示信息

支持USBProg的在线升级(通过USB口)

支持USBProg-C实现脱机下载

支持串口调试的超级终端

绿色软件,无需安装,占用资源少

支持自定义汉化信息提示

出0入0汤圆

 楼主| 发表于 2006-9-15 22:52:02 | 显示全部楼层
特别感谢dssz 提供了熔丝汉化的信息内容!感谢每一位提出建议,注册支持我的朋友。感谢站长提供的好的交流平台!

出0入0汤圆

发表于 2006-9-16 00:45:08 | 显示全部楼层
一段时间没有上来,发现智峰软件功能越来越强了,可喜可贺!!!



出0入0汤圆

发表于 2006-9-16 11:06:14 | 显示全部楼层
能不能在上图的端口设置中增加允许取反相的选项?

出0入0汤圆

 楼主| 发表于 2006-9-16 21:58:10 | 显示全部楼层
to;【54楼】 dssz

vcc与gnd栏设置为一个字节的数,每一个bit对应并口数据口的每一位。bit0->D0,bit1->D1...bit7->D7.

vcc设置编程开始时并口的状态

gnd设置编程结束时并口的状态

例如:vcc=0x11,gnd=0x01

开始工作设置

1,并口D0=1,D4=1

2,编程,相应的sck,mosi,reset,根据逻辑设置相应的口线的高低电平

3,结束,并口D0=1,D4=1

这样的话就可以设置选通信号,让并口输出vcc.

   注意:vcc,gnd的设置不能与sck,mosi,reset等信号对应的端口线冲突。

to:【55楼】 GandF ,可以做的,暂时先这样吧,毕竟发展方向是usb,还是在usb上多做功夫较好。

出0入0汤圆

发表于 2006-9-16 22:14:27 | 显示全部楼层
vcc=0x11输入的时候是按什么格式呢,是输入0x11,11h,还是输入10进制的17呢?



gnd设置编程结束时并口的状态,这个时候能否改变相应的sck,mosi,reset相应的口线的高低电平呢,我想在编程结束的时候所有口线都为低电平,这样能否做到呢?

出0入0汤圆

 楼主| 发表于 2006-9-16 22:40:43 | 显示全部楼层
11h不合法,其他两种都可以

gnd设置编程结束时并口的状态,这个时候能否改变相应的sck,mosi,reset相应的口线的高低电平呢,我想在编程结束的时候所有口线都为低电平,这样能否做到呢?

  应该可以,我没有测试过这种情况,不知具体如何?

出0入0汤圆

发表于 2006-9-16 22:57:56 | 显示全部楼层
能否为MY PROGRAM中增加时钟信号选项呢,这样在下载一些旧的AVR芯片(例如AT90S2313)的时候就不需要外接晶振了。

出0入0汤圆

 楼主| 发表于 2006-9-16 23:19:13 | 显示全部楼层
增加时钟比较麻烦,整个驱动都要重新编写,还是不加的好。主要方向还是usb比较好,速度快,稳定可靠。USBProg-C就可以输出时钟。现在主流的笔记本还有支持串并口的?

出0入0汤圆

发表于 2006-9-17 09:57:59 | 显示全部楼层
是的,绝对赞同USB是主流。

出0入0汤圆

 楼主| 发表于 2006-9-21 12:13:31 | 显示全部楼层
以后,准备将USB的进行扩充,支持一些其它类型的芯片。

出0入0汤圆

发表于 2006-11-12 14:30:05 | 显示全部楼层
软件在哪里?

出0入0汤圆

发表于 2006-11-14 15:43:38 | 显示全部楼层
请问楼主:为什么读内部8M校准字与4M一样啊,读内部8M校准字正确吗?麻烦搂主回答一下。

出0入0汤圆

 楼主| 发表于 2006-11-14 15:54:56 | 显示全部楼层
有的芯片校正字是一样的,要不你换块芯片试试可能就不一样了。

to:【63楼】 slamkk,到网站下载呀!
-----此内容被zhifeng于2006-11-14,15:56:58编辑过

出0入0汤圆

发表于 2007-6-26 18:56:16 | 显示全部楼层
好东西啊!

顶一下。

出0入0汤圆

发表于 2007-9-24 19:08:32 | 显示全部楼层
太帅了,支持~~!

出0入0汤圆

发表于 2007-9-24 20:20:53 | 显示全部楼层
很有实力啊,顶!

出0入0汤圆

发表于 2007-11-14 11:20:22 | 显示全部楼层
很无私啊

出0入0汤圆

发表于 2007-11-14 12:01:28 | 显示全部楼层
up

出0入0汤圆

发表于 2007-11-14 12:17:05 | 显示全部楼层
牛啊

出0入0汤圆

发表于 2007-11-24 08:07:55 | 显示全部楼层
刚换了笔记本,准备一个~~~

出0入0汤圆

发表于 2008-2-28 17:55:29 | 显示全部楼层
不错,谢谢

出0入0汤圆

发表于 2008-4-15 20:37:23 | 显示全部楼层
先看看别人的讨论!

出0入0汤圆

发表于 2008-5-22 19:30:53 | 显示全部楼层
请问使用PROGISP1.67通过USB读写24CXX系列存储器,硬件怎样连接?

出0入0汤圆

发表于 2008-5-29 08:56:20 | 显示全部楼层
zhifeng 的技术就是好啊,呵呵,我用起来顺手,真是太感谢了!

出0入0汤圆

发表于 2008-12-22 21:10:34 | 显示全部楼层
楼主,能提供网友自制吗?

出0入0汤圆

发表于 2008-12-23 20:08:38 | 显示全部楼层
好东西,想做个试试

出0入0汤圆

 楼主| 发表于 2008-12-23 20:28:40 | 显示全部楼层
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=1904971&bbs_page_no=1&search_mode=1&search_text=progisp1.68&bbs_id=9999



这地方有自制资料

出0入0汤圆

发表于 2009-2-2 13:10:26 | 显示全部楼层
记号

出0入0汤圆

发表于 2009-12-5 21:35:01 | 显示全部楼层
好啊!

出0入0汤圆

发表于 2009-12-7 19:45:38 | 显示全部楼层
智峰作品,值得信赖

出0入0汤圆

发表于 2010-2-7 11:00:18 | 显示全部楼层
支持智峰

出0入0汤圆

发表于 2010-8-14 15:59:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-3 14:21:08 | 显示全部楼层
顶一个

出0入0汤圆

发表于 2014-5-24 14:58:13 | 显示全部楼层
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 09:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表