找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 57965|回复: 115

开发基于FT2232D的USB接口高速SPI FLASH编程器,8MByte(64Mbit)读取只需30秒

  [复制链接]
发表于 2012-9-12 19:11 | 显示全部楼层 |阅读模式
本帖最后由 HJJNOW 于 2014-10-9 17:21 编辑

采用FT2232D做编程器的优点是

1 硬件板子没有程序,只需要PC程序。

2 升级功能只需更新PC程序即可。

3 支持在现有JTAG板子(采用FT2232芯片)上DIY,接出CS/ SCK/ MISO/MOSI/GND/VCC3V 即可,SPI FLASH SO8和SO16仅仅脚位不一样而已
  不影响板子本身的功能,因为做JTAG时是运行JTAG的PC程序,做SPI编程器是运行这个PC程序

4 MPSSE引擎还能开发 IIC ,并行编程 等功能。

5 FT2232本身就能做成 单USB to 双UART( or JTAG+UART or SPI编程器+UART )转换器,是开发单片机/ARM/MIPS/FPGA的好帮手


==============================================
这段时间玩了一下FT2232的编程。
本来老外已经有这种编程器
FT2232SPI Programmer
http://www.flashrom.org/FT2232SPI_Programmer#Olimex_ARM-USB-TINY_and_related_devices
功能很强大,
不过只能支持高速的FT2232H/FT4232H[USB High Speed 480Mbps接口],
却不支持FT2232D[USB FULL SPEED 12Mbps接口],实际速度也不慢.

根据FTDI官网的资料,可以自己编写程序
http://www.ftdichip.com/Support/SoftwareExamples/MPSSE.htm

利用FTDI的MPSSE引擎,可以实现 USB-JTAG USB-SPI USB-IIC,本身自带的2个8位端口也能实现并行编程。

现在的ARM/MIPS的JATG仿真器,FPGA的JTAG仿真器都有基于FT2232的版本,成本低速度也不慢。不到100元
我手上的是ZLG的EasyARM1138开发板,上面带FT2232D的JTAG/UART仿真器。
TB芯片价格
FT2232D   20+
FT2232H   30+
FT4232H   45+



=============================
接线
SPI FLASH的VDD接3.3V ,WP# HOLD# 也接到VDD上。


FT2232D
        JTAG  SPI     dir
pin24  TCK  SCK    OUT
pin23  TDI   MOSI  OUT
pin22  TDO  MISO  IN  【这里必须断开其他器件的连接,如果有的话】
pin21  TMS  CS     OUT


FT2232H
        JTAG  SPI     dir
pin16  TCK  SCK    OUT
pin17  TDI   MOSI  OUT
pin18  TDO  MISO  IN  【这里必须断开其他器件的连接,如果有的话】
pin19  TMS  CS     OUT




==================================================================

不知道各位手上有没有这些板子?
只是方便手上有FT2232板子的网友DIY
测试遇到BUG的,请反馈给我,软件还在优化完善中
当然我的只支持SPI,有条件支持IIC,不支持并行编程,永远不支持脱机
===================================================================

程序是命令行格式,仅仅提供读和写操作。
-H                      //帮助和支持器件列表
-R001.bin          //读flash到001.bin
-W001.bin         //写001.bin到flash,并回读0001.bin.vf文件给你人工对比

文件查看/编辑请使用 hexedit ultarEdit之类软件。

现在软件支持 大部分SPI FLASH
                     Read    8MBytes use  30s    270KB/s
                     Program 8MBytes use 136s     60KB/s
                     --- test by FT2232D+MX25L6445E  3MHzSCK ---

       支持 MXIC AMIC  EON SPANSION ST  Numonyx WINBOND 的普通25系列 ,256byte/page PP烧录
       支持  SST  ESMT 的25系列 ,AAI 烧录, 烧录速度不错(相对于CH341方案),但未测试
       暂不支持 ATMEL的AT45DB系列,太乱套了


支持24xx全系列 IIC EEPROM烧录,需要硬件配合,暂时屏蔽
                 Read      4KBytes use 2.0s    2.0KB/s
                 Program 4KBytes use 3.0s    1.3KB/s
             --- test by FT2232D+AT24C128 32B/Page 100KHzSCL
                 Read       16KBytes use 7.0s    2.2KB/s
                 Program 16KBytes use 8.0s    2.0KB/s
             --- test by FT2232D+AT24C128 64B/Page 100KHzSCL


更新V1.20
   1 自动选择第一个支持MPSSE功能的FTDI芯片的第一个通道
            例如FT232 和 FT2232 同时连接USB,自动连接到 FT2232 的第一个通道
   2 自动清除BPx保护位,能对BPx已锁定的芯片进行烧录
            旧版本不能对BPx已锁定的芯片进行烧录
   3 优化显示


==================================
帖子楼主位居然还能改写

http://pan.baidu.com/s/1sjK3CnF
网盘里面有最新的烧录程序和FTD2xx.dll

更新V1.33
   1 增加 -s  指定容量功能,配合 -w -r -v 可以对未被芯片库录入的25系列FLASH进行操作
     -s128k   指定为128KBytes
     -s32M    指定为32MBytes

   2 更改版权验证范围。
     -w -r       无需验证都能使用
     -v -b -e -s 需要验证

   3 修正V1.32版读取不能正确保存问题


更新V1.32

   1 进度改成百分比显示方式

   2 操作完成有beep提示,成功短beep3下,错误长beep一下

   3 读取采用二次读取,校验无误才保存文件。而且文件已存在的有提示,输入Y确认覆盖

   4 增加 检验文件功能
       -v001.bin

   5 增加 BlankCheck查空检查
       -b  

   6 增加全片擦除功能,并自动查空
       -e

   7 增加版权验证功能,WINXP和WIN7下工作正常

     (刷存在感而已,完全免费,算法很简单破解也不难)

     根据电脑信息来生成USER__ID=xxxxxxxxx (80个字符)和USER_KEY=xxxxxxxx

     需要用户把自动生成 FTDI_Prog.ini 文件(固定名字)发邮件给 hjjnow@126.com
     我会发回带USER_KEY的ini文件给你,一台电脑的USER_KEY是固定的


   小贴士
     DOS窗口(WIN7则需在非管理员模式下运行)可以拖曳文件到里面自动获取文件名,无需手动输入文件名。










评分

参与人数 2恩山币 +2 收起 理由
poppyjie + 1 率全体恩山路由党以及党魁向你学习!这个都搞好了,我也来学习一下SPI,搞个lab
skygunner + 1 强大的恩山!(以下重复1万次)

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2012-9-12 19:11 | 显示全部楼层
本帖最后由 HJJNOW 于 2014-9-30 21:23 编辑

D:\>D:\SPI_2232\SPI_Flash_ProgramV100.exe -h

**************************************
      SPI Flash Programmer V1.00        
           2012/09/12                  
         HJJNOW@126.com                 
**************************************

support hardware is FT2232D FT2232H FT4232H
support chip include MXIC AMIC ATMEL EON SPANSION ST SST Numonyx WINBOND
Hi Speed Read & Program
   Read    8MB use  30s    270KB/s
   Program 8MB use 136s     60KB/s
   --- test by FT2232H+MX25L6445E ---      
-h to help

**************************************

Checking Hardware...
   Number of available SPI channels = 2
Information on channel number 0:
                Flags       =0x0
                Type        =0x4
                ID          =0x04036010
                LocId       =0x0321
                SerialNumber=A
                Description =Dual RS232 A
                ftHandle    =0x0000
Information on channel number 1:
                Flags       =0x0
                Type        =0x4
                ID          =0x04036010
                LocId       =0x0322
                SerialNumber=B
                Description =Dual RS232 B
                ftHandle    =0x0000

Configuring port...
argv[1]: -h

************      Help    ************
-R001.bin  //Read flashchip to file [001.bin]

-W001.bin  //Program file [001.bin] to flashchip
            //and Auto read back to file [001.bin.vf]

-h         // show help

             Show all support SPI Flash Chips...               

  No.  Chip ID         Name              ---Byte---Size---bit---
   0: 0xC22010   MXIC_MX25L512            64 KBytes =  512 Kbits
   1: 0xC22011   MXIC_MX25L1005/6        128 KBytes =    1 Mbits
   2: 0xC22012   MXIC_MX25L2005/6        256 KBytes =    2 Mbits
   3: 0xC22013   MXIC_MX25L4005/6        512 KBytes =    4 Mbits
   4: 0xC22014   MXIC_MX25L8005/6          1 MBytes =    8 Mbits
   5: 0xC22015   MXIC_MX25L1605/6          2 MBytes =   16 Mbits
   6: 0xC22016   MXIC_MX25L3205/6          4 MBytes =   32 Mbits
   7: 0xC22017   MXIC_MX25L6405/6          8 MBytes =   64 Mbits
   8: 0xC22018   MXIC_MX25L12845E         16 MBytes =  128 Mbits
   9: 0x372020   AMIC_A25L05PT            64 KBytes =  512 Kbits
  10: 0x372010   AMIC_A25L05PU            64 KBytes =  512 Kbits
  11: 0x372021   AMIC_A25L10PT           128 KBytes =    1 Mbits
  12: 0x372011   AMIC_A25L10PU           128 KBytes =    1 Mbits
  13: 0x372022   AMIC_A25L20PT           256 KBytes =    2 Mbits
  14: 0x372012   AMIC_A25L20PU           256 KBytes =    2 Mbits
  15: 0x372013   AMIC_A25L40PT           512 KBytes =    4 Mbits
  16: 0x372013   AMIC_A25L40PU           512 KBytes =    4 Mbits
  17: 0x372014   AMIC_A25L80P              1 MBytes =    8 Mbits
  18: 0x372025   AMIC_A25L16PT             2 MBytes =   16 Mbits
  19: 0x372015   AMIC_A25L16PU             2 MBytes =   16 Mbits
  20: 0x373010   AMIC_A25L512             64 KBytes =  512 Kbits
  21: 0x373011   AMIC_A25L010            128 KBytes =    1 Mbits
  22: 0x373012   AMIC_A25L020            256 KBytes =    2 Mbits
  23: 0x373013   AMIC_A25L040            512 KBytes =    4 Mbits
  24: 0x373014   AMIC_A25L080              1 MBytes =    8 Mbits
  25: 0x373015   AMIC_A25L016              2 MBytes =   16 Mbits
  26: 0x373016   AMIC_A25L032              4 MBytes =   32 Mbits
  27: 0x374016   AMIC_A25LQ032             4 MBytes =   32 Mbits
108: 0xEF3011   WINBOND_NEX_W25X10      128 KBytes =    1 Mbits
109: 0xEF3012   WINBOND_NEX_W25X20      256 KBytes =    2 Mbits
110: 0xEF3013   WINBOND_NEX_W25X40      512 KBytes =    4 Mbits
111: 0xEF3014   WINBOND_NEX_W25X80        1 MBytes =    8 Mbits
112: 0xEF3015   WINBOND_NEX_W25X16        2 MBytes =   16 Mbits
113: 0xEF3016   WINBOND_NEX_W25X32        4 MBytes =   32 Mbits
114: 0xEF3017   WINBOND_NEX_W25X64        8 MBytes =   64 Mbits
115: 0xEF4013   WINBOND_NEX_W25Q40      512 KBytes =    4 Mbits
116: 0xEF4014   WINBOND_NEX_W25Q80        1 MBytes =    8 Mbits
117: 0xEF4015   WINBOND_NEX_W25Q16        2 MBytes =   16 Mbits
118: 0xEF4016   WINBOND_NEX_W25Q32        4 MBytes =   32 Mbits
119: 0xEF4017   WINBOND_NEX_W25Q64        8 MBytes =   64 Mbits
120: 0xEF4018   WINBOND_NEX_W25Q128      16 MBytes =  128 Mbits

   Some chip is different name but has same Chip ID
   It maby support to read & write
   Pls reference the IC datasheet

   If some chip is unsupport,pls Contact me ,let next version to fix it

   Flash RDID=0xC2 0x20 0x17
   Flash Manufacture is Macronix (MXIC)   
   Chip is MXIC_MX25L6405/6         8 MBytes =   64 Mbits

SPI Flash program executed successfully.
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2012-9-12 19:12 | 显示全部楼层
本帖最后由 HJJNOW 于 2012-9-12 19:30 编辑

读8MB flash的记录
D:\>D:\SPI_2232\SPI_Flash_ProgramV100.exe -R001.bin

**************************************
      SPI Flash Programmer V1.00        
           2012/09/12                  
         HJJNOW@126.com                 
**************************************

support hardware is FT2232D FT2232H FT4232H
support chip include MXIC AMIC ATMEL EON SPANSION ST SST Numonyx WINBOND
Hi Speed Read & Program
   Read    8MB use  30s    270KB/s
   Program 8MB use 136s     60KB/s
   --- test by FT2232H+MX25L6445E ---      
-h to help

**************************************

Checking Hardware...
   Number of available SPI channels = 2
Information on channel number 0:
                Flags       =0x0
                Type        =0x4
                ID          =0x04036010
                LocId       =0x0321
                SerialNumber=A
                Description =Dual RS232 A
                ftHandle    =0x0000
Information on channel number 1:
                Flags       =0x0
                Type        =0x4
                ID          =0x04036010
                LocId       =0x0322
                SerialNumber=B
                Description =Dual RS232 B
                ftHandle    =0x0000

Configuring port...
argv[1]: -R001.bin
save file name   :   001.bin
   Flash RDID=0xC2 0x20 0x17
   Flash Manufacture is Macronix (MXIC)   
   Chip is MXIC_MX25L6405/6         8 MBytes =   64 Mbits

read address=0x0 data=0x3c
read address=0x1 data=0x4
read address=0x2 data=0xb1
read address=0x3 data=0x0
read address=0x4 data=0x34
read address=0x5 data=0x84
read address=0x6 data=0x0
read address=0x7 data=0x8
Read address=0x000000
Read address=0x001000
Read address=0x002000
Read address=0x003000
.....................
Read address=0x7FB000
Read address=0x7FC000
Read address=0x7FD000
Read address=0x7FE000
Read address=0x7FF000

Read flash use   29.594 seconds
save to:   D:\SPI_2232\001.bin OK!

SPI Flash program executed successfully.
Read  flash  use   29.594 seconds
  Opreation  use   29.594 seconds
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2012-9-12 19:12 | 显示全部楼层
本帖最后由 HJJNOW 于 2012-9-12 19:21 编辑

写8MB Flash的记录
D:\>D:\SPI_2232\SPI_Flash_ProgramV100.exe -W001.bin

**************************************
      SPI Flash Programmer V1.00        
           2012/09/12                  
         HJJNOW@126.com                 
**************************************

support hardware is FT2232D FT2232H FT4232H
support chip include MXIC AMIC ATMEL EON SPANSION ST SST Numonyx WINBOND
Hi Speed Read & Program
   Read    8MB use  30s    270KB/s
   Program 8MB use 136s     60KB/s
   --- test by FT2232H+MX25L6445E ---      
-h to help

**************************************

Checking Hardware...
   Number of available SPI channels = 2
Information on channel number 0:
                Flags       =0x0
                Type        =0x4
                ID          =0x04036010
                LocId       =0x0321
                SerialNumber=A
                Description =Dual RS232 A
                ftHandle    =0x0000
Information on channel number 1:
                Flags       =0x0
                Type        =0x4
                ID          =0x04036010
                LocId       =0x0322
                SerialNumber=B
                Description =Dual RS232 B
                ftHandle    =0x0000

Configuring port...
argv[1]: -W001.bin
read file name   :   001.bin
   Flash RDID=0xC2 0x20 0x17
   Flash Manufacture is Macronix (MXIC)   
   Chip is MXIC_MX25L6405/6         8 MBytes =   64 Mbits
File Size = 8388608 Bytes
  D:\SPI_2232\001.bin Read OK


It will erase the whole flash chip! Press [Y] to continue..
Status=0x00
Status=0x02
Chip Erase ...Wait...
Status=0x03
......
Status=0x03
Status=0x00
OK
Erase flash use   32.032 seconds
Flash RDID=0xc2 0x20 0x17 0x0
Status=0x00
Flash RDID=0xc2 0x20 0x17 0x0
Status=0x00
Status=0x00
Write address=0x000000 Status=0x00
Write address=0x000100 Status=0x00
......
Write address=0x7FFC00 Status=0x00
Write address=0x7FFD00 Status=0x00
Write address=0x7FFE00 Status=0x00
Write address=0x7FFF00
Write flash use  132.484 seconds
read address=0x0 data=0x3c
read address=0x1 data=0x4
read address=0x2 data=0xb1
read address=0x3 data=0x0
read address=0x4 data=0x34
read address=0x5 data=0x84
read address=0x6 data=0x0
read address=0x7 data=0x8
Verify...
....................
Read flash use   29.766 seconds
save to:   D:\SPI_2232\001.bin.vf OK!

SPI Flash program executed successfully.
Erase flash  use   32.032 seconds
Write flash  use  132.484 seconds
Read  flash  use   29.766 seconds
  Opreation  use  194.282 seconds
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2012-9-12 19:15 | 显示全部楼层
本帖最后由 HJJNOW 于 2012-9-12 19:28 编辑

SPI Flash的指令基本兼容,只要更新配置信息就能支持更多器件。

支持器件列表,没完全测试。
根据RDID分类,
同一个RDID会有多个器件名字,部分特性不一样,但是容量和读写操作命令是一样的。
例如 0xC22017 就有  MX25L6405/ MX25L6405/MX25L6445E  多个器件名字

120个ID,真实器件起码翻倍,再按照编程器的惯例,算上不同后缀(封装/温度等级..)应该号称支持1000+器件了,呵呵

容量根据数据手册摘录,可能有错漏,请网友指正

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2012-9-12 19:18 | 显示全部楼层
谁有FT2232的板子/仿真器之类?
我可以发软件给你测试

测试基本没问题后再发上来给大伙玩玩。

只提供exe程序,源码不公开。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2012-9-14 00:43 | 显示全部楼层
本帖最后由 wyf_00 于 2012-9-14 00:59 编辑

我有一块FT232RL的板子,能用么?wyf_00@163.com
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2012-9-14 13:10 | 显示全部楼层
本帖最后由 xll 于 2012-9-14 14:39 编辑

擦除时间长了些
要不要批量做一批板子?{:soso_e144:}
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2012-9-14 14:42 | 显示全部楼层
本帖最后由 HJJNOW 于 2012-9-14 15:31 编辑
wyf_00 发表于 2012-9-14 00:43
我有一块FT232RL的板子,能用么?

只有FT2232D/FT2232H/FT4232H/FT232H 这4款才有MPSSE功能。

FT232R用不了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2012-9-14 14:48 | 显示全部楼层
xll 发表于 2012-9-14 13:10
擦除时间长了些
要不要批量做一批板子?

那就不知道你对比的是什么编程器了。

我用的是CE片擦除命令,速度最快,直接就是芯片自己的速度。

MX25L6445E/MX25L12845E
快速擦除时间:(type 典型值)
60ms/扇区;
0.7s/块;
50s/整片(64Mb),   实际该MX25L6445E芯片只需32秒
80s/整片(128Mb)

点评

xll
对,整片擦除应该是最快的了。  发表于 2012-9-14 14:49
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2012-9-14 15:03 | 显示全部楼层
现在只是开发了SPI功能,做板意义不大。
毕竟TB上更多功能的编程器价格也就100~300

如果做成 SPI/IIC/并行编程+UART转换器,但这样比较复杂,我个人没这个精力和时间。

所以这个软件比较适合有现成FT2232板子的网友DIY,
'0'成本,
制作简单 接出CS/ SCK/ MISO/MOSI/GND/VCC3V 即可
性能也不差

点评

xll
嗯,目前只适合有板子的朋友玩玩。  发表于 2012-9-14 16:05
xll
嗯,目前只适合有板子的朋友玩玩。  发表于 2012-9-14 16:05
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2012-9-14 21:35 | 显示全部楼层
LZ,我有块FT2232D的板子,以前用来烧录液晶电视的TV板的!我邮箱:tendapc@163.com
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2012-9-15 12:46 | 显示全部楼层
yashee 发表于 2012-9-14 21:35
LZ,我有块FT2232D的板子,以前用来烧录液晶电视的TV板的!我邮箱:

   程序已经发给你了,请帮忙测试一下。

   更新V1.01
     1 增加SST的AAI烧录模式。
     2 增加 -v001.bin 直接校验文件  
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2012-9-15 13:54 | 显示全部楼层
这板子还不好找哟,想搞个pcb自己打板
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2012-9-16 17:05 | 显示全部楼层
LZ,远行程序提示无法加载ft8u245.dll文件,是不是你给我的程序里少了这个文件啊??

**************************************
      SPI Flash Programmer V1.01
           2012/09/12
         HJJNOW@126.com
**************************************

support hardware is FT2232D FT2232H FT4232H FT232H
support chip include MXIC AMIC ATMEL EON SPANSION ST SST Numonyx WINBOND
Hi Speed Read & Program
   Read    8MB use  30s    270KB/s
   Program 8MB use 136s     60KB/s
   --- test by FT2232D+MX25L6445E ---
-h to help

**************************************

Error: Can't Load ft8u245.dll
D:\>

点评

估计是你之前的板子FT2232只做USB-UART转换,只需安装VCP驱动,编程由MCU完成 又或者你卸载了驱动 需要安装D2XX驱动  发表于 2012-9-17 16:47
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-18 17:56

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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