单片机解密技术

专业单片机解密,IC解密,芯片解密公的公司

STM8S之 SWIM调试

这段时间研究了下Stm8的Swim接口协议,下面将自己的一些见解和大家分享。(在此感谢有如此好的平台)

SWIM接口干嘛的,就不多说了,下面直接进入主题:SWIM接口分析心得:

SWIM接口协议由三条基本指令组成

SRST----000 复位指令、ROTF------001读指令、WOTF------010写指令
     每一段数据由        数据方向+数据+奇偶校验+ 应答          
     数据方向:0表示主机向从机、1表示从机向主机
     数据:     通过不同的低电平时间表示0还是1,每八位一组
     奇偶校验:通过数据位中1的个数是奇数还是偶数觉定
     应答:        若主机向从机发送数据则由从机发出应答,反之由主机发出应答。
     由若干段数据组成一帧,如写数据帧 由   指令+ 字节数+目标地址+数据 组成

单片机上电后SWIM接口处于OFF模式,要想让其进入活动模式需要发送特定的数据序列,即为4个1K方波+4个2K方波如下图: 

写入时序如下:

例:当SWIM进入到活动模式后,主机向从机SWIM_CSR寄存器写入0xA0,以使SWIM接口可以访问整个内存储器空间并且屏蔽内部复位源,其时序如下:

就这样,一个字节的数据就写入了0x007F80地址,也就是SWIM_CSR。连续写入也同样的道理,只是后面跟随的数据字节数不止一个。

读出时序如下:

例:读0x007F80地址的时序如下:

复位时序如下:复位时序较为简洁
 
以上就是SWIM基本时序。
从总体上说,通过SWIM烧录程序的过程是:

1、使能SWIM(进入时序)

2、使能SWIM控制(SWIM_CSR)

3、解除FLASH保护(FLASH_DUCK

4、使能标准块编程(FLASH_CR2)(STM8S103为64字节一块,视芯片决定)

5、写入一块字节的数据(从0x008000开始)

6、读Flash当前状态是否编程完成(FLASH_IAPSR)

7、完成,则重复4-6,没完成则重复6

8直至所有程序字节都写入完成

9、读出程序字节进行校验。
以上就是大致的SWIM时序解析。写的寥寥草草,抛砖引玉。

目前完成了SWIM进入时序和写时序,读时序出了点问题。。。。。。。


从机返回的数据这里出错了,,,,这是怎么回事??
问题解决,,,,由于没有加上拉电阻导致,加了个上拉电阻便能正确回复   


芯片之家

长按左侧二维码,识别关注




cache
Processed in 0.008746 Second.