串口
(三)串口调试工具和串口下载工具的区别:ST-LINK、J-LINK、U-LINK;SWD、JTAG、SWIM_swim接口是什么意思-CSDN博客
PC(电脑)和Target(外设、单片机)间的串口通信方式
在支持ISP烧录功能的单片机上,由于计算机和单片机之间因为电平特性不同(TTL和RS232)不能直接接线连接,因此需要通过串口下载器将Keil / IAR编译生成的可支持文件通过串口下载到目标板。
USB线(USB转TTL串口)
通过USB/串口转换电路,常见的转换芯片CH340/PL2303实现USB信号和串口的信号转换,此时电脑PC端需要安装一个USB转串口的驱动==CH340==,虚拟出一个COM口。
UART串口线(RS232转TTL型)
通过MAX232芯片实现单片机(UART-TTL电平)和电脑PC端(RS232-电平)的转换,通过串口线连接。(MAX232芯片是美信(MAXIM)公司专为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电)
串口波特率
为啥波特率常用115200,115200怎么来的?
在UART通讯中,发送方和接收方都需要按照相同的波特率(baud rate)进行工作,同时UART芯片也需要一个稳定的时钟,才能够保证数据的正确传输。
在现代计算机和嵌入式系统中,晶振频率通常很高,标准晶振频率通常为11.0592 MHz(或者12 MHz),这个频率是由外部晶振提供的,但UART芯片需要的时钟信号频率通常较低。因此,需要将晶振频率进行分频,从而得到一个较低频率的时钟信号。在115200波特率下,需要将11.0592 MHz的晶振频率分频6倍,得到得出1.8432 MHz的时钟信号。又因为串行通信通常使用16倍过采样技术,也就是每个比特会被采样16次。因此,需要将1.8432 MHz的时钟频率再除以16,就得到了115200 Hz的波特率。
综上所述,115200波特率是通过将11.0592 MHz的晶振频率进行分频,然后再进行过采样计算得出的。这个波特率的选择主要是基于现代计算机和微控制器的性能和传输速度需求,而且与传统的9600波特率相比,它可以实现更快的数据传输。
波特率(baud rate)指的是每秒钟传输的比特数。以波特率115200为例,它表示每秒可以传输115200个bit。
在串行通信中,每个字节(byte)由8个比特组成,因此一个字节的传输时间为8个比特的传输时间之和。对于115200波特率,每个比特的持续时间为1/115200秒,即约为8.68微秒。因此,每个字节的传输时间为8 * 8.68微秒 = 约69.4微秒。
波特率常用115200是因为它在现代计算机和微控制器中被广泛支持并提供了高效的数据传输速度,而且与传统的9600波特率相比,它可以实现更快的数据传输。
串口调试工具和串口下载工具
串口调试工具
只能用于发送命令(AT指令、规定好的协议命令),回显信息到终端(屏幕),不能用于下载程序 SecureCRT/XShell
串口下载工具
只能用于把PC端的程序下载到目标板,不能用于调试 通过ISP下载程序
相同点:
(1)都需要设置数据帧,奇偶校验位,结束标志位,波特率等。
(2)都是通过 serial端口 在PC端虚拟出来的COM口才能进行通信。
烧录方式
ISP
In System Programing,在系统编程; 用写入器将code代码烧入芯片,不过,芯片可以在目标板上,不用取出来,在设计目标板的时候就将接口设计在上面,所以叫“在系统编程”,即不用脱离系统。
目标芯片使用USB/UART/SPI/I²C/RS-485/CAN周边接口的LDROM引导代码去更新晶片内部APROM、数据闪存(DataFlash)和用户配置字(Config)。
首先就是需要有BoodLoad程序。最常见的烧录方式就是学习8051单片机时使用的STC-ISP烧录工具了。
不占用MCU额外的I/O口和内部资源,也不能在线对MCU进行调试debug,不能及时定位程序错误
IAP
In Application Programing,在应用编程; 在应用编程,有芯片本身(或通过外围的芯片)可以通过一系列操作将code写入,比如一款支持Iap的单片机,内分3个程序区,1作引导程序区,2作运行程序区,3作下载区,芯片通过串口接收到下载命令,进入引导区运行引导程序,在引导程序下将new code内容下载到下载区,下载完毕并校验通过后再将下载区内容复制到2区,运行复位程序,则Iap完成。
实现方式是将一段目标芯片可执行的代码通过某种通信协议下载到芯片RAM中并由芯片执行,由该代码实现具体操作以达到编程的目的。这种方式需要芯片支持通过某种通信协议对芯片的RAM进行读写并能控制其CPU,这是在编程结构下的一种编程方式。
IAP就是通过软件实现在线电擦除和编程的方法,没有使用任何工具,仅仅是通过软件的方法来更新Flash中的数据.IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个。
例子:通过4G模块来远程更新程序。将Flash分成两块区域,第一块为Boodload程序,第二块区域存放的是应用程序APP。标志位控制执行流程。
ICP
In Circuit Programing,在电路编程 使用对应厂家的软件以及仿真器都可以烧录程序,目前主流的有Jtag(Joint Test Action Group)以及SWD(Serial Wire Debug)接口。
下图为Jtag接口和SWD接口的区别:
执行ICP功能,仅需要3个引脚RESET、ICPDA及 ICPCK。RESET用于进入或退出ICP模式,ICPDA为数据输入输出脚,ICPCK为编程时钟输入脚。用户需要在系统板上预留VDD、GND以及这三个脚。
常用的烧录工具为J-Link、ST-Link、Nu-Link。与之配套的烧录软件为J-Flash、NuMicro_ICP_Programming_Tool、st-link utility。
ARM板上的调试模式
Jtag
调试器价格相对芯片较高,所以整个成本较高,同时因为需要板内置调试电路,占用额外的pcb板面积。调试器的优点在于能够在线设置断点,精确定位程序错误,监视MCU中断,读取运行时MCU的寄存器和内存值。
有些时候MCU内部的flash被锁或者内部flash引导程序被破坏(擦除或者覆盖),JTAG不能下载程序,则必须使用ISP重新下载MCU引导程序,重新对MCU进行编程和调试才能恢复正常JTAG调试状态.
SWD
SWD串行调试(Serial Wire Debug)是一种和JTAG不同的调试模式,使用的调试协议也不一样,最直接的体现在调试接口上,它的接线方式较JTAG简单,是2线制:SWDIO–串行数据线、SWDCLK–串行时钟线,一般在设计PCB时,会预留4个2.54mm的排座,这种接线方式适合引脚少的芯片,充分利用芯片资源。
SWD和JTAG调试方式的区别: 1)SWD模式比JTAG在高速模式下更加可靠,在大数据量的情况下JTAG下载程序会失败,但是SWD发生的几率会小很多,基本使用JTAG的模式下可以直接使用SWD模式的,推荐首先使用SWD仿真模式,前提是仿真器支持。 2)在GPIO口刚好缺一个的时候,可使用SWD仿真,这种模式支持更少的引脚。 3)在PCB设计体积有限的时候推荐使用SWD模式。
SWIM
STM8在线调试模式或在应用编程模式由一个单线硬件接口来管理,该接口拥有对存储器超高速编程的特性。该接口和在线调试模块相配合,可提供一种非侵入性(non-intrusive)的仿真模式,在这种仿真模式下,在线调试器的调试仿真功能非常强大,其性能已经接近于一个全功能仿真器。
ARM的调试下载仿真器
J-LINK
简单地说是给一个JTAG协议转换盒,即一个小型USB到JTAG的转换盒,其连接到计算机用的是USB接口,而到目标板内部用的还是jtag协议。它完成了一个从软件到硬件转换的工作。 德国SEGGER公司。通用的开发工具,可用于KEIL ,IAR ,ADS 等平台,速度、效率、功能均比U-LINK强。
ST-LINK
专门针对意法半导体STM8和STM32系列芯片的仿真器 指定的接口有: SWIM、JTAG 、SWD标准接口,其主要功能有: (1)编程功能:可烧写FLASH ROM、EEPROM、AFR等。 (2)仿真功能:支持全速运行、单步调试、断点调试等各种调试方法,可查看IO状态,变量数据等。 (3)仿真性能:采用USB接口进行仿真调试,单步调试,断点调试,反应速度快。 (4)编程性能:采用USB接口,进行SWIM / JTAG /SWD下载,下载速度快。
U-LINK
ARM/KEIL公司推出的仿真器,目前网上可找到的是其升级版本,U-LINK2和U-LINKPro仿真器。U-LINK/U-LINK2可以配合Keil软件实现仿真功能,并且仅可以在Keil软件上使用,增加了串行调试SWD模式。 ADS,iar下不能使用。