STM8-SWIM通信协议.pdf

上传人:b****3 文档编号:3218514 上传时间:2022-11-20 格式: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

《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通信协议和调试

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

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1