STM8-SWIM通信协议.pdf

上传人:wj 文档编号:14651406 上传时间:2023-06-25 格式:PDF 页数:19 大小:1.01MB
下载 相关 举报
STM8-SWIM通信协议.pdf_第1页
第1页 / 共19页
STM8-SWIM通信协议.pdf_第2页
第2页 / 共19页
STM8-SWIM通信协议.pdf_第3页
第3页 / 共19页
STM8-SWIM通信协议.pdf_第4页
第4页 / 共19页
STM8-SWIM通信协议.pdf_第5页
第5页 / 共19页
STM8-SWIM通信协议.pdf_第6页
第6页 / 共19页
STM8-SWIM通信协议.pdf_第7页
第7页 / 共19页
STM8-SWIM通信协议.pdf_第8页
第8页 / 共19页
STM8-SWIM通信协议.pdf_第9页
第9页 / 共19页
STM8-SWIM通信协议.pdf_第10页
第10页 / 共19页
STM8-SWIM通信协议.pdf_第11页
第11页 / 共19页
STM8-SWIM通信协议.pdf_第12页
第12页 / 共19页
STM8-SWIM通信协议.pdf_第13页
第13页 / 共19页
STM8-SWIM通信协议.pdf_第14页
第14页 / 共19页
STM8-SWIM通信协议.pdf_第15页
第15页 / 共19页
STM8-SWIM通信协议.pdf_第16页
第16页 / 共19页
STM8-SWIM通信协议.pdf_第17页
第17页 / 共19页
STM8-SWIM通信协议.pdf_第18页
第18页 / 共19页
STM8-SWIM通信协议.pdf_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

STM8-SWIM通信协议.pdf

《STM8-SWIM通信协议.pdf》由会员分享,可在线阅读,更多相关《STM8-SWIM通信协议.pdf(19页珍藏版)》请在冰点文库上搜索。

STM8-SWIM通信协议.pdf

SmallmountSTM8应用笔记应用笔记.1STM8SWIM通信协议和调试模通信协议和调试模块块STM8的SWIM通信协议(communicationprotocol)和调试模块介绍本手册为需要建立STM8微控制器系列的编程,测试或调试工具的开发者而写。

它解释了STM8内核的调试结构。

STM8的调试系统包括以下两个模块:

DM:

调试模块;SWIM:

单总线接口模块。

相关文档(Relateddocumentation):

HowtoprogramSTM8SandSTM8AFlashprogrammemoryanddataEEPROM(PM0051)(STM8Aversionisnotpublishedyet)HowtoprogramSTM8LFlashprogrammemoryanddataEEPROM(PM0054)专业术语:

DM:

DebugModeSWIM:

SerialWireInterfaceModuleWFI:

WaitForInterruptWFE:

WaitForEventSmallmountSTM8应用笔记应用笔记.2STM8SWIM通信协议和调试模通信协议和调试模块块目录1.调试系统概述.12.通信层.23.单总线接口模块(SWIM).33.1操作模式.33.2SWIM入口序列.33.3位格式.53.4SWIM通信协议.63.5SWIM命令.73.6SWIM通信复位.83.7CPU寄存器访问.83.8在停止模式下的SWIM通信.93.9物理层.93.10STM8的SWIM寄存器.94.调试模块(DM).124.1介绍.124.2主要特点.124.3调试.124.4断点解码表.144.5软断点模式.144.6时序描述.144.7中止(abort).154.8数据断点.154.9指令断点(Instructionbreakpoint).154.10单步模式.164.11应用笔记.164.12DM寄存器.165.常见问题解答.175.1时序相关.17SmallmountSTM8应用笔记应用笔记.1STM8SWIM通信协议和调试模通信协议和调试模块块1.调试系统概述调试系统概述STM8的调试系统接口允许一个调试或编程工具,通过一根基于开漏接口的单总线双向(bidirectional)通信线连接到MCU。

它提供了非抢占式(non-intrusive)读写方式去访问RAM和外设,在程序执行期间(duringprogramexecution)。

方框图(Theblockdiagram)如所示。

调试模块使用设备中的两个内部时钟源,LSI低速内部时钟(通常范围为20KHz-200KHz,视产品而定)和HSI高速内部时钟(通常范围为10MHz-25MHz,视产品而定)。

必要时,时钟会自动启动。

SmallmountSTM8应用笔记应用笔记.2STM8SWIM通信协议和调试模通信协议和调试模块块2.通信层通信层SWIM是一个基于异步(asynchronous),强灌电流(highsink)(8mA),开漏,双向通信(bidirectionalcommunication)的单总线接口。

当CPU正在运行,出于调试目的,SWIM允许非抢占式(non-intrusive)读写访问,去执行on-the-flay到RAM和外设寄存器。

此外(Inaddition),当CPU停止(stalled),SWIM允许读写访问,去执行MCU存储空间的其它部分(数据EEPROM和程序存储器)。

CPU寄存器(A,X,Y,CC,SP)也可以被访问。

这些寄存器被映射在存储器中,而且可以以相同的方式去访问。

仅仅当SWIM_DM位置一时,寄存器,外设和存储器才被访问。

当系统处于停止(HALT),WFI或者读保护模式,SWIM_CSR寄存器的NO_ACCESS标志将置一。

在这种情况下,禁止(itisforbiddento)执行任何的访问,这时因为部分设备可能没有时钟驱动,读访问返回无用的数据(garbage),或者写访问不成功。

SWIM可以执行MCU软件复位操作SWIM引脚可以作为标准IO口用于MCU的目标应用,如果你也想将他用于调试,IO口功能将会有一些限制(somerestrictions)。

最安全的方式是在PCB设计时提供选择项(astrapoption)。

SmallmountSTM8应用笔记应用笔记.3STM8SWIM通信协议和调试模通信协议和调试模块块3.单总线接口模块单总线接口模块(SWIM)3.1操作模式操作模式上电复位后,SWIM复位,并且进入它的OFF模式。

1.OFF:

在此模式下,SWIM引脚一定不能在应用中用作I/O口。

等待SWIM入口序列(entrysequence)或者应用软件打开I/O模式。

2.I/O:

软件应用程序设置内核配置寄存器(CFG_GCR)的SWIM禁能位(SWD)(SWIMdisable),可以进入此状态。

在此状态下,用户应用程序可以使用SWIM引脚作为标准I/O引脚,仅有的缺陷是无法使用该引脚的内置(bulit-in)调试功能。

一旦复位(Incaseofareset),SWIM重新返回OFF模式。

3.ACTIVE:

当处于OFF状态,SWIM引脚检测到一个特殊的序列,可以进入此模式。

在此状态下,通过SWIM引脚,主设备工具使用3个命令去控制STM8。

(SRSTSystemReset,ROTFReadOnTheFly,WOTFWriteOnTheFly)注意:

请注意,SWIM可以被设置为Active,而且可以在设备处于复位状态(NRST引脚被强制拉低)时进行通信。

3.2SWIM入口序列入口序列POR(上电复位)后,SWIM一直处于OFF模式,SWIM引脚采样用于检测入口序列。

要实现这一机制,内部低速RC时钟在POR后自动运行,并且在SWIM处于OFF模式下一直保持。

如果SWIM引脚检测到入口序列之前,SWDbitisset,SWIM将工作在I/O模式。

一旦SWIM处于ACTIVE模式,写该位是无效的,并且SWIM仍然处于ACTIVE模式。

如果应用程序使用SWIM引脚作为I/O模式,应用程序会在软件代码的初始化部分将SWIM引脚设置为I/O模式(一般地,会在复位后执行)。

尽管在这种状态下,仍然有可能SmallmountSTM8应用笔记应用笔记.4STM8SWIM通信协议和调试模通信协议和调试模块块使得SWIM引脚处于ACTIVE模式,方法是:

强制拉低RESET引脚,保持RESET引脚为0持续(duration)到SWIM入口序列完成。

在复位期间或者应用程序运行期间,只要SWIM处于OFF模式,任何时候,SWIM入口序列都会被检测。

如果SWIM引脚和复位引脚都被复用(aremultiplexed)为I/O口,那么进入SWIM的ACTIVE状态的方法是:

MCU设备掉电,再上电,并且保持MCU复位直到SWIM入口序列发送结束。

SWIM激活时序图如所示,图中每一段的描述如下。

1.为了激活SWIM,SWIM引脚必须强制拉低16s(在HSI下最少64个脉冲)。

2.第一个脉冲后(总线当前为0),在SWIM的ACTIVE状态入口处,SWIM检测一个特殊序列以保证鲁棒性(guaranteerobustness).SWIM入口序列式:

4个1KHz的脉冲,紧接着4个2KHz的脉冲。

序列的频率很容易被内部RC检测到。

入口序列如所示。

注意序列以SWIM引脚拉高作为开始和结束标志。

3.入口序列后,SWIM进入ACTIVE状态,HSI振荡器(oscillator)自动开启。

4.延时过后,SWIM发出一个同步帧给主机。

同步帧描述:

MCU的SWIM总线输出低电平,维持128个HSI时钟脉冲表示发出一个同步帧,用于调试主机对RC的测量。

一个高级调试主机可以重新校准(re-calibrate)它的时钟,来适应(adapt)MCU内部RC的频率。

5.开始SWIM通信之前,SWIM线必须释放为高电平,以保证SWIM准备好通信(至少维持300ns)。

6.写0A0H到SWIM_CSR寄存器:

Bit5置一,允许访问整个存储器和SRST命令Bit7置一,掩盖内部复位源7.释放加载配置字节的序列的复位。

等待1ms以保持稳定。

8.一旦配置字节加载发生,且稳定时间到,CPU分段(inphase8):

STM8S停止,且HSI=16MHz(详见STM8S数据手册)SWIM时钟为HSI/2=8MHzSWIM在激活状态,在低速位格式(如所示)SmallmountSTM8应用笔记应用笔记.5STM8SWIM通信协议和调试模通信协议和调试模块块3.3位格式位格式位格式采用的是一种归零格式(Return-To-Zeroformat),它允许位同步。

两个通信速率可选。

在SWIM激活状态下,选择的是低速通信速率。

通过设置SWIM_CSR寄存器的HS位置一,选择高速通信速率。

当在复位阶段(duringtheRESETphase)进入SWIM模式时,配置项可能已经从非抢占式存储器中加载到相应的寄存器中。

任何内部或外部的复位都会触发加载配置项。

为了确保适当的系统行为,HS位直到配置项加载完成后才能置一。

在配置项加载结束后,SWIM_CSR寄存器的HSIT位被硬件置一。

3.3.1高速位格式高速位格式10个HSI振荡器脉冲生成一位。

位格式为:

2个时钟脉冲的0电平,接着8个时钟周期的1电平。

8个时钟脉冲的0电平,接着2个时钟周期的1电平。

当SWIM收到一包数据时,它将解码:

1:

检测到小于或等于4个连续低电平。

0:

检测到大于或等于5个连续低电平。

3.3.2低速位格式低速位格式22个HSI振荡器脉冲生成一位。

位格式为:

2个时钟脉冲的0电平,接着20个时钟周期的1电平。

20个时钟脉冲的0电平,接着2个时钟周期的1电平。

SmallmountSTM8应用笔记应用笔记.6STM8SWIM通信协议和调试模通信协议和调试模块块当SWIM收到一包数据时,它将解码:

1:

检测到小于或等于8个连续低电平。

0:

检测到大于或等于9个连续低电平。

3.4SWIM通信协议通信协议当处于ACTIVE模式时,通信可以被主机或设备初始化。

每一个字节或命令之前都有一位头,用于仲裁主机和设备发起的通信。

主机的头是“0”,由于是开漏结构,可用于在仲裁时取得优先权。

若无数据传输,主机就可以开始传输。

主机发送的每个命令有以下组成:

1个命令(ROTF,WOTForSWRST)包含:

头:

1Bit“0”b2-b0:

3-bit命令pb:

奇偶位(paritybit):

b(i)异或ack:

应答位(1bit“1”)。

若检测到错误或为准备好,接收者必须发送非应答(NACK:

1bit“0”)若干数据包(WOTF下)包含:

头:

1Bit“0”b2-b0:

8-bit数据pb:

奇偶位(paritybit):

b(i)异或ack:

应答位(1bit“1”)。

SmallmountSTM8应用笔记应用笔记.7STM8SWIM通信协议和调试模通信协议和调试模块块3.5SWIM命令命令当总线空闲或者设备发送某个数据字节后,主机可以发送一个命令。

发送命令后,主机释放总线。

当SWIM准备好回应命令时,它启动(initiates)转换。

如果SWIM正在相应一个命令,主机发出新的命令,上个命令被取消,且新命令被解码,除WOTF外。

三个命令是有效的(available)。

如所示。

3.5.1SRST:

系统复位系统复位格式:

一个命令从主机到目标板参数:

无只有SWIM_CSR/SWIM_DM位置一,SRST命令产生一个系统复位。

3.5.2ROTF:

readonthefly格式:

一个命令+要读的字节数+三个字节的地址。

参数:

N8位的将要读取的字节数(1255)E/H/L即将访问的24位地址D从存储空间读取的字节如果主机发送一个NACK信号,设备将再次发送相同的字节。

如果SWIM_DM位被清零,ROTF只能在SWIM内部寄存器被操作。

3.5.3WOTF:

writeonthefly格式:

一个命令+要写的字节数+三个字节的地址。

SmallmountSTM8应用笔记应用笔记.8STM8SWIM通信协议和调试模通信协议和调试模块块参数:

N8位的将要写的字节数(1255)E/H/L即将访问的24位地址D将要写到存储空间的字节当字节Di+1到达,如果字节Di仍未写完成,那么Di+1之后紧跟着NACK。

在这种情况下,主机必须再次发送Di+1知道收到应答信号ACK。

对于最后一个字节,当一个新命令发生,而最后一个字节未写完成,那么,新命令将收到NACK,且不会被解释(account)执行。

如果SWIM_DM位被清零,WOTF只能在SWIM内部寄存器被操作。

3.6SWIM通信复位通信复位在通信期间的问题,主机可以通过发送128个HSI时钟周期来复位通信。

如果SWIM检测到SWIM引脚拉低超过64个HIS时钟周期,它将复位通信状态机,并且打开低速模式(SWIM_CSR.HS-0)。

这是为了改变内部RC振荡器的频率。

(ThisistoallowforvariationinthefrequencyoftheinternalRCoscillator.)为了响应(Inresponseto)通信复位,SWIM将发送同步帧拉低DBG引脚持续128个HIS振荡器时钟。

3.7CPU寄存器访问寄存器访问CPU寄存器被映射在STM8存储器中,且这些寄存器可以通过ROTF和WOTF命令来被直接读或写。

当CPU处于停滞状态时,对CPU寄存器的写操作才被允许。

为了刷新指令解码阶段,你必须在为程序计数器(PCE,PCH,PCL)写入新值后,将DMcontrol/status寄存器的FLUSH位置一。

SmallmountSTM8应用笔记应用笔记.9STM8SWIM通信协议和调试模通信协议和调试模块块3.8在停止模式下的在停止模式下的SWIM通信通信为了保持调试主机的通信联系,MCU进入停滞模式时,HIS振荡器仍打开。

这就意味着当SWIM处于激活状态下,停滞模式的功率消耗测量是没有意义的。

当系统处于停滞模式,WFI或读保护模式下,SWIM_CSR寄存器的NO_ACCESS位被置一。

这就意味着在此情况下总线不能被访问。

SWIM_CSR寄存器的OSCOFF位通常用于关闭振荡器。

在此状态下,只要设备处于停滞模式,且SWIM引脚拉高,那么调试机制失效。

恢复(recover)调试机制的唯一方式是诱发(induce)SWIM引脚产生一个下降沿:

这将使能HIS振荡器。

3.9物理层物理层通信期间,SWIM引脚将配置为伪开漏模式。

当该引脚输出0时,它将能经受8mA的灌电流。

SWIM总线的外部上拉应该有以下要求:

SWIM的最大上升时间tr应该小于1个采样周期(100ns+/-4%)。

3.10STM8的的SWIM寄存器寄存器3.10.1SWIM控制状态寄存器控制状态寄存器(SWIM_CSR)SmallmountSTM8应用笔记应用笔记.10STM8SWIM通信协议和调试模通信协议和调试模块块地址:

7F80H复位值:

00H当上电复位或SWIM的SRST命令(SWIM_CSR寄存器的RST位置一)时,该寄存器复位。

SmallmountSTM8应用笔记应用笔记.11STM8SWIM通信协议和调试模通信协议和调试模块块3.10.2SWIM时钟控制寄存器时钟控制寄存器(CLK_SWIMCCR)偏移地址:

50CDH(产品依赖productdependent)复位值:

xxxx0000(x0H)SmallmountSTM8应用笔记应用笔记.12STM8SWIM通信协议和调试模通信协议和调试模块块4.调试模块调试模块(DM)4.1介绍介绍调试模块(DM)允许开发者执行某一(certain)调试任务而无需使用仿真器。

例如,DM可以中断MCU,打断无限循环(infiniteloops)或者在给定断点输出内核上下文(栈)。

DM主要用于仿真调试。

4.2主要特点主要特点两个条件断点(可在以下几处中断:

取指令-instructionfetch,读写数据,堆栈访问)软件断点控制睡眠模式在SWIM模式下的WOTF命令的外部停止能力看门狗和外设控制DM版本鉴定功能(identificationcapability)中断向量表选择4.3调试调试可通过SWIM接口读写DM寄存器。

STM8内核无权访问这些寄存器。

SmallmountSTM8应用笔记应用笔记.13STM8SWIM通信协议和调试模通信协议和调试模块块4.3.1复位复位由于调试模块寄存器的复位值,一旦SWIM激活,且SWIM_CSR寄存器的SWIM_DM位置一,在复位向量地址的一个“数据读”断点将会自动设置。

这个断点可用于初始化调试窗口。

4.3.2断点断点当运行至断点处时,DM产生一个内核的停止。

当处理器停止时,主机能够读或修改存储器的任何地址。

访问处理器寄存器详见。

为了重启执行程序,必须使用SWIM协议的WOTF命令,将DM_CSR2的STALL位必须清零。

4.3.3中止中止(Abort)使用中止功能,主机必须写DM_CSR2的STALL位。

无中断产生。

当前状态下内核被中止。

使用SWIM命令,主机可以读和修改MCU的状态。

如果CPU寄存器被修改,程序被描述详见。

主机可以重启程序,通过复位STALL位。

4.3.4看门狗控制看门狗控制使用DM控制寄存器的WDGOFF位,你可以配置看门狗窗口,且调试模块中止CPU时,将停止独立的看门狗计数器。

看门狗激活之前必须将该位置一。

如果硬件看门狗配置位使能了看门狗,则WDGOFF位将无效。

4.3.5SWIM交互交互SWIM发送状态位用于指示SWIM是否激活。

当SWIM未被激活,DM将不会生成任何的断点/中止要求给CPU。

SmallmountSTM8应用笔记应用笔记.14STM8SWIM通信协议和调试模通信协议和调试模块块4.4断点解码表断点解码表4.5软断点模式软断点模式软断点模式是为调试工具保留的,用于将断点插入(insert)到用户代码中,通过软件断点取代(substituting)用户指令(instruction)。

使用DMcontrol/status寄存器的SWBKPE位可以使能软件断点模式。

当解码BKPT指令后,CPU中止,且STALL和SWBKF位被硬件置一,以指示(indicate)发生的软件断点。

为继续(resume)执行,调试器必须还原(restore)用户的指令,然后将FLUSH位置一,将STALL位清零。

4.6时序描述时序描述时序信息如所示。

SmallmountSTM8应用笔记应用笔记.15STM8SWIM通信协议和调试模通信协议和调试模块块4.7中止中止(abort)写DM_CSR2寄存器的STALL位可以立即产生中止。

4.8数据断点数据断点当SWIM激活时,在当前指令执行到最后时,产生一个中止。

4.9指令断点指令断点(Instructionbreakpoint)在STM8中,一个指令中断,DM在选择指令执行之前,中止CPU。

当特殊地址与固定的指令地址不对应时,不会产生中止。

SmallmountSTM8应用笔记应用笔记.16STM8SWIM通信协议和调试模通信协议和调试模块块4.10单步模式单步模式在指令的第一个解码周期中,在指令执行前,STM8的CPU激活中止。

当单步模式和指令断点都使能时,STF和BKxF标志都被置一。

当清除STALL位时,单步功能继续原来的操作。

4.11应用笔记应用笔记4.11.1非法存储器访问非法存储器访问(illegalmemoryaccess)如果程序试图读写非法的存储器(如保留区),选择“DataR/WonBK1=BK2”,BK1和BK2是更低的和更高的保留区。

4.11.2禁止禁止堆访问堆访问如果堆区中一部分包含了特殊的不能被重写的数据或指令,DM可能会阻止访问这些区域。

选择“DataWriteinStackon=BK1”包含,且将设置BK1为更高的值。

如果STM8试图重写这些值,DM将产生一个中断。

4.11.3DM截断截断一个DM截断后CPU中止。

当CPU中止时,SWIM可以读写任何存储器地址或映射的寄存器。

通过重新设置Stall位,程序从断点处继续执行。

如果PC的改变被允许,SWIM必须写新的PC值,如所示。

为了从新的PC地址获取代码,SWIM必须在设置STALL位之前,设置DMcontrol/status寄存器的FLUSH位。

4.12DM寄存器寄存器略。

SmallmountSTM8应用笔记应用笔记.17STM8SWIM通信协议和调试模通信协议和调试模块块5.常见问题解答常见问题解答5.1时序相关时序相关1.MCU与仿真器之间相互通信,如何保证时钟同步?

2.仿真器发出SWIM入口序列:

4个1KHz的脉冲,紧接着4个2KHz的脉冲。

由于没有时钟保证,如何确保MCU。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2