打印

探讨STM32ISP及STM32波特率自动识别技术(菜农)

[复制链接]
21290|37
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2008-7-13 11:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
探讨STM32ISP及STM32波特率自动识别技术(菜农)

STM32之ISP也同其他ISP一样采用从机(STM32)波特率自动识别技术.

它采用非常“不理智”的偶校验(一个字节前面加一位校验位使得“1”的个数保持为偶数),菜农对其不

慎满意~~~

为什么???...(俺不说)

识别码0x7F,即S 1111 1110 P T (其中S为起始位,P为校验位,T为停止位)

或: 0 1111 1110 1 1
可以“看出”它采用“7:1”识别模式。

即D0D1D2D3D4D5D6的脉宽是S脉宽的7倍.
或D0D1D2D3D4D5D6的脉宽是D7脉宽的7倍.

波特率自动识别技术有很多种,其中最常见的是定长对变长波特率自动识别技术

STM32的波特率自动识别技术为PC端为定长波特率(可变化但波特率保证正确)
STM32侧由于事先不知主机(PC)的波特率大小, 故其必须测量PC的波特率信号脉宽。

从机测量波特率信号脉宽也有多种,最常见的也是最蠢笨的脉宽测量.

从前面所述“7:1”识别模式可以看出:

主机发送识别码0x7f后,从机侧的S被拉低为0,故可对STM32产生中断,即同步开始。
但由于中断要占用MCU的中断向量表部分,故ISP程序为不影响用户的
代码空间一般采用IO查询+定时计数模式.

STM32的大鼻子老外的脑浆也是白色的,故跑不出此套路~~~如同NXP等~~~

菜农的脑浆是"红色"的~~~故肯定不会采用此“低级趣味”的方法~~~

让俺会这样定义(设计):
1.主机以某一固定波特率表中正确的波特率间隔循环发送识别码0x7f.
2.从机(假设主频已漂移)先用正常主频的波特率表中循环取出正确的波特率并
  间隔地从硬件端口读取接收的数据直到接收到识别码0x7f为止。
  若主频未漂移,那么循环表中所有波特率必然收到识别码0x7f,自适应过程结束.
  否则,上下微调波特率表中的所有时间常数则最后必然找到识别码0x7f.

菜农在GPS上就采用这种波特率自动识别技术,因为GPS模块是以某一固定的波特率
“没命的发送NEMA0813语句”,这就满足了“主机循环发送识别码”的协定。

波特率自适应就说完了~~~开始分析STM32的自动ISP过程吧~~~

首先ISP必须要有个进入开关设定,即Boot1/Boot0的设置.

我们可以简化为Boot1恒为1,Boot0为进入开关. 
STM32的Boot0为: 1---运行状态  0---ISP状态

激活ISP状态由Reset信号完成,这样就保证了在任意时刻只能在一种条件下工作的约定(公理)

所以我们只需控制好Boot0和Reset这2个信号即可实现自动ISP~~~

有很多人不满菜农的自动ISP行为~~~谁让俺学的是自控呢???

N十年前俺在农校的第1堂课在笔记本上写的第1行字(可能也是当时的革命誓言吧):

让人类从繁重地危害身心健康的体力劳动中解放出来!!!

多年来俺一直想着这个“誓言”和“梦想”~~~从不违犯~~~所以俺设计的产品可以“笑傲江湖”十数年~~~

言归正传.试想一下:

当产品完成设计交付用户时,机壳肯定是封死的,除非是开发板之类的俺无话可说~~~

但是搞产品要想“笑傲江湖”十数年就必须考虑任何微小的细节。

现在是网络时代,USB转串口技术的成熟使都认为的工控通讯用串口是小儿科的歪论破灭!!!

可以看到各厂家对串口的重新定位,特别是多串口产品,像ST就比较“超前”~~~

随着技术的进步和用户的需求,远程诊断和ISP肯定是个方向.

自动ISP可以解决不愿给源码又不愿付差旅费的烦恼,而且也从ISP软件升级后延长产品的寿命.

ISP过程实际就是发送接收方各自的攻防体系的建立和实现过程:

主机发送信号,从机接收信号并应答,反之亦然.

小朋友和网友说ST的ISP有时很难联机通讯,俺开始玩STM32时也觉得如此,后来还好些。

主要是菜农近来的打击目标侧重在DSP上,就一直没追究其问题的所在.

不过对STMISP软件未带自动ISP很是不满~~~所以当菜鸟时就与香主“盲谈”了自动ISP的构建.

俺有个不好的习惯~~~ 一但俺认证可行后,只要不搞产品就不会去急迫地实施---虽然可行...

小朋友说网友说俺忽悠人~~~冤枉菜农了~~~

因为俺无法抽身~~~俺不愿放过用HotBios叫板TI的DSP/BIOS的大好机会~~~

HotComm是菜农三剑客之一,俺存放了一年一直舍不得就压在了“箱底”不愿见阳光~~~

因为它设计的目标就是倒塌地球上一切的串口控件~~~

这次HotComm要为俺在STM32上的“忽悠”赎罪卖身了~~~心痛+悲痛之中...

(可能有些人会说菜农太狂妄~~~正如VxWorks专家吴旭光教授说俺颠覆OS理论太狂一样~~~有空

他要到他那里去切磋~~~)

又跑题了~~~

仔细分析STM32ISP的数据流向,可以找到很规律的关系。

不外乎你攻我守,你守我攻。

但如果攻守失衡,必然带来死机的结果~~~

现在做到的是如何解脱死机(死锁)???---只有Reset!!!

现在看到自动ISP的好处和威力了吧---不怕死,就怕死了救不活!!!

(小朋友名句---功夫在高,也怕菜刀)菜农想做到---菜刀砍过,人鬼不倒~~~才是高~~~

自动ISP电路很简单,俺和小朋友先在EK...忘了板名和厂家了~~~就是那个199的~~~

LPCARM采用DTR->Reset,RTS->ISP. 所以俺就抄袭这个习俗吧~~~但愿NXP的大鼻子别告俺~~~

由于DTR/RTS是232电平,即-15V~+15V, 一般在+-10V左右。

一般采用RS232芯片实现232/TTL电平转换,也可用二极管、三极管

但要注意电平的钳位及限流问题。

RS232内部有2入2出。

而作为主机,信号方向有3出1入.

即TX(STM32的RXD),DTR(RST),RTS(BOOT0)为输出信号, RX(STM32的TXD)为输入信号.

RS232芯片一般只连接RXD/TXD这2个信号,故还剩1入1出未用.

将DTR接入RS232电平转换芯片,那么STM32的RST就得到了正常的电平控制。

考虑硬件存在线与问题,故:RS232的TTL输出加一只二极管D1到RST.

再考虑Boot0的连接问题:

由于RTS是232的+-10V,那么肯定不能直接和Boot0连接。

由于Boot0我们可以把它结果100K电阻(厂家标注)上拉至VCC.(STM32的运行状态)

所以我们只需在Boot0上施加低电平即可设定ISP模式.

故可用二极管D2单向取-10V即可,考虑STM32不能承受负电压,故可在接二极管D3到地GND(VSS)

来将RTS钳位在-0.7V.

由于D3的钳位导致了RTS信号过流,故必须用串接10K左右的电阻R1来限流。

到此自动ISP硬件电路的改造过程以付出D1,D2,D3和R1的“代价”轻松搞定~~~

若搞产品可继续:在Boot0端再串接二极管D4来消除D3钳位造成的负压-0.7V.

在Boot0,RST上各接102(或103,104)电容防止信号误触发.

自动ISP硬件“电路图”如下:
                                        +-->VCC
                                      100K(板子自带)
                                        |
           (负极)   (正极)              |
RTS---->--R1--> -D2+ -------+-- (-D4+)--+--> STM32_Boot0  (注D4可不接,短路或加电阻即可)
(DB7)                       |   
                            -(负极)
                            D3  
                            +(正极)
                            |
                            =
                           GND

(DB4)                   (负极)   (正极)
DTR---->--RS232------------> -D1+ -->STM32_RST
       (232入)   (TTL出)

一般DTR/RTS未接PC时都为-10V左右,所以拔掉也不能影响STM32的

正常工作.

由于RS232内部实际为反向器,故:

DTR = -10V时RS232输出高电平到RST,即STM32正常运行状态.

RTS = -10V时经过二极管的单向导电特性,Boot0为0进入ISP状态.

但是注意: 如果PC未介入,RTS上不会有电压信号,故Boot0依然为1

所以RTS的工作重点只是如何拉低Boot0上的电压!!!

若无PC谈何拉低Boot0???

所以PC脱机后该电路也不会影响STM32的原工作状态的~~~

相反PC ISP完成后(假使还在ISP状态)再脱机,STM32会自动回到运行状态~~~

这-----就是自动ISP的"真谛"所在~~~

菜农HotPower@126.com  2008.7.13 11:30 于雁塔菜地
相关链接:http://www.hotpower.org/
沙发
来与君| | 2008-7-13 12:27 | 只看该作者

好多字

顶后再看。

使用特权

评论回复
板凳
hotpower|  楼主 | 2008-7-13 12:31 | 只看该作者

这篇“作文”真累人呀~~~好多"鸟语"~~~俺那干儿子又要骂街了

使用特权

评论回复
地板
hq_y| | 2008-7-13 12:40 | 只看该作者

呵呵还好,俺没有看到鸟语~~~~~~`要不就是已经自动翻译了~~~~

先收藏起来再仔细学习~~~~~```
其实远程ISP是产品最需要的
可惜菜农不做atmel~~~~~~

使用特权

评论回复
5
hotpower|  楼主 | 2008-7-13 12:59 | 只看该作者

哈哈~~~菜农的“野性”使他不敢做多---做就要倒塌一大片~~~

管他什么鼻子什么眼的~~~

“树敌过多”也是烦恼...

使用特权

评论回复
6
hotpower|  楼主 | 2008-7-13 13:01 | 只看该作者

哈哈~~~说的这里菜农突然宣布HotISP将支持远程下载~~~

不过先让小朋友玩~~~“大让小”也是一种“美德”~~~

使用特权

评论回复
7
hotpower|  楼主 | 2008-7-13 13:08 | 只看该作者

哈哈~~~HotCRC也要随着HotISP远程下载登场了~~~

俺等着像XWJ这样的解密高手~~~

不过串口拦截/监听软件会在PC-STM32上露馅的~~~

所以俺只负责网口到HotISP之间的安全~~~

如果应用菜农的“二次加密技术”---ISP后联机注册+“解压缩”

哈哈~~~让那些逆向者晕吧~~~

记住:不要做贼,做贼就要做贼偷贼~~~

使用特权

评论回复
8
hq_y| | 2008-7-13 13:13 | 只看该作者

俺觉得这个东西,可以考虑打包出售~~~~~~~~~

至少俺需要,俺想买一个现成的~~~~~~~~~`这样省下来大量的差旅费和时间~~~~~~~
还有产品的保密问题~~~~~~~~`

如何远程?
网络?
还是间接通过pc直接远程控制?
好像atmel不支持串口ISP

使用特权

评论回复
9
hotpower|  楼主 | 2008-7-13 13:16 | 只看该作者

哈哈~~~农忙之中~~~授课到此~~~脑浆留着攻击TI~~~

使用特权

评论回复
10
phoenixmy| | 2008-7-13 13:22 | 只看该作者

呼呼



刚加完两个插件急忙赶过来看看~~~~~~~~~~~~~~~~


首页有专门的图片显示区了,呵呵

使用特权

评论回复
11
phoenixmy| | 2008-7-13 13:35 | 只看该作者

咋还有远程下载?


不过把RTS和DTR一连接后的确可以完成自动下载了,
如果烧写用PC机再通过网线和远程控制PC机相连的话,
再通过网络控制ISP程序运行,那么~~~~~~~~~~~~~~~~~~~~~~~~··


这么看来的确是很方便,不过ISP客户端要加网络接口程序了
恐怕又要加班,囧

使用特权

评论回复
12
hq_y| | 2008-7-13 14:08 | 只看该作者

一个是次数限制,可以远程发给对方,但是下载1~2次之后自

使用特权

评论回复
13
phoenixmy| | 2008-7-13 14:11 | 只看该作者

估计会开源~~~~~~~~·



呵呵

使用特权

评论回复
14
hotpower|  楼主 | 2008-7-13 14:47 | 只看该作者

晕~~~菜贩子~~~

都不考虑“运输成本”~~~

使用特权

评论回复
15
hotpower|  楼主 | 2008-7-14 00:25 | 只看该作者

哈哈~~~发裤子了...

哈哈~~~俺的水文下流不~~~

实在没时间玩STM32~~~

不过明天小朋友开始攻击ISP~~~俺在一旁督战~~~

下午又给他出了道难题---加网络远程ISP~~~

哈哈~~~HotComm很黄很暴力~~~

压了一年箱底...奉献给STM32吧~~~

一个人乐和也没意思~~~大家开心才好~~~

哈哈~~~HotComm同时击败了MSComm和SPComm~~~

再不见阳光实在对不起地球人~~~虽然俺的脑浆不属于人类~~~



相关链接:https://bbs.21ic.com/club/bbs/list.asp?boardid=11&t=3031361

使用特权

评论回复
16
mylovetus| | 2008-7-14 12:24 | 只看该作者

典型自恋狂

使用特权

评论回复
17
hotpower|  楼主 | 2008-7-14 13:36 | 只看该作者

哈哈~~~有理不在声高~~~楼上也表演几手~~~

使用特权

评论回复
18
id001| | 2008-7-14 15:19 | 只看该作者

一个人的精彩


还挺好听~~~~~

大伙也欣赏下吧~~~~~

使用特权

评论回复
19
zuoyou| | 2008-7-14 16:24 | 只看该作者

re

真正的波特率自动识别技术是不需要特定关键字的

使用特权

评论回复
20
香水城| | 2008-7-14 16:32 | 只看该作者

STM32的定时器有一个输入捕获功能,还有一个PWM输入功能

都可以用于进行UART波特率自动识别,而且可以比使用中断方便且准确。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1460

主题

21619

帖子

506

粉丝