这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【SAME51CuriosityNano开发板】开箱、介绍、环境搭建、工程测试

共1条 1/1 1 跳转至

【SAME51CuriosityNano开发板】开箱、介绍、环境搭建、工程测试

助工
2025-06-28 15:50:33     打赏

【SAM E51 Curiosity Nano 开发板】开箱、介绍、环境搭建、工程测试

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

开箱

介绍了 SAM E51 Curiosity Nano Evaluation Kit 的包装、开发板外观等。

包装

package.jpg


Top view

top.jpg

Bottom view

bottom.jpg

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

pin_S.jpg


介绍

SAME51J20A Curiosity Nano 评估套件是一个硬件平台,用于 SAME51J20A 微控制器(MCU)。

受 MPLAB X 集成开发环境 (IDE) 的支持,该工具包提供了对 SAME51J20A 特性的简单访问,并解释了如何访问 将设备集成到定制设计中。

Curiosity Nano 系列评估套件包括板载调试器,不需外部工具即可实现对 SAME51J20A 的编程和调试操作。

MCU

ARM® Cortex®-M4 processor

mcu.jpg

Debugger

Debugger.jpg

资源参数

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

board_block.jpg

电源

power-supply_block.jpg

引脚定义

pinout_def.jpg

原理图

主控 MCU

SCH_MCU.jpg

调试器 Debugger

SCH_Debugger

SCH_Debugger.jpg

详见:SAME51 CURIOSITY NANO BRD

SAM E51 CURIOSITY NANO EVALUATION KIT | Microchip Technology

上电测试

使用 Micro-USB 数据线连接开发板和电脑,系统识别出板载存储器

connect_udisk.jpg

同时板载 LED 闪烁

charge_blink.gif

环境搭建

按照以下步骤完成 Curiosity Nano 平台搭建:

    下载并安装 MPLAB X IDE 软件;

    mplab-ide-download.jpg


    启动 MPLAB X IDE 工具;

    在 PC 和板载调试器 USB 端口之间连接一条 USB 电缆 (Standard-A与Micro-B 或 Micro-AB)

当 Curiosity Nano Kit第一次连接到用户计算机时,操作系统将执行驱动程序软件安装。

mplab-x-ide.jpg

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 进行切换。

流程图

flowchart_demo.jpg

代码

打开 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 ;

make_burn.jpg

待显示 Programming Complete 表明固件上传完成。

运行 Demo

打开 Tera Term 软件,配置终端为串口模式;

波特率设置为 115200 bps;

SAM E51 板载 LED (LED0) 电平切换,默认超时周期为 500 毫秒;

LED 的切换速率显示在串口终端;

按下 SAM E51 板载开关 SW0 ,超时周期将更改为 1 秒;

随后每按一次开关 SW0 ,超时周期便会按照 500毫秒、1 秒、 2 秒、4 秒、500 毫秒次序循环切换。

project_test.jpg

详见:3.6.1 SAM E51 Curiosity Nano 评估套件上的入门应用程序 .

总结

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






关键词: Microchip     开发板     IDE     开发环境     资源    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]