STM8 SWIM通信协议和调试模块.pdf
《STM8 SWIM通信协议和调试模块.pdf》由会员分享,可在线阅读,更多相关《STM8 SWIM通信协议和调试模块.pdf(19页珍藏版)》请在三一文库上搜索。
1、Smallmount STM8 应用笔记应用笔记 . 1 STM8 SWIM 通信协议和调试模通信协议和调试模块块 STM8 的 SWIM 通信协议(communication protocol)和调试 模块 介绍 本手册为需要建立 STM8 微控制器系列的编程, 测试或调试工具的开发者而写。 它解释 了 STM8 内核的调试结构。 STM8 的调试系统包括以下两个模块: DM:调试模块; SWIM:单总线接口模块。 相关文档(Related documentation) : How to program STM8S and STM8A Flash program memory and dat
2、a EEPROM (PM0051) (STM8A version is not published yet) How to program STM8L Flash program memory and data EEPROM (PM0054) 专业术语: DM:Debug Mode SWIM:Serial Wire Interface Module WFI:Wait For Interrupt WFE:Wait For Event Smallmount STM8 应用笔记应用笔记 . 2 STM8 SWIM 通信协议和调试模通信协议和调试模块块 目 录 1. 调试系统概述.1 2. 通信层.2
3、 3. 单总线接口模块(SWIM).3 3.1 操作模式.3 3.2 SWIM 入口序列.3 3.3 位格式.5 3.4 SWIM 通信协议.6 3.5 SWIM 命令.7 3.6 SWIM 通信复位.8 3.7 CPU 寄存器访问.8 3.8 在停止模式下的 SWIM 通信.9 3.9 物理层.9 3.10 STM8 的 SWIM 寄存器.9 4. 调试模块(DM).12 4.1 介绍.12 4.2 主要特点.12 4.3 调试.12 4.4 断点解码表.14 4.5 软断点模式.14 4.6 时序描述.14 4.7 中止(abort).15 4.8 数据断点.15 4.9 指令断点(Ins
4、truction breakpoint).15 4.10 单步模式.16 4.11 应用笔记.16 4.12 DM 寄存器.16 5. 常见问题解答.17 5.1 时序相关.17 Smallmount STM8 应用笔记应用笔记 . 1 STM8 SWIM 通信协议和调试模通信协议和调试模块块 1. 调试系统概述调试系统概述 STM8 的调试系统接口允许一个调试或编程工具, 通过一根基于开漏接口的单总线双向 (bidirectional)通信线连接到 MCU。 它提供了非抢占式 (non-intrusive) 读写方式去访问 RAM 和外设, 在程序执行期间(during program ex
5、ecution)。 方框图(The block diagram)如所示。 调试模块使用设备中的两个内部时钟源,LSI 低速内部时钟(通常范围为 20KHz-200KHz,视产品而定)和 HSI 高速内部时钟(通常范围为 10MHz-25MHz,视产品 而定) 。必要时,时钟会自动启动。 Smallmount STM8 应用笔记应用笔记 . 2 STM8 SWIM 通信协议和调试模通信协议和调试模块块 2. 通信层通信层 SWIM 是一个基于异步(asynchronous) ,强灌电流(high sink) (8mA) ,开漏,双向通 信(bidirectional communication)
6、的单总线接口。 当 CPU 正在运行,出于调试目的,SWIM 允许非抢占式(non-intrusive)读写访问,去 执行 on-the-flay 到 RAM 和外设寄存器。 此外(In addition) ,当 CPU 停止(stalled) ,SWIM 允许读写访问,去执行 MCU 存储 空间的其它部分(数据 EEPROM 和程序存储器) 。 CPU 寄存器(A,X,Y,CC,SP)也可以被访问。这些寄存器被映射在存储器中,而 且可以以相同的方式去访问。 仅仅当 SWIM_DM 位置一时,寄存器,外设和存储器才被访问。 当系统处于停止 (HALT) , WFI或者读保护模式, SWIM_C
7、SR寄存器的NO_ACCESS 标志将置一。在这种情况下,禁止(it is forbidden to)执行任何的访问,这时因为 部分设备可能没有时钟驱动,读访问返回无用的数据(garbage) ,或者写访问不成 功。 SWIM 可以执行 MCU 软件复位操作 SWIM 引脚可以作为标准 IO 口用于 MCU 的目标应用,如果你也想将他用于调试,IO 口功能将会有一些限制(some restrictions) 。最安全的方式是在 PCB 设计时提供选择项(a strap option) 。 Smallmount STM8 应用笔记应用笔记 . 3 STM8 SWIM 通信协议和调试模通信协议和调
8、试模块块 3. 单总线接口模块单总线接口模块(SWIM) 3.1 操作模式操作模式 上电复位后,SWIM 复位,并且进入它的 OFF 模式。 1. OFF:在此模式下,SWIM 引脚一定不能在应用中用作 I/O 口。等待 SWIM 入口 序列(entry sequence)或者应用软件打开 I/O 模式。 2. I/O:软件应用程序设置内核配置寄存器(CFG_GCR)的 SWIM 禁能位(SWD) (SWIM disable),可以进入此状态。在此状态下,用户应用程序可以使用 SWIM 引脚作为标 准 I/O 引脚,仅有的缺陷是无法使用该引脚的内置(bulit-in)调试功能。一旦复位(In
9、case of a reset) ,SWIM 重新返回 OFF 模式。 3. ACTIVE:当处于 OFF 状态,SWIM 引脚检测到一个特殊的序列,可以进入此模 式。 在此状态下, 通过 SWIM 引脚, 主设备工具使用 3 个命令去控制 STM8。(SRST System Reset,ROTF Read On The Fly,WOTF Write On The Fly) 注意:请注意,SWIM 可以被设置为 Active,而且可以在设备处于复位状态(NRST 引 脚被强制拉低)时进行通信。 3.2 SWIM 入口序列入口序列 POR(上电复位)后,SWIM 一直处于 OFF 模式,SWIM
10、 引脚采样用于检测入口序列。 要实现这一机制,内部低速 RC 时钟在 POR 后自动运行,并且在 SWIM 处于 OFF 模式下一 直保持。 如果 SWIM 引脚检测到入口序列之前,SWD bit is set,SWIM 将工作在 I/O 模式。一旦 SWIM 处于 ACTIVE 模式,写该位是无效的,并且 SWIM 仍然处于 ACTIVE 模式。 如果应用程序使用 SWIM 引脚作为 I/O 模式,应用程序会在软件代码的初始化部分将 SWIM 引脚设置为 I/O 模式(一般地,会在复位后执行) 。尽管在这种状态下,仍然有可能 Smallmount STM8 应用笔记应用笔记 . 4 STM8
11、 SWIM 通信协议和调试模通信协议和调试模块块 使得 SWIM 引脚处于 ACTIVE 模式,方法是:强制拉低 RESET 引脚,保持 RESET 引脚为 0 持续(duration)到 SWIM 入口序列完成。 在复位期间或者应用程序运行期间,只要 SWIM 处于 OFF 模式,任何时候,SWIM 入 口序列都会被检测。 如果 SWIM 引脚和复位引脚都被复用(are multiplexed)为 I/O 口,那么进入 SWIM 的 ACTIVE 状态的方法是:MCU 设备掉电,再上电,并且保持 MCU 复位直到 SWIM 入口序 列发送结束。 SWIM 激活时序图如所示,图中每一段的描述如
12、下。 1. 为了激活 SWIM,SWIM 引脚必须强制拉低 16s(在 HSI 下最少 64 个脉冲) 。 2. 第一个脉冲后(总线当前为 0) ,在 SWIM 的 ACTIVE 状态入口处,SWIM 检测一 个特殊序列以保证鲁棒性(guarantee robustness).SWIM 入口序列式:4 个 1KHz 的脉冲, 紧接着 4 个 2KHz 的脉冲。序列的频率很容易被内部 RC 检测到。入口序列如所示。注意序 列以 SWIM 引脚拉高作为开始和结束标志。 3. 入口序列后,SWIM 进入 ACTIVE 状态,HSI 振荡器(oscillator)自动开启。 4. 延时过后,SWIM
13、发出一个同步帧给主机。 同步帧描述:MCU 的 SWIM 总线输出低电平,维持 128 个 HSI 时钟脉冲表示发出一个 同步帧,用于调试主机对 RC 的测量。一个高级调试主机可以重新校准(re-calibrate)它的 时钟,来适应(adapt)MCU 内部 RC 的频率。 5. 开始 SWIM 通信之前, SWIM 线必须释放为高电平, 以保证 SWIM 准备好通信 (至 少维持 300ns) 。 6. 写 0A0H 到 SWIM_CSR 寄存器: Bit5 置一,允许访问整个存储器和 SRST 命令 Bit7 置一,掩盖内部复位源 7. 释放加载配置字节的序列的复位。等待 1ms 以保持
14、稳定。 8. 一旦配置字节加载发生,且稳定时间到,CPU 分段(in phase 8): STM8S 停止,且 HSI = 16MHz(详见 STM8S 数据手册) SWIM 时钟为 HSI/2 = 8MHz SWIM 在激活状态,在低速位格式(如所示) Smallmount STM8 应用笔记应用笔记 . 5 STM8 SWIM 通信协议和调试模通信协议和调试模块块 3.3 位格式位格式 位格式采用的是一种归零格式(Return-To-Zero format) ,它允许位同步。 两个通信速率可选。在 SWIM 激活状态下,选择的是低速通信速率。 通过设置 SWIM_CSR 寄存器的 HS 位
15、置一,选择高速通信速率。 当在复位阶段(during the RESET phase)进入 SWIM 模式时,配置项可能已经从非抢 占式存储器中加载到相应的寄存器中。 任何内部或外部的复位都会触发加载配置项。 为了确保适当的系统行为,HS 位直到配置项加载完成后才能置一。在配置项加载结束 后,SWIM_CSR 寄存器的 HSIT 位被硬件置一。 3.3.1 高速位格式高速位格式 10 个 HSI 振荡器脉冲生成一位。 位格式为: 2 个时钟脉冲的 0 电平,接着 8 个时钟周期的 1 电平。 8 个时钟脉冲的 0 电平,接着 2 个时钟周期的 1 电平。 当 SWIM 收到一包数据时,它将解码
16、: 1:检测到小于或等于 4 个连续低电平。 0:检测到大于或等于 5 个连续低电平。 3.3.2 低速位格式低速位格式 22 个 HSI 振荡器脉冲生成一位。 位格式为: 2 个时钟脉冲的 0 电平,接着 20 个时钟周期的 1 电平。 20 个时钟脉冲的 0 电平,接着 2 个时钟周期的 1 电平。 Smallmount STM8 应用笔记应用笔记 . 6 STM8 SWIM 通信协议和调试模通信协议和调试模块块 当 SWIM 收到一包数据时,它将解码: 1:检测到小于或等于 8 个连续低电平。 0:检测到大于或等于 9 个连续低电平。 3.4 SWIM 通信协议通信协议 当处于 ACTI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM8 SWIM通信协议和调试模块 SWIM 通信协议 调试 模块
链接地址:https://www.31doc.com/p-10915995.html