3.单总线接口模块(SWIM)_第1页
3.单总线接口模块(SWIM)_第2页
3.单总线接口模块(SWIM)_第3页
3.单总线接口模块(SWIM)_第4页
3.单总线接口模块(SWIM)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STM8的SWIM通信协议(communicationprotocol)和调试模块介绍本手册为需要建立STM8微控制器系列的编程,测试或调试工具的开发者而写。它解释了STM8内核的调试结构。STM8的调试系统包括以下两个模块:DM:调试模块;SWIM:单总线接口模块。相关文档(Relateddocumentation):•HowtoprogramSTM8SandSTM8AFlashprogrammemoryanddataEEPROMHW90PMam^TMversionisnotpublishedyet)HW90PMam^TM8LFlashprogrammemoryanddataEEPROM(PM0054)专业术语:DM:DebugModeSWIM:SerialWireInterfaceModuleWFI:WaitForInterruptWFE:WaitForEvent目录TOC\o"1-5"\h\z1.调试系统概述12.通信层2单总线接口模块(SWIM)3操作模式3SWIM入口序列3位格式5SWIM通信协议6SWIM命令7SWIM通信复位8CPU寄存器访问8在停止模式下的SWIM通信9物理层9STM8的SWIM寄存器9调试模块(DM)12介绍12主要特点12调试12断点解码表14软断点模式14时序描述14中止(abort)15数据断点15扌旨令断点(Instructionbreakpoint)15单步模式16应用笔记16DM寄存器16常见问题解答175.1时序相关171.调试系统概述STM8的调试系统接口允许一个调试或编程工具,通过一根基于开漏接口的单总线双向(bidirectional)通信线连接到MCU。它提供了非抢占式(non-intrusive)读写方式去访问RAM和外设,在程序执行期间(duringprogramexecution)。方框图(Theblockdiagram)如所示。SWIMpinn<LSIoscillatorHSIoscillatorSWIMEntryCommLayerSWIMpinn<LSIoscillatorHSIoscillatorSWIMEntryCommLayerCommandDecodeSWIM调试模块使用设备中的两个内部时钟源,LSI低速内部时钟(通常范围为20KHz-200KHz,视产品而定)和HSI高速内部时钟(通常范围为10MHz-25MHz,视产品而定)。必要时,时钟会自动启动。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)。Figure2.SWIMpinexternalconnectionsSTM8ApplicationI/O<nSWIMpinSWIMinterfacefortools<Jumperselectionfordebugpurposes3.单总线接口模块(SWIM)3.1操作模式上电复位后,SWIM复位,并且进入它的OFF模式。OFF:在此模式下,SWIM引脚一定不能在应用中用作I/O口。等待SWIM入口序列(entrysequenee)或者应用软件打开I/O模式。I/O:软件应用程序设置内核配置寄存器(CFG_GCR)的SWIM禁能位(SWD)(SWIMdisable),可以进入此状态。在此状态下,用户应用程序可以使用SWIM引脚作为标准I/O引脚,仅有的缺陷是无法使用该引脚的内置(bulit-in)调试功能。一旦复位Oncaseofareset),SWIM重新返回OFF模式。ACTIVE:当处于OFF状态,SWIM引脚检测到一个特殊的序列,可以进入此模式。在此状态下,通过SWIM引脚,主设备工具使用3个命令去控制STM8。(SRSTSystemReset,ROTFReadOnTheFly,WOTFWriteOnTheFly)注意:请注意,SWIM可以被设置为Active,而且可以在设备处于复位状态(NRST引脚被强制拉低)时进行通信。Figure3.SWIMactivationsequencePOR3.2SWIM入口序列POR(上电复位)后,SWIM一直处于OFF模式,SWIM引脚采样用于检测入口序列。要实现这一机制,内部低速RC时钟在POR后自动运行,并且在SWIM处于OFF模式下一直保持。如果SWIM引脚检测到入口序列之前,SWDbitisset,SWIM将工作在I/O模式。一旦SWIM处于ACTIVE模式,写该位是无效的,并且SWIM仍然处于ACTIVE模式。如果应用程序使用SWIM引脚作为I/O模式,应用程序会在软件代码的初始化部分将SWIM引脚设置为I/O模式(一般地,会在复位后执行)。尽管在这种状态下,仍然有可能

使得SWIM引脚处于ACTIVE模式,方法是:强制拉低RESET引脚,保持RESET引脚为0持续(duration)到SWIM入口序列完成。在复位期间或者应用程序运行期间,只要SWIM处于OFF模式,任何时候,SWIM入口序列都会被检测。如果SWIM引脚和复位引脚都被复用(aremultiplexed)为I/O口,那么进入SWIM的ACTIVE状态的方法是:MCU设备掉电,再上电,并且保持MCU复位直到SWIM入口序列发送结束。Figure4.SWIMactivationtimingdiagramSWIMpin:SWIM-CSR(5)and(7)SWIMpin:ResetiiiReset:(1)(2):⑶⑷(5)(6):Jesetr$ng(7)(8)Optionbyte.loading〕HSIADCONi”〕HSIADCONail7411卜LSIOSCONail7411SWIM激活时序图如所示,图中每一段的描述如下。为了激活SWIM,SWIM引脚必须强制拉低16AS(在HSI下最少64个脉冲)。第一个脉冲后(总线当前为0),在SWIM的ACTIVE状态入口处,SWIM检测一个特殊序列以保证鲁棒性(guaranteerobustness).SWIM入口序列式:4个1KHz的脉冲,紧接着4个2KHz的脉冲。序列的频率很容易被内部RC检测到。入口序列如所示。注意序列以SWIM引脚拉高作为开始和结束标志。入口序列后,SWIM进入ACTIVE状态,HSI振荡器(oscillator)自动开启。延时过后,SWIM发出一个同步帧给主机。同步帧描述:MCU的SWIM总线输出低电平,维持128个HSI时钟脉冲表示发出一个同步帧,用于调试主机对RC的测量。一个高级调试主机可以重新校准(re-calibrate)它的时钟,来适应(adapt)MCU内部RC的频率。开始SWIM通信之前,SWIM线必须释放为高电平,以保证SWIM准备好通信(至少维持300ns)。写0A0H到SWIM_CSR寄存器:Bit5置一,允许访问整个存储器和SRST命令Bit7置一,掩盖内部复位源释放加载配置字节的序列的复位。等待1ms以保持稳定。一旦配置字节加载发生,且稳定时间到,CPU分段(inphase8):STM8S停止,且HSI=16MHz(详见STM8S数据手册)SWIM时钟为HSI/2=8MHzSWIM在激活状态,在低速位格式(如所示)

Figure5.SWIMentrysequenceSWIMpin~111l_ll_ll_lL«[ms&DO^js“SWIMentrysequence3.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个连续低电平。Figure6.Highspeedbitformat个个个个个个个个个个个个个」个个I-I—^1—1_.•JLIIA—I个个个个个个个个-LiI3.3.2低速位格式22个HSI振荡器脉冲生成一位。位格式为:2个时钟脉冲的0电平,接着20个时钟周期的1电平。20个时钟脉冲的0电平,接着2个时钟周期的1电平。当SWIM收到一包数据时,它将解码:1:检测到小于或等于8个连续低电平。0:检测到大于或等于9个连续低电平。3.4SWIM通信协议当处于ACTIVE模式时,通信可以被主机或设备初始化。每一个字节或命令之前都有一位头,用于仲裁主机和设备发起的通信。主机的头是“0”,由于是开漏结构,可用于在仲裁时取得优先权。若无数据传输,主机就可以开始传输。Figure8.Commandformat(Host->Target)CommandData*!…III-IQIb2\bl\bQ\ptdacklQ\bz\bs\b5\b4\ba\b2\bl\ba\曲IacidItalic.BitsentbytheHostBold:Bitsentbythedevice主机发送的每个命令有以下组成: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”。3.5SWIM命令当总线空闲或者设备发送某个数据字节后,主机可以发送一个命令。发送命令后,主机释放总线。当SWIM准备好回应命令时,它启动(initiates)转换。如果SWIM正在相应一个命令,主机发出新的命令,上个命令被取消,且新命令被解码,除WOTF外。三个命令是有效的(available)o如所示。Table1.SWIMcommandsummaryCommandBinaryCodeSRST000ROTF001WOTF010Reservedforfutureuse0111xx3・5・1SRST:系统复位格式:一个命令从主机到目标板参数:无只有SWIM_CSR/SWIM_DM位置一,SRST命令产生一个系统复位。3・5・2ROTF:readonthefly格式:一个命令+要读的字节数+三个字节的地址参数:N8位的将要读取的字节数(1~255)@E/H/L即将访问的24位地址D[…]从存储空间读取的字节如果主机发送一个NACK信号,设备将再次发送相同的字节。如果SWIM_DM位被清零,ROTF只能在SWIM内部寄存器被操作。3・5・3WOTF:writeonthefly格式:一个命令+要写的字节数+三个字节的地址WOTFN@E@H@LD[@]参数:N8位的将要写的字节数(1~255)@E/H/L即将访问的24位地址D[...]将要写到存储空间的字节当字节D[i+1]到达,如果字节D[i]仍未写完成,那么D[i+1]之后紧跟着NACK。在这种情况下,主机必须再次发送D[i+1]知道收到应答信号ACK。对于最后一个字节,当一个新命令发生,而最后一个字节未写完成,那么,新命令将收到NACK,且不会被解释(account)执行。如果SWIM_DM位被清零,WOTF只能在SWIM内部寄存器被操作。3.6SWIM通信复位在通信期间的问题,主机可以通过发送128个HSI时钟周期来复位通信。如果SWIM检测到SWIM引脚拉低超过64个HIS时钟周期,它将复位通信状态机,并且打开低速模式(SWIM_CSR.HSv-O)。这是为了改变内部RC振荡器的频率。(ThisistoallowforvariationinthefrequencyoftheinternalRCoscillator.)为了响应(Inresponseto)通信复位,SWIM将发送同步帧一拉低DBG引脚持续128个HIS振荡器时钟。3.7CPU寄存器访问CPU寄存器被映射在STM8存储器中,且这些寄存器可以通过ROTF和WOTF命令来被直接读或写。当CPU处于停滞状态时,对CPU寄存器的写操作才被允许。为了刷新指令解码阶段,你必须在为程序计数器(PCE,PCH,PCL)写入新值后,将DMcontrol/status寄存器的FLUSH位置一。Table2.CPUregistermemorymappinginSTM8CPUregisterMemorylocationA7F00hPCE7F01hPCH7F02hPCL7F03hXH7F04hXL7F05hYH7F06hYL7F07hSPH7F08hSPL7F09hCC7F0Ah3.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%)。ibFigure10.TimingsonSWIMpinSWIMpinibFigure10.TimingsonSWIMpinSWIMpinTable3.SWIMpincharacteristicsParameterSymbolGenericformulaTimingsforHSI=10MHzLSI=32to64kHzMlnMaxFalltimeonSWIMpinTBD50nsRisetimeonSWIMpinT8D96nsInter-bittime(ThetimewhichSWIMpinstayshighbetween2bits)TBD>0Inter-frametime(Timebetweenendofaframeandthenextone)TBD0Lowtimeforabitat0Highspeed:匕TBD768ns832nsLowspeed:tb0TBD1.6ps2.4psLowtimeforabitat1(HighSpeed)Highspeed:Tb1TBD192ns208nsLowspeed:Tb1TBD150ns250nsInjectedcurrentonSWIMpinTBD8mA3.10STM8的SWIM寄存器3.10.1SWIM控制状态寄存器(SWIM_CSR)

地址:7F80H复位值:00H当上电复位或SWIM的SRST命令(SWIM_CSR寄存器的RST位置一)时,该寄存器复位。Bit7SAFE„MASK:MaskinternalRESETsourcesThisbitcanbereadorwrittenthroughSWIMonly.ItcannotbeaccessedthroughtheSTM8bus.ItincludestheWatchdogreset.0:InternalResetsourcesarenotmasked1:InternalresetsourcesaremaskedBit6NO_ACCESS:BusnotaccessibleThisbitcanbereadthroughSWIMonlytodeterminethebusisaccessibleornot.ItissetautomaticallyifthedeviceisinHALT,WFIorreadoutprotectionmode.0:Busisaccessible1:BusisnotaccessibieCaution:Dep的dingontheSWIMrevision,insemedevices,theNO_ACCESSbitindicatesonlythatthedeviceisinHALTmode.Bit5SWIM_DM:SWIMforDebugModuleThisbitcanbereadorwrittento1throughSWIMonly,itcannotbeaccessedthroughtheSTMSbus.0:TheSWIMcanaccessonlySWIM_GSRregister.SWIMresetcommandhasnoeffect1:ThewholememoryrangecanbeaccessedwithROTFandWOTFcommands.TheSRSTcommandgeneratesaResetBit4HS:HighSpeedThisbitcanbereadorwrittenthroughSWIMonly.ItcannotbeaccessedthroughSTM8bus.0:Lowspeedbitformat1:HighspeedbitformatThespeedchangeoccurswhenthecommunicationisIDLE.ItisresetbytheSWIMcommunicatianresetconditionasdescribedinSection3.6.Bit3OSCOFF:OscillatorsOffcontrolbitThisbitcanbereadorwrittenthroughSWIMonly.RcannotbeaccessedthroughSTM8bus.0:HSIoscillatorremainsONinhaltmode1:HSIoscillatorisnotrequestedONinHaltmode

Bit2RST:SWIMResetControlBitThisbitcanbereadorwrittenthroughSWIMonly.ItcannotbeaccessedthroughSTM8bus.0:SWIMisnotresetwhenaSRSTcommandoccurs.1:SWIMisresetwhenaSRSTcommandoccurs.SWIMwiHre-enterOFFmode.Bit1HSIT:HighSpeedInternalClockistrimmedThisbitisreadonlythroughSWIMonly,ftcannotbeaccessedthroughSTM8bus.ItissetwhentheHSITbitissetinthecoreconfigurationregisterandresetbyanexternalreset.0:HighSpeedInternalClockisnottrimmed,SWIMmustremainhlowspeedmode.1:HighSpeedInterna!Clockistrimmed,SWIMhighspeedmodeisallowed.BitOPRi:SWIMaccesspriorityThisbitcanbereadorwrittenthroughSWIMonly.UsuallytheSWIMaccessestosystemresourcesarenon-intrusive,SWIMhavingthelowestpriority.Thiscanbeoverriddenbysettingthisbit.0:Non-intrusiveaccessbySWIMtosystemresources(lowpriority)1:IntrusiveaccessbySWIMtosystemresources(SWIMhaspriority,CPUisstalled).Note:TheSWDbitislocatedintheSTWI8coreconfigurationregister.Refertothecorrespondingdatasheetforinformationonthisregister3.10.2SWIM时钟控制寄存器(CLK_SWIMCCR)偏移地址:50CDH(产品依赖一productdependent)复位值:xxxx0000(x0H)76543210ReservedSWIMCLKrwBits7:1Reserved,mustbekeptcleared.BitOSWIMCLKSWIMclockdividerThisbitissetandclearedbysoftware.0:SWIMclockdividedby21:SWIMclocknotdividedby2Note:thisregisterisnotpresentinsomeSTM8devices.r—————r—————IDebugModule(DM)WATCHDOGCONTROL

LOGIC4.调试模块(DM)4.1介绍调试模块(DM)允许开发者执行某一(certain)调试任务而无需使用仿真器。例如,DM可以中断MCU,打断无限循环(infiniteloops)或者在给定断点输出内核上下文(栈)DM主要用于仿真调试。4.2主要特点两个条件断点(可在以下几处中断:取指令-instructionfetch,读写数据,堆栈访问…)•软件断点控制睡眠模式在SWIM模式下的WOTF命令的外部停止能力看门狗和外设控制DM版本鉴定功能(identificationcapability)•中断向量表选择Figure11.DebugmoduleblockdiagramWATCHDOGDMBREAKPOINTLOGICBC2

bcTBCOeiwRESETDM_CR1STM8CPUSTESTFDMBREAKPOINTLOGICBC2

bcTBCOeiwRESETDM_CR1STM8CPUSTESTFRSTBRWBK2FBK1FI.CSR1DMSTALiLtRAP〈匚一STALLbit—SWTRAPbit_DMSTALLI(FromISlaveDMIwhenI赳Hail担HI可EXTSTALL

MANAGEMENTI^SWTBF,flag[EXT7STALLFV_ROMIFV.RAMDMREGISTERSREAD/WRITELOGICDMBK2SWIMn-SWIMEMU/DMAinterfaceSOFTWAREBREAKPERIPHERALSPERIPHERALS(Timers,USB....)DM_CR2ENFCTxDM_ENFCT'-一一-I4.3调试可通过SWIM接口读写DM寄存器。STM8内核无权访问这些寄存器。

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。

4.4断点解码表Table4.DecodingtabteforbreakpointinterruptgenerationDM_CR1BREAKCONDITIONSOM^CSRlBC2BC1BC0BIRBIWBK1FBK2FBRW0-0000Disabled(RESETstate)00X00fl01Data.Writeon@-BK1andData=BK2L10000010DataReadon@=BK1andData-BK2L10100011DataR/Won@=BK1andData=BK2L1007100100InstructionfetchBK1^=@^=BK210X0-0101DataWriteonBKK=@<=BK21000-0110D別a:ReadonBK1<=@<=BK210100111DataR/WanBK1<=(§<=BK210(VI01000Instructionfetchan@<=BK1orBK2<»@10X01001DataWriteanBK1orBK2<=@10001010D呂LaReadonBK1orBK2.<=@10101011DataR/Won三BK1orBK2<=@100/1011XXDisabled00X10000Instructionfetchon@=BK1thenon@=BK201X10001DataWriteon@=BK1Qr@=BK210ar01Dr11010010DatnReadon@=BK1or@=BK2WorOIor11110011DataR/Wan@=BK1ar@=BK2WarO1cm110/110100Instructionfetchan@=BK1or@=BK210dr01or11X10101Instructionfetchon@=BK1/DataWriteon@~BK210oc01x-010110Instructionfetchan@=BK1/DataReadofi@=BK210or01x-110111Instructionfetchon@=BK1/DataR/Won@=BK210or01x-0/1110XXDjsabled00X11100D呂也WriteinStackan@<=BK1fInstructionfetcham@=BK2lOurOI0-x11101DataWritEinStackon/DataWriteon@=BK2WorOIor11011110DataWriteinStackcm/DataReadon@=BK210wOICM11111DataWriteinStackon@<=BK1fDataR/Won@=BK210dr01or110-0/14.5软断点模式软断点模式是为调试工具保留的,用于将断点插入(insert)到用户代码中,通过软件断点取代(substituting)用户指令(instruction)。使用DMcontrol/status寄存器的SWBKPE位可以使能软件断点模式。当解码BKPT指令后,CPU中止,且STALL和SWBKF位被硬件置一,以指示(indicate)发生的软件断点。为继续(resume

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论