搜索
bottom↓
回复: 87

STM8S 脱机烧写器的开源代码下载转帖

  [复制链接]

出0入0汤圆

发表于 2012-6-15 20:11:00 | 显示全部楼层 |阅读模式
老论坛的帖子:
http://www.amobbs.com/thread-5257947-1-1.html

附件无法下载,有坛友需要的,在此下载


原来的金牌会员whimsy帐号被封,启用新账号,感觉上有点可惜

本帖子中包含更多资源

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

x

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

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

出0入0汤圆

发表于 2012-6-15 20:16:25 | 显示全部楼层
    谢谢分享。

出0入0汤圆

发表于 2012-6-15 20:22:38 | 显示全部楼层
多谢。。。。。。。。

出0入0汤圆

发表于 2012-6-15 20:38:01 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2012-6-15 20:55:42 | 显示全部楼层
顶起,多谢分享

出0入0汤圆

发表于 2012-6-15 21:25:52 | 显示全部楼层
这个要mark下

出0入0汤圆

发表于 2012-6-15 21:37:47 | 显示全部楼层
联系下老大,让他给你解禁嘛,我支持你~~

出0入0汤圆

发表于 2012-6-15 22:23:09 | 显示全部楼层
好东西 mark了

出0入0汤圆

发表于 2012-6-15 22:43:13 | 显示全部楼层
支持一下。

出0入0汤圆

发表于 2012-6-15 22:52:46 | 显示全部楼层
本帖最后由 NEWWD 于 2012-6-15 23:07 编辑

新手,不太懂。顶起支持
最近也想学习下STM8的编程。正想DIY 个STlink 可是找不到固件。楼主这个真是好东西啊。我想在图上只取一路来做个小板用。没问吧。我觉得楼主整个USB usb分配器芯片做上去。就只用一个USB口了是不是好看些呢

出0入0汤圆

发表于 2012-6-15 23:19:58 | 显示全部楼层
顶顶,之前都有看过楼主的哪个帖子

出0入0汤圆

发表于 2012-6-15 23:32:11 来自手机 | 显示全部楼层
gpod?不错,下载在

出0入0汤圆

发表于 2012-6-16 00:08:03 | 显示全部楼层
谢谢楼主分享, 之前就看到这个附件可惜下载不了.

出0入90汤圆

发表于 2012-6-16 08:02:55 | 显示全部楼层
这个是需要专门的上软来支持的下载工具!

出0入0汤圆

发表于 2012-6-16 08:58:33 | 显示全部楼层
8L 是否支持。

出0入0汤圆

发表于 2012-6-16 09:11:55 | 显示全部楼层
多谢LZ,终于可以下载了

出0入0汤圆

发表于 2012-6-16 09:41:28 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2012-6-16 11:08:54 | 显示全部楼层
谢谢分享,支持一下

出0入0汤圆

发表于 2012-6-16 14:56:56 | 显示全部楼层
不错,有时间也想研究一下

出0入0汤圆

 楼主| 发表于 2012-6-16 20:06:44 | 显示全部楼层
本帖最后由 whimsyB 于 2012-6-16 20:13 编辑

呵呵,想不到还是有很多人喜欢

TO:14楼,专门的软件也是我自己编写的delph程序,写的不好,见笑

TO: 10楼,取1#部分是最好的,V1.02的固件,1#电路增加了1个蜂鸣器,增加了目标芯片3V3的切换,可以用SI2301场效应来切换
这2天测试改写ROP时,改完之后需要重新断开目标3V3再继续写flash内容才行,否则有的芯片swimrst指令会出错,暂时不清楚stlink怎么实现不断电也可改写rop的?
根据swim的协议文档,有的option配置,也需要断电重新上电的时序才可以正常的进入swim模式,所以感觉还是增加电源切换比较好


自动重新做了个手持的脱机烧写器,用的通用的手持机的外壳,带3.7V/500mAH聚合物锂电池,
增加RC522电路,用来读飞利浦的MifareOneS50卡的功能,用S50卡来管理脱机烧写数量的授权
芯片可烧写数量用尽时,要重新授权烧写数量时,只要刷卡,激活权限,就可以输入要烧写的数量了,这对于我目前工厂生产管理非常有用.
手持脱机烧写器谍照





本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2012-6-16 20:11:06 | 显示全部楼层
mark,可以调试吗?

出0入0汤圆

 楼主| 发表于 2012-6-16 20:14:50 | 显示全部楼层
TO,楼上,不可以调试,只是为了批量生产方便而设计的,调试的话,花85元钱买个stm8s-discovery,很好用的

出0入0汤圆

发表于 2012-6-18 01:00:19 | 显示全部楼层
楼主的老账号为什么被封了?

出0入127汤圆

发表于 2012-6-18 08:20:27 | 显示全部楼层
谢谢分享,下载看下

出0入0汤圆

发表于 2012-6-18 09:00:12 | 显示全部楼层
mark  mark mark

出0入0汤圆

 楼主| 发表于 2012-6-18 12:10:43 | 显示全部楼层
本帖最后由 whimsyB 于 2012-6-18 12:30 编辑
skyxjh 发表于 2012-6-18 01:00
楼主的老账号为什么被封了?


因为没听莫哥的,密码过于简单,上次被封的是一大批啊

我本来也坚信:这里远比混乱的现实世界美好, 并不担心有人恶搞,并不太在意论坛的密码,
毕竟不是银行卡的密码,说实在的,真实生活中用的银行卡的密码比这还简单

我原来的那个帖子,原帖83楼中提供的文件这个顶楼的一样,含sch,pcb,source,都没算酷帖
莫哥说多少天发多少酷帖子就能解,我是没这个信心啊,

出0入0汤圆

发表于 2012-6-18 13:27:53 | 显示全部楼层
支持一下,貌似还有上位机的,咋不上传一下

出0入0汤圆

发表于 2012-6-18 13:37:03 | 显示全部楼层
这个不感谢都不行啊!

出0入0汤圆

发表于 2012-6-18 13:38:18 | 显示全部楼层
希望早日可以拿回金牌账号!!

出0入0汤圆

发表于 2012-6-18 13:47:42 | 显示全部楼层
真是个好东西,原来准备弄个准备量产烧录用的。但是发现好像没ROP这个功能。
所以暂时没用。

出0入0汤圆

 楼主| 发表于 2012-6-18 22:36:36 | 显示全部楼层
futurekwong 发表于 2012-6-18 13:27
支持一下,貌似还有上位机的,咋不上传一下

兄弟,包里面有个sw的目录,里面不是有个usb-swim.exe上位机程序,难道下载到你电脑就没了?

出0入0汤圆

 楼主| 发表于 2012-6-18 22:41:42 | 显示全部楼层
kation122 发表于 2012-6-18 13:47
真是个好东西,原来准备弄个准备量产烧录用的。但是发现好像没ROP这个功能。
所以暂时没用。 ...

兄弟,开源也不是全部都要开吧,那些基本的读写代码都有了,自己理解下,加上ROP功能十分钟就足够
我自己做的手持脱机烧写器已经全部实现了,外观可以看上面的帖子的图片
你是代理stm8产品的? 你那有价格优势吗?
目前我公司这边某个型号的产品已经开始批量用STM8S103F3P6了,003的eeprom太少,只能在更低端产品中用了

出0入0汤圆

发表于 2012-6-18 23:06:28 | 显示全部楼层
请教楼主一个问题,我测试STM8S103F2P的定时器TIM1的时候,当将TOP值设置为大于0xBCFF的时候,查询方式的延时程序不管用了,不知道是我设置的问题还是芯片的问题。测试程序如下:
#include "iostm8s103.h"

#define Led  (1<<5)
#define LedOn()  PB_ODR &= ~Led
#define LedOff() PB_ODR |= Led
#define LedRev() PB_ODR ^= Led

void clkInit(void)
{
        CLK_CKDIVR = 0x00; //16MHz
}

void ledInit(void)
{
        PB_DDR |= Led;
        PB_CR1 |= Led;
        PB_CR2 &= ~Led;
        LedOn();
}

void tim1Init(void) //1Ms计数
{
        CLK_PCKENR1 |= 0x80; //开TIM1时钟
        TIM1_CR1 = 0x00; //TIM1停止计数
        TIM1_CR2 = 0x00;
        TIM1_PSCRH = 0x3E; //16000分频
        TIM1_PSCRL = 0x7F;
        TIM1_CNTRH = 0x00; //计数初始值
        TIM1_CNTRL = 0x00;
        TIM1_ARRH = 0xFF;  //计数TOP值,设置为大于0xBCFF的值后,delayMs(n)延时函数不管用 ???
        TIM1_ARRL = 0xFF;
        TIM1_IER = 0x00; //禁止中断
        TIM1_CR1 = 0x01; //TIM1开始计数
}

void uart1Init(void) //115200,N,8,1
{
        CLK_PCKENR1 |= 0x04; //开UART1时钟
        UART1_CR2 = 0x00; //禁止收发
        UART1_CR1 = 0x00; //1个起始位,8个数据位,没有校验位
        UART1_CR3 = 0x00; //1个停止位
        UART1_BRR2 = 0x0A; //16M/115200 = 8Ah
        UART1_BRR1 = 0x08;
        UART1_CR2 = 0x0C; //发送允许,接收允许
}

void uart1SendChar(unsigned char c)
{
        while(!(UART1_SR & 0x40));
        UART1_DR = c;
}

void uart1SendStrLine(unsigned char *str)
{
        while(*str)
        {
                uart1SendChar(*str++);
        }
}

void uart1SendIntLine(unsigned int d)
{
        unsigned char str[6];
        str[0] = d/10000 + '0';
        str[1] = (d%10000)/1000 + '0';
        str[2] = (d%1000)/100 + '0';
        str[3] = (d%100)/10 + '0';
        str[4] = d%10 + '0';
        str[5] = 0;
        uart1SendStrLine(str);
}

void uart1SendHexLine(unsigned char h)
{
        unsigned char str[4], tmp;
        str[0] = ' ';
        tmp = h>>4;
        str[1] = tmp<10 ? tmp+'0' : tmp-10+'A';
        tmp = h&0x0F;
        str[2] = tmp<10 ? tmp+'0' : tmp-10+'A';
        uart1SendStrLine(str);
}

void delayMs(unsigned int n)
{
        TIM1_CNTRH = 0x00;
        TIM1_CNTRL = 0x00;
        while((((unsigned int)TIM1_CNTRH << 8) + TIM1_CNTRL) < n);
}

main()
{
        _asm("sim");
        clkInit();
        ledInit();
        tim1Init();
        uart1Init();
        _asm("rim");
        uart1SendStrLine("\n初始化完成\n");
        uart1SendStrLine("整数输出测试:\n");
        uart1SendIntLine(12345);
        while (1)
        {
                delayMs(5000);
                LedRev();
                uart1SendHexLine(TIM1_CNTRH);
                uart1SendHexLine(TIM1_CNTRL);
        }
}

出0入0汤圆

发表于 2012-6-18 23:13:14 | 显示全部楼层
whimsyB 发表于 2012-6-18 12:10
因为没听莫哥的,密码过于简单,上次被封的是一大批啊

我本来也坚信:这里远比混乱的现实世界美好, 并不 ...

转贴也可以置酷的,并不一定要原创。

出0入0汤圆

 楼主| 发表于 2012-6-22 11:20:42 | 显示全部楼层
skyxjh 发表于 2012-6-18 23:06
请教楼主一个问题,我测试STM8S103F2P的定时器TIM1的时候,当将TOP值设置为大于0xBCFF的时候,查询方式的延 ...

我一般延时都直接用循环来实现,你这个要实现精确延时,我还没这么用,有时间我也测试下,看你的代码,应该是直接操作寄存器,没用官方的库

出0入0汤圆

发表于 2012-6-22 11:34:45 | 显示全部楼层
谢谢楼主

出0入112汤圆

发表于 2012-6-22 12:14:53 | 显示全部楼层
谢谢楼主!

出0入0汤圆

发表于 2012-6-22 14:04:16 | 显示全部楼层
whimsyB 发表于 2012-6-22 11:20
我一般延时都直接用循环来实现,你这个要实现精确延时,我还没这么用,有时间我也测试下,看你的代码,应 ...

AVR用习惯了,不习惯用STM的库操作,感觉用库比较繁琐,对时序要求比较高的应用只能直接操作寄存器。

出0入0汤圆

发表于 2012-6-22 15:17:37 | 显示全部楼层
谢谢楼主,改天山寨一个

出0入112汤圆

发表于 2012-6-24 15:13:32 | 显示全部楼层
烧写软件型号太少了,还有8K限制。

出0入0汤圆

发表于 2012-6-24 15:32:51 | 显示全部楼层
支持哪些型号,STM8S003行吗

出0入0汤圆

 楼主| 发表于 2012-6-26 15:53:35 | 显示全部楼层
理论上可以的,刚才定到了几片003,稍后测试下再汇报结果

出0入0汤圆

发表于 2012-6-26 17:31:56 | 显示全部楼层
大力支持STM8,学习中!

出0入0汤圆

发表于 2012-6-26 23:15:40 | 显示全部楼层
请问这怎么下载呢

出0入0汤圆

发表于 2012-6-26 23:33:12 | 显示全部楼层
这个正需要,谢谢楼主了。

出0入0汤圆

发表于 2012-6-27 06:41:43 | 显示全部楼层
正在学习中,有时间自个调着玩。

出0入0汤圆

发表于 2012-6-27 10:09:30 | 显示全部楼层
MARK,刚学,不错的资料

出0入0汤圆

发表于 2012-6-27 10:32:16 | 显示全部楼层
whimsyB 发表于 2012-6-26 15:53
理论上可以的,刚才定到了几片003,稍后测试下再汇报结果

谢谢!但上位机程序中只有2个型号。

出0入0汤圆

发表于 2012-6-27 11:33:52 | 显示全部楼层
很好的资料,学习了。

出0入0汤圆

 楼主| 发表于 2012-6-27 14:19:33 | 显示全部楼层
昨天测试了下,直接把原来用在stm8s103芯片的数据,烧写到stm8s003中,发现没什么问题,
而且还发现003带的eeprom超过128字节,测试的这片eeprom可用空间达到500字节以上
当然了,这样的超过官方认可的空间,在产品应用中还是小心为好,不推荐使用

出0入0汤圆

发表于 2012-6-27 15:14:30 | 显示全部楼层
好东西A!!

出0入0汤圆

发表于 2012-6-27 17:53:43 | 显示全部楼层
有没有读写U盘的程序

出50入0汤圆

发表于 2012-7-6 11:17:05 | 显示全部楼层
就是EEPROM区不能和FLASH区同时下载。STM8S103应该有624byte的EEPROM空间。而楼主的上位机软件上只显示256byte,是楼主只用到256吗,我测试ROP修改后也是需要重新断电后才能用

出0入0汤圆

发表于 2012-7-11 18:17:48 | 显示全部楼层
本帖最后由 zwjiong 于 2012-7-12 13:17 编辑

用了下楼主的源码~~~~发现有问题啊  发了进入序列之后 再发SWIM_SRST就会超时 而且进入序列的脉宽偏长 不知道哪里不对啊  我是直接下载源码 去掉USB部分 只留swim通讯 其他都没动
楼主上线了  能不能帮我分析分析啊

出0入0汤圆

 楼主| 发表于 2012-7-12 17:07:10 | 显示全部楼层
你可以尝试增加目标芯片供电控制电路,再次操作芯片时,控制目标芯片断电后200ms,重新进入

出0入0汤圆

发表于 2012-7-13 11:42:31 | 显示全部楼层
whimsyB 发表于 2012-7-12 17:07
你可以尝试增加目标芯片供电控制电路,再次操作芯片时,控制目标芯片断电后200ms,重新进入  ...

我现在的接法是参考你的原理图  就是目标芯片的供电跟烧写器的供电连在一起  都是3.3V

出0入0汤圆

 楼主| 发表于 2012-7-13 22:59:34 | 显示全部楼层
zwjiong 发表于 2012-7-13 11:42
我现在的接法是参考你的原理图  就是目标芯片的供电跟烧写器的供电连在一起  都是3.3V ...

我开源的PCB版本是V1.02,里面1号电路增加了目标芯片的供电切换电路,请你仔细看下原理图,关于怎么实现控制,我想你应该会的

出0入0汤圆

发表于 2012-7-16 10:01:50 | 显示全部楼层
本帖最后由 zwjiong 于 2012-7-16 11:24 编辑
whimsyB 发表于 2012-7-13 22:59
我开源的PCB版本是V1.02,里面1号电路增加了目标芯片的供电切换电路,请你仔细看下原理图,关于怎么实现控 ...


发现问题了 我把SWIM上拉电阻取的太大了  造成波形畸变了

出0入54汤圆

发表于 2012-7-17 13:38:55 | 显示全部楼层
好东西留着用

出0入0汤圆

发表于 2012-10-22 16:03:09 | 显示全部楼层
都是高手呀

出210入8汤圆

发表于 2013-3-28 22:28:40 | 显示全部楼层
好东西,马克下

出0入0汤圆

 楼主| 发表于 2013-3-29 13:58:42 | 显示全部楼层
moouse 发表于 2012-10-22 16:03
都是高手呀

都不是高手,只是肯动手,高手都没空弄这个的

出0入0汤圆

发表于 2013-7-14 08:30:25 | 显示全部楼层
准备要用STM8了,要学习一下

出0入0汤圆

发表于 2013-7-14 10:46:40 | 显示全部楼层
标记一下备用

出0入0汤圆

发表于 2013-7-14 11:26:58 | 显示全部楼层
顶起                                         

出0入53汤圆

发表于 2013-7-31 19:08:18 | 显示全部楼层
很不错谢谢分享

出0入0汤圆

发表于 2013-7-31 19:21:08 | 显示全部楼层
精神可嘉,顶起

出0入0汤圆

发表于 2013-8-7 18:14:44 | 显示全部楼层
请教whimsyB

在STM32这边, SWIM脚可以用一个GPIO来做, 又做输出又做输入, 原理上讲是说得过去的;
但楼主的设计中, SWIM占用了三个IO口, 一个输出, 二个输入,  想不明白是什么用意啊;

SWIM我用一个IO来做, 一直不成功,
STM32给STM8发送"进入序列(SWIM entry sequence)" , MCU都没有回应;
用ST-LINK工具观测, 发送"进入序列" 后, 大约2秒后, STM8会将SWIM脚拉低一下,
但SWIM协议中说的是 会回送一个脉冲串, 128个HSI clock; ST-LINK的实际波形怎么和协议中不同啊, 又是一个不解啊???

协议第10页 内容如下:
3.
After the entry sequence, the SWIM enters in SWIM active state, and the HSI oscillator
is automatically turned ON.
4.
After this delay, the SWIM sends a synchronization frame to the host.
Synchronization frame description: A synchronization frame of 128 x HSI clock
periods with the SWIM line at 0 is sent out by the MCU device to allow for the
measurement of the RC by the debug host. An advanced debug host can re-calibrate
its clock to adapt to the frequency of Internal RC.

出0入0汤圆

 楼主| 发表于 2013-8-10 17:36:50 | 显示全部楼层
本帖最后由 whimsyB 于 2013-8-10 17:51 编辑
car_software 发表于 2013-8-7 18:14
请教whimsyB

在STM32这边, SWIM脚可以用一个GPIO来做, 又做输出又做输入, 原理上讲是说得过去的;


有关swim部分,我的代码是从versaloon移植的

因为这个代码,也过去很久了,印象已经模糊了,

而且我记得,第一板的硬件电路就是抄的stm8s discovery板上的stm32电路来做的,里面就没用多个IO口,

想在versaloon代码基础上改成单线的,也没成功,后面由于时间的原因,没有在进一步研究,就直接用versaloon的代码了

他这个代码,最有意思的地方,我感觉是用DMA来处理数据

出0入0汤圆

发表于 2013-8-10 18:35:48 | 显示全部楼层
好东西啊, 一定要顶

出0入0汤圆

发表于 2013-11-5 09:45:31 | 显示全部楼层
mark 一下     

出0入0汤圆

发表于 2013-11-19 16:29:56 | 显示全部楼层
我的是STM8S208S6的  为什么到给flash写入0x01 0xfe的时候提示失败呢

出0入0汤圆

发表于 2014-1-4 17:57:57 | 显示全部楼层
参考参考。

出0入17汤圆

发表于 2014-1-4 18:32:57 | 显示全部楼层
EP888  某宝上卖1000多啊

出0入0汤圆

发表于 2014-1-5 15:32:41 来自手机 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-1-6 10:35:32 | 显示全部楼层
thanks for share

出0入0汤圆

发表于 2014-6-28 23:19:37 | 显示全部楼层
very good job!

出0入0汤圆

发表于 2014-10-21 14:41:58 | 显示全部楼层
感谢感谢,我下载了

出0入0汤圆

发表于 2014-10-21 15:04:43 | 显示全部楼层

谢谢楼主分享

出0入0汤圆

发表于 2014-10-21 20:36:31 | 显示全部楼层
牛人。顶

出0入0汤圆

发表于 2015-8-24 09:52:27 | 显示全部楼层
mark ……
谢谢楼主分享……

出0入0汤圆

发表于 2015-9-17 15:40:19 | 显示全部楼层

谢谢分享

出0入0汤圆

发表于 2016-8-8 17:48:17 | 显示全部楼层
楼主这个硬件有没有做好在淘宝上卖?

出0入0汤圆

 楼主| 发表于 2016-8-14 21:25:16 | 显示全部楼层
inkfish321 发表于 2016-8-8 17:48
楼主这个硬件有没有做好在淘宝上卖?

没有,你有兴趣可以自己打板

出0入0汤圆

发表于 2016-9-22 22:38:58 | 显示全部楼层
whimsyB 发表于 2016-8-14 21:25
没有,你有兴趣可以自己打板

http://www.amobbs.com/forum.php? ... 34777&mobile=no

公司现在买的和当年的这哥们这图片几乎一样
甚至广告词都写着只需8秒。

出0入0汤圆

发表于 2016-11-14 19:40:10 | 显示全部楼层
yy8047 发表于 2012-6-16 09:11
多谢LZ,终于可以下载了

能否分享一下经验。我QQ:867051287

出0入0汤圆

发表于 2016-11-21 18:38:43 | 显示全部楼层
秽土转生 发表于 2016-11-14 19:40
能否分享一下经验。我QQ:867051287

呵呵,我是说LZ分享的文件可以下载

出0入0汤圆

发表于 2017-11-16 17:04:17 | 显示全部楼层
zwjiong 发表于 2012-7-11 18:17
用了下楼主的源码~~~~发现有问题啊  发了进入序列之后 再发SWIM_SRST就会超时 而且进入序列的脉宽偏长 不知 ...


楼主我用的是(基于STM32的STM8脱机编程器)开源那个代码~~~~发现有问题  发了进入序列之后 再发SWIM_SRST就会超时  不知道哪里不对   
原理图和开源那个一样,SWIM接680欧上拉电阻
程序唯一不一样的就是SWIM设置的是推挽输出,因为设置了开漏输出拉不高
楼主上线了  能不能帮我分析分析啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-24 13:58

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

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