搜索
bottom↓
回复: 88

【开源】使用STM32实现一个USB-Blaster

  [复制链接]

出0入0汤圆

发表于 2016-10-12 00:47:00 | 显示全部楼层 |阅读模式
本帖最后由 eleqian 于 2016-10-12 01:05 编辑

USB-Blaster是Altera公司系列FPGA/CPLD芯片的下载调试工具,TB上已经很多便宜的可以选,大部分都是使用开源方案做的。
常见的开源方案有:FT245+CPLD,CY7C68013A,C8051F321,PIC18F14K50等,据说也有人移植到STM32卖但不开源。
之所以用STM32再实现一个,是为了给自己挖的一个坑做准备,具体后面再说,先放上代码链接:
https://github.com/eleqian/WiDSO/tree/master/MCU/

芯片使用的是大街货STM32F103C8T6,实际使用任何ROM 16k/ RAM 2k以上带USB的型号都可以。
目前主要实现JTAG模式(我只需要JTAG),AS模式可以通过宏打开,需要自己添加IO定义和初始化。
输入输出都是直接操作的IO,没有使用硬件SPI,可以使用任意IO进行移植。
实测TCK时钟可以达到4MHz,比自己买的C8051F321版本快不少,如果想要更高速度得把硬件SPI用上了。

SHIFT模式实测波形图:


BIT-BANG模式实测波形图:


硬件没有其它特殊要求,如果不需要电平转换使用带USB的最小系统即可,我使用的IO定义如下:
TCK  -  PB3
TDO  -  PB4
TDI  -  PB5
TMS  -  PB6
LED  -  PA8
USB上拉1.5k  -  PA15

代码使用MIT协议开源,参考了以下开源项目重新编写:
http://ixo-jtag.sourceforge.net/
http://www.sa89a.net/mp.cgi/ele/ub.htm

前面说的挖的坑来啦~有人能猜到是做什么吗?
空余时间制作进展缓慢,欢迎围观和贡献力量~
项目地址:https://github.com/eleqian/WiDSO


补充附件上传:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2016-10-12 01:02:49 | 显示全部楼层
通过Wi-Fi显示和控制的数字示波器(DSO)+逻辑分析仪(LA)。

通道数:1CH模拟(8位)+8CH数字
采样率:100Mps@单独工作,50Mps@同时工作
存储深度:512k@单独工作,256k@同时工作
模拟触发:上升沿/下降沿,手动/单次/自动
逻辑触发:上升沿/下降沿/电平(任意通道)
通信接口:Wi-Fi b/g/n,USB FS,UART
硬件组成:ADC80100+EPM240T100+IS61LV25616+STM32F103C8+ESP8266

出0入0汤圆

发表于 2016-10-12 01:23:19 | 显示全部楼层






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-10-12 03:06:15 | 显示全部楼层
不错,支持!

出0入0汤圆

发表于 2016-10-12 04:53:57 | 显示全部楼层
shangdawei 发表于 2016-10-12 01:02
通过Wi-Fi显示和控制的数字示波器(DSO)+逻辑分析仪(LA)。

通道数:1CH模拟(8位)+8CH数字

你才是原创,这让楼主情何以堪啊

出0入0汤圆

发表于 2016-10-12 07:43:26 | 显示全部楼层
换颗容量大点的,也可以把CMSIS-DAP、JLINK OB塞进去

出0入0汤圆

 楼主| 发表于 2016-10-12 08:28:55 | 显示全部楼层
zyw19987 发表于 2016-10-12 04:53
你才是原创,这让楼主情何以堪啊

楼上从项目开源链接里找出来的。。

出0入0汤圆

 楼主| 发表于 2016-10-12 08:31:41 | 显示全部楼层
wmm20031015 发表于 2016-10-12 07:43
换颗容量大点的,也可以把CMSIS-DAP、JLINK OB塞进去

DAP应该可以,JLINK不开源就没办法了。
容量不需要很大,目前只用来11k不到Flash,我打算再放个VCP串口进去。

出0入0汤圆

发表于 2016-10-12 08:37:37 | 显示全部楼层
wmm20031015 发表于 2016-10-12 07:43
换颗容量大点的,也可以把CMSIS-DAP、JLINK OB塞进去

怎么做?能详细说明一下吗

出0入0汤圆

发表于 2016-10-12 08:55:41 | 显示全部楼层
楼主,开源可以说得更详细些吗

出0入0汤圆

发表于 2016-10-12 09:26:59 | 显示全部楼层
太强了,佩服

出0入0汤圆

发表于 2016-10-12 09:34:01 | 显示全部楼层
不错,支持下

出0入0汤圆

发表于 2016-10-12 10:01:04 | 显示全部楼层
four_zhg 发表于 2016-10-12 08:55
楼主,开源可以说得更详细些吗

似乎使用 STM32 来仿真 FT245 芯片.

出0入0汤圆

发表于 2016-10-12 10:07:41 | 显示全部楼层
eleqian 发表于 2016-10-12 08:31
DAP应该可以,JLINK不开源就没办法了。
容量不需要很大,目前只用来11k不到Flash,我打算再放个VCP串口进 ...

如果用 STM32F103CB的话,用 128 KB Flash可以使用。
使用 STLINK 的 BootLoader,可以实现 STLINK V2 和 JLink, 需要64KB
剩下 64KB 实现 DAP 和 Blaster。

如果用 STM32F103C8的话 可以使用 16 KB来实现 DAP 和 Blaster, 剩下 48 KB 作为 STLINK 和 JLINK。
这样需要写一个兼容的Bootloader, 来更新STLINK 和 JLINK。

出0入0汤圆

发表于 2016-10-12 10:14:39 | 显示全部楼层
eleqian 发表于 2016-10-12 08:31
DAP应该可以,JLINK不开源就没办法了。
容量不需要很大,目前只用来11k不到Flash,我打算再放个VCP串口进 ...

JLINK烧写地址08000000不可调,但是你的USB-BLASTER位置可调。修改08000000+4跳转到一个选择器,根据拨码开关选择跳回JLINK还是跳到USB-BLASTER。  
虽然再加一位拨码开关可以选择更多固件,JLINK跟DAP功能重复,实际上有了JLINK谁还用DAP啊,加个DAP没卵用。

出0入0汤圆

发表于 2016-10-12 10:19:25 | 显示全部楼层
zyw19987 发表于 2016-10-12 04:53
你才是原创,这让楼主情何以堪啊

明显PCB丝印有楼主ID...

出0入0汤圆

发表于 2016-10-12 10:21:32 | 显示全部楼层
弱问楼主,FPGA这个下载协议有没有简单介绍的,  这个USB-BLASTER只是完成简单读写JTAG寄存器么。

出0入0汤圆

发表于 2016-10-12 10:30:49 | 显示全部楼层
huangqi412 发表于 2016-10-12 10:21
弱问楼主,FPGA这个下载协议有没有简单介绍的,  这个USB-BLASTER只是完成简单读写JTAG寄存器么。 ...





Blaster 代码, 看起来只是实现 JTAG IO 处理。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-10-12 10:32:03 | 显示全部楼层
本帖最后由 shangdawei 于 2016-10-12 10:34 编辑

1.基本特性:
100Mbps采样率数字示波器(DSO),垂直分辨率为8比特,存储深度512k点;
100Mbps采样率逻辑分析仪(LA),最多8路输入,存储深度512k;
DSO和LA同时工作时采样率为50Mbps,存储深度各256k;
2.触发器:
DSO支持上升沿和下降沿触发,触发电平可调;
LA支持任意1路边沿和最多8路电平状态触发;
支持外部触发输入和触发输出;
DSO/LA/外部触发可任意组合条件都满足时才触发;
预触发深度10%~90%可调;
DSO和LA共用触发状态,预触发深度相同;
3.频率计:
CPLD对输入频率8分频或不分频,测量范围由MCU限定,>50MHz;
4.MCU接口:
高速SPI接口,时钟>=18MHz;
一路中断信号,在触发或采样完成时拉低;


1. 硬件简化版
    ADC08100/AD9283/ADS830+STM32F4(100Pin),使用DCMI接口接ADC,内部SRAM
    1CH模拟+/14CH数字复用,50Mps@1CH模拟/8CH数字,25Mps@14CH数字
    软件触发,WIFI,USB FS/HS

2. 简易版
    ADC08100/AD9283-100+EPM240/XO256/A3P030(100Pin)+SRAM(256k*16)+STM32F1(48Pin)+ESP8266
    1CH模拟+8CH数字,100Mps@单独工作,50Mps@同时工作
    简单触发,WIFI,USB FS

3. 增强版
    AD9288-100+XC3S50AN/XO2-1200(144Pin)+SDR133(4M*16)+STM32F1/F4(100Pin)
    2CH模拟+/16CH数字复用,200Mps@1CH模拟/8CH数字,100Mps@2CH模拟/16CH数字
    增强触发,USB FS/HS

4. 数字荧光版
    AD9288-100+XC6SLX9/EP4CE6(144Pin)+DDR333(16M*16)+STM32F4(100Pin)
    2CH模拟+/16CH数字复用,200Mps@1CH模拟/8CH数字,100Mps@2CH模拟/16CH数字
    高级触发,高级数值测量,数字荧光显示,USB HS

功能是越来越强大,硬件也是越来越复杂啊。

出0入0汤圆

发表于 2016-10-12 10:44:46 | 显示全部楼层
感谢楼主分享,相信这样的话某宝上就会渐渐出现U盘外壳的USB-Blaster了,嘿嘿

出0入0汤圆

 楼主| 发表于 2016-10-12 10:50:34 来自手机 | 显示全部楼层
shangdawei 发表于 2016-10-12 10:01
似乎使用 STM32 来仿真 FT245 芯片.

是的,基本流程和参考的开源代码一样,模拟了FT245芯片枚举和读eeprom,和串并转换的功能,JTAG数据是通过EP1和EP2进行bulk传输的

出0入0汤圆

 楼主| 发表于 2016-10-12 10:53:03 来自手机 | 显示全部楼层
huangqi412 发表于 2016-10-12 10:21
弱问楼主,FPGA这个下载协议有没有简单介绍的,  这个USB-BLASTER只是完成简单读写JTAG寄存器么。 ...

USB-Blaster做的事比较简单,只是把USB传的数据按照JTAG时序读写,实际下载功能是PC软件做的

出0入0汤圆

发表于 2016-10-12 11:11:51 | 显示全部楼层
多谢楼主分享

出10入0汤圆

发表于 2016-10-12 11:20:16 | 显示全部楼层
zyw19987 发表于 2016-10-12 04:53
你才是原创,这让楼主情何以堪啊

不调查马上就下定论,打PP

出0入0汤圆

发表于 2016-10-12 14:12:14 | 显示全部楼层
eleqian 发表于 2016-10-12 10:50
是的,基本流程和参考的开源代码一样,模拟了FT245芯片枚举和读eeprom,和串并转换的功能,JTAG数据是通 ...

纯模仿FT245芯片?  我下个FT245手册看看

出0入0汤圆

发表于 2016-10-12 14:17:25 | 显示全部楼层

这模块很安X可..

出0入0汤圆

发表于 2016-10-12 14:20:57 | 显示全部楼层
本帖最后由 huangqi412 于 2016-10-12 14:22 编辑
eleqian 发表于 2016-10-12 10:53
USB-Blaster做的事比较简单,只是把USB传的数据按照JTAG时序读写,实际下载功能是PC软件做的 ...


看了下FT245引脚图,就是USB<--->8位并口,芯片内部并没有自带JTAG时序。那么连时序也是电脑产生的么?  比如要送一个字节出去,JTAG是串行需要8个CLK,每个CLK送一个位,那么PC需要发送16个字节,每个字节包含CLK电平和位电平, 效率很低的样子。  单片机需要模拟这个芯片,依然只能保持每个字节数据要通过USB送16字节完成串行时序。   
看起来跟古老的电脑并口是一样一样的了。并口当成串口用,每个字节要拆成位,每个位还要拆成CLK高低电平,一个字节实际数据量要*16

出0入0汤圆

发表于 2016-10-12 14:24:48 | 显示全部楼层
FT245芯片里面是没有任何协议的吧应该,只是机械的把USB数据丢到并口,把并口数据丢到USB.

出0入0汤圆

发表于 2016-10-12 14:45:11 | 显示全部楼层
用jlink的引脚,就可以不用做硬件了

出0入0汤圆

 楼主| 发表于 2016-10-12 14:52:14 来自手机 | 显示全部楼层
huangqi412 发表于 2016-10-12 14:20
看了下FT245引脚图,就是USB8位并口,芯片内部并没有自带JTAG时序。那么连时序也是电脑产生的么?  比如 ...

FT245要外加CPLD做串并转换,所以速度可以比较快,现在CPLD的工作也由软件实现了。你说的直接8位并行输出也存在,叫bit-bang模式,用来控制初始状态和tms、led等信号。

出0入0汤圆

 楼主| 发表于 2016-10-12 14:57:09 来自手机 | 显示全部楼层
mcu5i51 发表于 2016-10-12 14:45
用jlink的引脚,就可以不用做硬件了

是的,可以修改代码IO定义,没有限制使用那个IO,只是不符合官方10-Pin接口

出0入0汤圆

发表于 2016-10-12 15:13:33 | 显示全部楼层
eleqian 发表于 2016-10-12 14:52
FT245要外加CPLD做串并转换,所以速度可以比较快,现在CPLD的工作也由软件实现了。你说的直接8位并行输出 ...

明白了,原来不是一个FT245,需要两个片子,FT245只是USB用途。 有没有单FT245的方案?

出0入0汤圆

 楼主| 发表于 2016-10-12 15:16:18 来自手机 | 显示全部楼层
huangqi412 发表于 2016-10-12 15:13
明白了,原来不是一个FT245,需要两个片子,FT245只是USB用途。 有没有单FT245的方案? ...

没有,官方方案就是FT245+CPLD,后面各种仿制的都是进行模拟

出0入0汤圆

发表于 2016-10-12 16:31:14 | 显示全部楼层
这个PCB板画的真漂亮啊,赞啊

出0入0汤圆

发表于 2016-10-12 20:57:02 | 显示全部楼层
玩得真溜!

出0入0汤圆

发表于 2016-10-12 21:10:24 | 显示全部楼层
佩服楼主,如果将DAP加上就更好了,同时在将DSP下载加上

出0入0汤圆

发表于 2016-10-12 22:19:46 | 显示全部楼层
596142041 发表于 2016-10-12 21:10
佩服楼主,如果将DAP加上就更好了,同时在将DSP下载加上

也许还可以支持 AVR PIC MSP430 。。。

出100入101汤圆

发表于 2016-10-12 22:37:54 | 显示全部楼层
LS两位大牛懂这么多!

出0入0汤圆

发表于 2016-10-13 00:17:47 | 显示全部楼层
太强了,佩服

出0入0汤圆

发表于 2016-10-13 09:00:28 | 显示全部楼层
真心佩服楼主的精神。

出0入0汤圆

发表于 2016-10-13 13:54:43 | 显示全部楼层
佩服楼主的动手能力呀

出0入0汤圆

发表于 2016-10-13 20:35:37 | 显示全部楼层
shangdawei 发表于 2016-10-12 22:19
也许还可以支持 AVR PIC MSP430 。。。

好吧!这些仿真器的时序楼主去哪儿找呢?

出0入0汤圆

发表于 2016-10-13 20:43:19 | 显示全部楼层
AVR067: JTAGICE mkII Communication Protocol - Atmel





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-10-13 20:46:39 | 显示全部楼层
AN005 通过 JTAG 接口对 FLASH 编程

本应用笔记适用于下列器件

C8051F000
C8051F001
C8051F002
C8051F005
C8051F006
C8051F010
C8051F011
C8051F012





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-10-13 20:49:29 | 显示全部楼层
MSP430 Programming Via the JTAG Interface





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-10-13 20:50:19 | 显示全部楼层
通过JTAG接口进行MSP430. 编程





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-10-13 20:51:48 | 显示全部楼层
Microchip : In-Circuit Serial Programming (ICSP) Guide - Elnec





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-10-15 23:47:32 | 显示全部楼层
楼主应该去弄个LPC-LINK2来折腾,芯片用的是LPC435x,M4+M0模拟时序是小菜,100多块钱,还省了打板买零件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-10-16 00:15:44 | 显示全部楼层
wmm20031015 发表于 2016-10-15 23:47
楼主应该去弄个LPC-LINK2来折腾,芯片用的是LPC435x,M4+M0模拟时序是小菜,100多块钱,还省了打板买零件 { ...

LPC-Link 2 is an extensible, stand-alone debug probe that can be configured to support various development tools and IDEs using a variety of different downloadable firmware images.

It can also be used as an evaluation board in its own right for the NXP® LPC4370 triple core MCU.

Through the use of an add-on board from Embedded Artists, it can be used as an oscilloscope or logic analyzer!

Available firmware images include:

J-Link by Segger
CMSIS-DAP by ARM
LPCXpresso Redlink

出0入0汤圆

发表于 2016-10-16 08:33:33 | 显示全部楼层
shangdawei 发表于 2016-10-16 00:15
LPC-Link 2 is an extensible, stand-alone debug probe that can be configured to support various dev ...

  LPC4370,记差了,这个比LPC435x更强,80M的ADC啊,做示波器可以省了ADC了

出0入0汤圆

发表于 2016-10-16 09:18:57 | 显示全部楼层

不错,支持下

出0入0汤圆

 楼主| 发表于 2016-10-16 12:53:21 | 显示全部楼层
wmm20031015 发表于 2016-10-16 08:33
LPC4370,记差了,这个比LPC435x更强,80M的ADC啊,做示波器可以省了ADC了 ...

确实很强大,只是BGA封装不好焊,不然应该有很多人用它做了

出0入0汤圆

发表于 2016-10-16 13:22:42 | 显示全部楼层
不单单焊接问题,价格也是一个问题,有点小贵。

出0入0汤圆

发表于 2016-10-23 14:19:02 | 显示全部楼层
ADC用AD9288吧

出0入0汤圆

发表于 2016-10-23 15:01:38 来自手机 | 显示全部楼层
不错,支持下,有机会也制作一下。

出0入0汤圆

发表于 2016-10-23 15:12:30 | 显示全部楼层
厉害了,好好学习下

出0入0汤圆

发表于 2016-10-23 20:08:28 | 显示全部楼层
缺少文件。skey.c: Error:  #5: cannot open source input file "..\drv\skey.c": No such file or directory

出0入0汤圆

 楼主| 发表于 2016-10-23 21:31:07 | 显示全部楼层
最笨的企鹅 发表于 2016-10-23 20:08
缺少文件。skey.c: Error:  #5: cannot open source input file "..\drv\skey.c": No such file or directo ...

最开始有这个文件,后来不需要就删掉了,请直接从工程去掉或者从github更新。

出0入0汤圆

 楼主| 发表于 2016-10-23 23:35:31 | 显示全部楼层

做双通道示波器AD9288应该是最合适的,计划先做单通道的扩展板,核心板也可以支持双通道的扩展板。

出0入0汤圆

发表于 2016-10-24 08:07:03 | 显示全部楼层
学习,,,,,,,,,,,,,,,,,,

出0入0汤圆

发表于 2016-10-24 10:03:01 | 显示全部楼层
传说中的高手

出0入0汤圆

发表于 2016-10-24 23:16:47 | 显示全部楼层
eleqian 发表于 2016-10-23 23:35
做双通道示波器AD9288应该是最合适的,计划先做单通道的扩展板,核心板也可以支持双通道的扩展板。 ...

主要是AD9288的话,可以简单将时钟反相。做到单片200MS的采样速率。而且AD9288价格非常便宜。

出0入0汤圆

发表于 2016-10-25 11:12:54 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2016-10-26 00:13:30 | 显示全部楼层
mark 使用STM32实现一个USB-Blaster

出0入0汤圆

发表于 2016-10-26 06:47:24 | 显示全部楼层
很好,练练手可以!

出0入0汤圆

发表于 2016-10-26 08:11:17 | 显示全部楼层
这个就厉害了

出10入0汤圆

发表于 2016-10-26 08:25:08 来自手机 | 显示全部楼层
支持下!!!

出0入0汤圆

发表于 2016-12-27 14:38:56 | 显示全部楼层
本帖最后由 banalsheep 于 2016-12-27 14:39 编辑

PIC18F14K50版本的除了电压只支持3.3v外,其余功能都和原厂一样么?
比如是不是支持SignalTap II 嵌入式逻辑分析仪?

出0入0汤圆

 楼主| 发表于 2016-12-29 22:11:37 | 显示全部楼层
banalsheep 发表于 2016-12-27 14:38
PIC18F14K50版本的除了电压只支持3.3v外,其余功能都和原厂一样么?
比如是不是支持SignalTap II 嵌入式逻 ...

各种模拟版本都是支持的,和真正用FT245做得一样。

出0入0汤圆

发表于 2016-12-30 13:56:07 | 显示全部楼层
下载了,谢谢。好好研究一下

出0入0汤圆

发表于 2017-1-16 23:43:27 来自手机 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2017-1-17 09:17:27 | 显示全部楼层
看不太懂,留个爪印,有时间再仔细拜读

出0入0汤圆

发表于 2017-1-17 10:05:17 | 显示全部楼层
好资料,记号一下!

出0入0汤圆

发表于 2017-1-17 10:49:14 | 显示全部楼层
使用STM32实现一个USB-Blaster  mark 厉害

出0入0汤圆

发表于 2017-1-17 11:09:58 | 显示全部楼层
多谢分享

出0入0汤圆

发表于 2018-12-27 22:34:03 | 显示全部楼层
就是不知这个做下来。实际下载的速度是多少。有并口那么快不?

出0入0汤圆

发表于 2018-12-28 10:43:41 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2018-12-28 10:54:22 | 显示全部楼层
Thank you !!!

出0入0汤圆

发表于 2018-12-28 10:59:02 | 显示全部楼层
谢谢。好好研究一下

出0入0汤圆

发表于 2018-12-28 11:11:43 | 显示全部楼层
楼主牛人。 收藏备用。

出0入25汤圆

发表于 2019-9-1 20:04:56 | 显示全部楼层

好资料,,感谢分享

出0入0汤圆

发表于 2019-9-1 22:28:12 来自手机 | 显示全部楼层
XIVN1987 发表于 2019-9-1 20:04
好资料,,感谢分享

Py大神又转战fpga了

出0入0汤圆

发表于 2020-1-1 21:11:59 | 显示全部楼层
我是个学生,现在毕设的内容是用STM32做基于USB BLASTER的在线仿真器。
本来在论坛里找到一个开源的帖子,但是看不懂,申请了论坛会员,结果发现不能直接联系那个大佬。。。(不过也是应该的,人人都能骚扰那就太乱了)
想问以下问题,希望有好心人解答:
1.在我的理解里,硬件部分是USB-STM32-JTAG这样连接的,要实现下载器的功能的话,要让STM32里加入调节时序的功能,可以串并转换(如果有不对请大佬指出),但是毕设要求的在线调试部分不太清楚怎么实现。。。希望可以讲解一下
2.加入真的做出来STM32实现的在线仿真器,那他对应调试的外设是不是只能是ARM的?还是说也可以像USB BLASTER一样调试CPLD或者FPGA的芯片?
3.要用STM32实现在线仿真功能,是不是得用keil这个软件写程序,搜到的制作USB BLASTER大都是用CPLD 实现的,好像对应的程序是在quarters 2上写的。。。
有好心人教教我吗,真的感谢!
有偿的,毕竟是答疑。。。拜托了,我的最后一丝希望!!!

出0入0汤圆

发表于 2020-1-1 22:02:39 | 显示全部楼层
厉害,Mark

出0入0汤圆

发表于 2020-1-5 14:10:28 | 显示全部楼层
rjy1005274900 发表于 2020-1-1 21:11
我是个学生,现在毕设的内容是用STM32做基于USB BLASTER的在线仿真器。
本来在论坛里找到一个开源的帖子, ...

既然决定作为毕业设计应该自己认真研究才对,

我提供几个思路给你:
首先应该了解原装USB-BLASTER的结构。 FT245+CPLD,

FT245主要实现了USB转并口的协议, STM32需要能使用USB-BLASTER的驱动, 那么就需要实现FT245的USB协议。
你需要去FTDI网站下载相关资料。自己肯定要分析USB通讯的协议。

CPLD实现了字节流控制协议。 你需要搞清楚每个BIT的功能和定义, 网上也能找到这些。
等级低, 不能发链接, 附在后面。
虽然是个小东西, 要吃透还是需要自己去学习。
理论上只要带有USB-Device的CPU基本都可以实现USB-BLASTER的功能。即使是51内核的也可以。


usb_jtag firmware now happens to behave just like the combination of
FT245BM and Altera-programmed EPM7064 CPLD in Altera's USB-Blaster.
The CPLD knows two major modes: Bit banging mode and Byte shift mode.
It starts in Bit banging mode. While bytes are received from the host
on EP2OUT, each byte B of them is processed as follows:

Bit banging mode
----------------
1. Remember bit 6 (0x40) in B as the "Read bit".
2. If bit 7 (0x80) is set, switch to Byte shift mode for the coming X
   bytes ( X := B & 0x3F ), and don't do anything else now.
3. Otherwise, set the JTAG signals as follows:
   - TCK/DCLK high if bit 0 was set (0x01), otherwise low
   - TMS/nCONFIG high if bit 1 was set (0x02), otherwise low
   - nCE high if bit 2 was set (0x04), otherwise low
   - nCS high if bit 3 was set (0x08), otherwise low
   - TDI/ASDI/DATAO high if bit 4 was set (0x10), otherwise low
   - Output Enable/LED active if bit 5 was set (0x20), otherwise low
4. If "Read bit" (0x40) was set, record the state of TDO(CONF_DONE) and
   DATAOUT/(nSTATUS) pins and put is as a byte( (DATAOUT<<1)|TDO) in the
   output FIFO _to_ the host.

Byte shift mode
---------------
1. Load shift register with byte from host
2. Do 8 times (i.e. for each bit of the byte; implemented in shift.a51)
   - if nCS=1, set carry bit from TDO, else set carry bit from DATAOUT
     (Active Serial mode)
   - Rotate shift register through carry bit
   - TDI := Carry bit
   - Raise TCK, then lower TCK.
3. If "Read bit" was set when switching into byte shift mode, record the
   shift register content and put it into the FIFO to the host.

出0入0汤圆

发表于 2020-4-29 23:17:15 | 显示全部楼层
eleqian 发表于 2016-12-29 22:11
各种模拟版本都是支持的,和真正用FT245做得一样。

请问AS模式里面的NCS_GETOUT()宏定义应该如何定义?
试过NCS_GETOUT() 定义为1(默认),JTAG无法使用,请指点,谢谢!

出0入0汤圆

发表于 2020-4-30 10:11:05 | 显示全部楼层
mark,多年前有想法,但是没有动

出0入0汤圆

发表于 2020-4-30 10:12:38 | 显示全部楼层
liurangzhou 发表于 2020-4-30 10:11
mark,多年前有想法,但是没有动

喜欢折腾,手头一堆diy工具

出0入0汤圆

发表于 2020-4-30 10:16:44 | 显示全部楼层
loggerjy 发表于 2020-4-30 10:12
喜欢折腾,手头一堆diy工具

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

本版积分规则

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

GMT+8, 2024-4-26 21:45

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

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