【SAM E51 Curiosity Nano 开发板】开箱、介绍、环境搭建、工程测试
本文介绍了 SAM E51 Curiosity Nano 开发板的相关信息,包括开箱、主控和调试器介绍、板载资源、系统框架、原理图等,并进行了上电测试、MPLAB X IDE 开发环境搭建,并结合官方 Demo 进行工程测试,包括工程创建、流程图、代码、调试、上传和运行等流程
开箱
介绍了 SAM E51 Curiosity Nano Evaluation Kit 的包装、开发板外观等。
包装


Top view


Bottom view


注意到开发板的排针布局采用蛇形排孔,方便排针在无焊接情况下使用。


介绍
SAME51J20A Curiosity Nano 评估套件是一个硬件平台,用于 SAME51J20A 微控制器(MCU)。
受 MPLAB X 集成开发环境 (IDE) 的支持,该工具包提供了对 SAME51J20A 特性的简单访问,并解释了如何访问 将设备集成到定制设计中。
Curiosity Nano 系列评估套件包括板载调试器,不需外部工具即可实现对 SAME51J20A 的编程和调试操作。
MCU
ARM® Cortex®-M4 processor


Debugger


资源参数
SAME51J20A 微控制器
一个用户 LED (黄色)
一个用户按钮开关
一个板载调试器
可在 MPLAB X IDE 中识别
一个绿色电源/状态 LED
编程和调试
虚拟 COM 端口 (CDC)
一个逻辑分析仪 (DGI GPIO)
USB 供电
可调目标电压
由板载调试器控制的 MIC5353 LDO 调节器
1.8-3.6V 输出电压
500mA 最大输出电流 (受环境温度和输出电压限制)
详见:SAM E51 CURIOSITY NANO EVALUATION KIT | Microchip Technology
系统框图
SAME51J20A


电源


引脚定义


原理图
主控 MCU


调试器 Debugger


详见:SAME51 CURIOSITY NANO BRD
SAM E51 CURIOSITY NANO EVALUATION KIT | Microchip Technology
上电测试
使用 Micro-USB 数据线连接开发板和电脑,系统识别出板载存储器


同时板载 LED 闪烁


环境搭建
按照以下步骤完成 Curiosity Nano 平台搭建:
下载并安装 MPLAB X IDE 软件;


启动 MPLAB X IDE 工具;
在 PC 和板载调试器 USB 端口之间连接一条 USB 电缆 (Standard-A与Micro-B 或 Micro-AB)
当 Curiosity Nano Kit第一次连接到用户计算机时,操作系统将执行驱动程序软件安装。


MPLAB X IDE 包含该套件的驱动程序。
开发板通电,绿色状态指示 LED 将亮起;
MPLAB X IDE 会自动检测连接了哪个 Curiosity Nano 开发板。
MPLAB X IDE 将呈现相关的信息,如数据表和套件文档。
SAME51J20A 设备可由板载调试器编程和调试,不需要外部调试器工具。
工程测试
创建工程
下载 Demo 例程 代码 ;
例程描述
该例程演示了 LED (LED0) 超时切换并打印 LED 在串行终端上切换速率。
超时的周期从 500 毫秒到 1 秒、2 秒、4 秒,然后回到 500 毫秒,
通过 SAM E51 Curiosity Nano 评估套件上的开关 SW0 进行切换。
流程图


代码
打开 Source Files/main.c 文件
/*******************************************************************************
Main Source File
Company:
Microchip Technology Inc.
File Name:
main.c
Summary:
This file contains the "main" function for a project.
Description:
This file contains the "main" function for a project. The
"main" function calls the "SYS_Initialize" function to initialize the state
machines of all modules in the system
*******************************************************************************/
#include <stdio.h>
#include <stddef.h> // Defines NULL
#include <stdbool.h> // Defines true
#include <stdlib.h> // Defines EXIT_FAILURE
#include <string.h>
#include "definitions.h" // SYS function prototypes
/* RTC Time period match values for input clock of 1 KHz */
#define PERIOD_500MS 512
#define PERIOD_1S 1024
#define PERIOD_2S 2048
#define PERIOD_4S 4096
typedef enum
{
TEMP_SAMPLING_RATE_500MS = 0,
TEMP_SAMPLING_RATE_1S = 1,
TEMP_SAMPLING_RATE_2S = 2,
TEMP_SAMPLING_RATE_4S = 3,
} TEMP_SAMPLING_RATE;
static TEMP_SAMPLING_RATE tempSampleRate = TEMP_SAMPLING_RATE_500MS;
static const char timeouts[4][20] = {"500 milliSeconds", "1 Second", "2 Seconds", "4 Seconds"};
static volatile bool isRTCExpired = false;
static volatile bool changeTempSamplingRate = false;
static volatile bool isUSARTTxComplete = true;
static uint8_t uartTxBuffer[100] = {0};
static void EIC_User_Handler(uintptr_t context)
{
changeTempSamplingRate = true;
}
static void rtcEventHandler (RTC_TIMER32_INT_MASK intCause, uintptr_t context)
{
if (intCause & RTC_MODE0_INTENSET_CMP0_Msk)
{
isRTCExpired = true;
}
}
static void usartDmaChannelHandler(DMAC_TRANSFER_EVENT event, uintptr_t contextHandle)
{
if (event == DMAC_TRANSFER_EVENT_COMPLETE)
{
isUSARTTxComplete = true;
}
}
// *****************************************************************************
// *****************************************************************************
// Section: Main Entry Point
// *****************************************************************************
// *****************************************************************************
int main ( void )
{
uint8_t uartLocalTxBuffer[100] = {0};
/* Initialize all modules */
SYS_Initialize ( NULL );
DMAC_ChannelCallbackRegister(DMAC_CHANNEL_0, usartDmaChannelHandler, 0);
EIC_CallbackRegister(EIC_PIN_15,EIC_User_Handler, 0);
RTC_Timer32CallbackRegister(rtcEventHandler, 0);
sprintf((char*)uartTxBuffer, "Toggling LED at 500 milliseconds rate \r\n");
RTC_Timer32Start();
while ( true )
{
if ((isRTCExpired == true) && (true == isUSARTTxComplete))
{
isRTCExpired = false;
isUSARTTxComplete = false;
LED0_Toggle();
DMAC_ChannelTransfer(DMAC_CHANNEL_0, uartTxBuffer, \
(const void *)&(SERCOM5_REGS->USART_INT.SERCOM_DATA), \
strlen((const char*)uartTxBuffer));
}
/* Maintain state machines of all polled MPLAB Harmony modules. */
if(changeTempSamplingRate == true)
{
changeTempSamplingRate = false;
if(tempSampleRate == TEMP_SAMPLING_RATE_500MS)
{
tempSampleRate = TEMP_SAMPLING_RATE_1S;
RTC_Timer32Compare0Set(PERIOD_1S);
}
else if(tempSampleRate == TEMP_SAMPLING_RATE_1S)
{
tempSampleRate = TEMP_SAMPLING_RATE_2S;
RTC_Timer32Compare0Set(PERIOD_2S);
}
else if(tempSampleRate == TEMP_SAMPLING_RATE_2S)
{
tempSampleRate = TEMP_SAMPLING_RATE_4S;
RTC_Timer32Compare0Set(PERIOD_4S);
}
else if(tempSampleRate == TEMP_SAMPLING_RATE_4S)
{
tempSampleRate = TEMP_SAMPLING_RATE_500MS;
RTC_Timer32Compare0Set(PERIOD_500MS);
}
else
{
;
}
RTC_Timer32CounterSet(0);
sprintf((char*)uartLocalTxBuffer, "LED Toggling rate is changed to %s\r\n", &timeouts[(uint8_t)tempSampleRate][0]);
DMAC_ChannelTransfer(DMAC_CHANNEL_0, uartLocalTxBuffer, \
(const void *)&(SERCOM5_REGS->USART_INT.SERCOM_DATA), \
strlen((const char*)uartLocalTxBuffer));
sprintf((char*)uartTxBuffer, "Toggling LED at %s rate \r\n", &timeouts[(uint8_t)tempSampleRate][0]);
}
}
/* Execution should not come here during normal operation */
return ( EXIT_FAILURE );
}
/*******************************************************************************
End of File
*/编程/调试工程
使用 MPLAB X IDE 软件打开项目 ~\same51n_getting_started\firmware\sam_e51_cnano.X ;
构建代码,单击工具栏中的 Make and Program 按钮,选择 Curiosity Nano ;


待显示 Programming Complete 表明固件上传完成。
运行 Demo
打开 Tera Term 软件,配置终端为串口模式;
波特率设置为 115200 bps;
SAM E51 板载 LED (LED0) 电平切换,默认超时周期为 500 毫秒;
LED 的切换速率显示在串口终端;
按下 SAM E51 板载开关 SW0 ,超时周期将更改为 1 秒;
随后每按一次开关 SW0 ,超时周期便会按照 500毫秒、1 秒、 2 秒、4 秒、500 毫秒次序循环切换。


详见:3.6.1 SAM E51 Curiosity Nano 评估套件上的入门应用程序 .
总结
本文介绍了 SAM E51 Curiosity Nano 开发板的相关信息,包括开箱、主控和调试器介绍、板载资源、系统框架、原理图等,并进行了上电测试、MPLAB X IDE 开发环境搭建,并结合官方 Demo 进行工程测试,包括工程创建、流程图、代码、调试、上传和运行等流程,为该设备的相关开发和应用提供了参考。
我要赚赏金
