什么是 SAMD21 模拟器?
SAMD21 模拟器是一种计算机程序,允许用户模拟 SAMD21 微控制器的行为。该模拟器可用于测试 SAMD21 处理器的程序或开发嵌入式应用程序。它提供了在 SAMD21 微控制器上调试和测试程序的环境,无需物理硬件。它包括一系列外设,例如 UART、SPI、I2C、定时器和脉宽调制器。该模拟器还包括一个带有汇编器、编译器和调试器的 IDE。例如,如果用户正在为基于 SAMD21 的设备开发程序,他们可以使用模拟器来测试程序并进行调试,而无需物理硬件。
SAMD21 的模拟器类型
模拟器是模拟物理系统行为的计算机程序。它们通常用于嵌入式系统编程,因为它们允许在不需要物理硬件的情况下测试代码。SAMD21 的模拟器包括 Arduino Create、Proteus 和 QEMU。
爱特梅尔工作室 7
Atmel Studio 7 是由领先的微控制器制造商 Atmel 开发的集成开发平台 (IDP)。它是一个强大的开发环境,允许用户为 Atmel AVR 和 ARM 微控制器编写、编译、调试和部署应用程序。它支持广泛的开发板,并提供用于编码、调试和编程的图形用户界面 (GUI) 工具。它还具有用于软件调试、跟踪分析和仿真的全套工具。功能示例包括调试、在线仿真器、代码编辑器、设备编程和版本控制系统。
Proteus
Proteus 是一个模拟器,可用于模拟各种嵌入式系统,包括 SAMD21。它支持范围广泛的组件,包括传感器、执行器和显示器。它还提供调试工具并允许在模拟硬件上执行代码。
QEMU
QEMU 是一种开源模拟器,通常用于嵌入式系统编程。它支持广泛的体系结构,包括 ARM,可用于模拟 SAMD21。它提供调试工具,通常用于测试代码而不需要物理硬件。
如何用模拟器调试SAMD21程序?
调试是 SAMD21 编程的重要部分。它允许您在代码中的错误导致您的项目出现问题之前找到并修复它们。使用调试器和串行监视器是排除代码故障和查找程序错误的好方法。在开始调试代码之前,确保您充分了解这些工具的工作原理非常重要。这里我们提供了一个关于 Atmel Studio 7 模拟器的例子:
1). 下载并安装适用于 SAMD21 微控制器的兼容软件包。Atmel Studio 7 是此类软件的一个示例,可以从 Atmel 网站或以下 URL 下载。
https://atmel-studio.software.informer.com/download/
2). 通过选择“文件”->“新建”->“项目”在 Atmel Studio 7 中创建一个新项目。选择“GCC C ASF Board Project”选项并单击“OK”。
3). 选择您要模拟的电路板和微控制器。在此示例中,我们将使用 SAMD21 Xplained Pro 板和 ATSAMD21J18A 微控制器。
4). 在“ASF Wizard”对话框中,搜索并选择“SERCOM USART”驱动程序。然后点击“Apply”生成工程。
5). 现在您可以开始编写您的项目了。在这个例子中,我们将编写一个简单的程序,通过 USART 接口发送和接收数据。该程序将发送字符串“Hello World”,然后等待传入数据。代码编辑器窗口通常位于 Atmel Studio 用户界面的中央。如果您没有看到代码编辑器窗口,您可以通过在“解决方案资源管理器”窗格中双击您添加到项目中的 .c 文件来打开它。或者,您可以在“解决方案资源管理器”窗格中选择文件,然后从菜单栏中单击“查看”>“代码”以打开代码编辑器窗口。
6). 通过从菜单栏中选择“Debug”->“Start Debugging and Break”,在模拟器中构建并运行程序。然后,您可以单步执行代码并在“观察”窗口中观察变量的值。
就是这样!您现在可以使用 SAMD21 模拟器来测试和调试您的微控制器项目。
常用的 SAMD21 代码示例
一般来说,samd21 代码示例可以在 Atmel Software Framework 和 Atmel mbed Online Compiler 中找到。另外,能否正常工作取决于所使用的开发板。以下是一些基本示例:
闪烁的 LED:
模拟输入读数:
伺服控制:
中断示例:
比较 SAMD21 和 STM32
SAMD21 和 STM32 等微控制器在很多方面都非常相似。两者都是基于 ARM® Cortex™-M0+ 内核的 32 位微控制器,具有广泛的外围功能。但是,两者之间也存在一些关键差异。详情如下表所示:
特征 |
SAMD21 |
STM32 |
处理器 |
ARM Cortex-M0+ |
ARM Cortex-M |
静态随机存取存储器 |
32KB |
高达 128KB |
闪存 |
128KB |
高达 1MB |
时钟频率 |
48兆赫 |
16-32 MHz(取决于型号) |
GPIO 引脚 |
33 |
高达 82 |
通信协议 |
SPI、I2C、串口 |
CAN、USB、以太网、SPI、I2C、UART |
电源效率 |
更低的功耗、休眠模式,并设计为以更低的时钟速度运行 |
消耗的功率略多 (2-3mA/MHz) |
高级功能 |
更少 |
内置浮点单元、DDR内存控制器和多个串行接口 |
价格 |
更划算 |
更昂贵,更适合更复杂的应用 |