这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【EV76S68A试用】1-串口控制LED

共1条 1/1 1 跳转至

【EV76S68A试用】1-串口控制LED

菜鸟
2025-07-18 00:50:42     打赏

第一章 芯片与开发板简介

image.png


1.1 SAME51J20A微控制器核心特性

  • CPU架构:120MHz Cortex-M4F内核(带FPU和DSP指令)

  • 存储资源:1MB Flash + 256KB SRAM

  • 关键外设

    • 6个SERCOM模块(可配置为USART/SPI/I2C)

    • 1路CAN FD

    • 9个定时器/计数器(TC/TCC)支持输入捕获/比较、PWM

    • 12位ADC(最高1Msps采样率,20 channel)

    • 1路DAC 12位

    • 板载USB 2.0 Full Speed

    • PTC控制器

  • 时钟系统:支持多路时钟源与锁相环(详见第二章)

image.png


1.2 EV76S68A开发板硬件资源

  • 调试接口:板载Curiosity Nano调试器(集成CDC串口)

  • 微控制器:ATSAME51J20A

  • 用户LED:PA14

  • 用户按键:PA15

  • 外部低速晶振:32.768kHz

image.png




第二章 时钟系统配置

2.1 时钟树整体架构

image.png

SAME51J20A时钟系统包含5个主要时钟源(可能描述有问题):

P1.png

2.2 当前时钟配置实现

硬件约束:开发板无外部高速晶振

GCLK2 (60MHz) → TC3时钟 → 驱动PWM呼吸灯(第四章)
GCLK1 (48MHz) → SERCOM0 → 串口115200bps(第三章)

MCC配置关键步骤

  1. 使能DFLL48M(内部48MHz RC振荡器)

  2. 配置FDPLL0为整数倍频模式  倍数 = (param1 + 1)+(param2 / 32)

  3. 配置通用时钟分配器:

GCLK源时钟分频输出频率用途





GCLK0FDPLL01120 MHz

CPU的时钟、GCLK2的时基

GCLK1DFLL148 MHzFDPLL0的时基、SERCOM0/TC3外设的时钟
GCLK2GCLK0260 MHz暂未使用


第三章 串口通信实现

3.1 硬件连接与配置

  • 物理接口:PA08:TX,PA09:RX

  • 协议参数:115200bps,8位数据,无校验,1停止位

image.png


3.2 MCC图形化配置

  • 引脚配置:PA08:TX,PA09:RX

image.png

  • 协议参数:115200bps,8位数据,无校验,1停止位

image.png


第四章 LED灯控制实现

4.1 硬件电路分析

  • 共阳极LED接法 → 通过INVERT_PWM_OUTPUT极性反转支持,或者可以勾选反转输出(为了方便更改,因此没选用该方法)

image.png

4.2 TC3定时器配置

MCC参数设置

image.png


第五章 系统架构与代码逻辑

5.1 软件层次结构

P5.png

5.2 主程序流程图

P6.png

5.3 关键数据流模块输入输出控制流





serial_service串口原始数据格式化命令字符串→ cli_core
cli_core命令字符串解析后的参数(argc/argv)→ app_led/app_print
app_led命令参数PWM参数/状态标志→ LED状态机
LED状态机模式参数TC3寄存器值→ 物理LED


5.4 软件模块化优势

优势实现方式案例
模块解耦头文件定义接口,源文件实现细节app_led.h 声明 LED_parse(),main.c 直接调用
易扩展命令注册机制添加新命令只需扩展 cmd_t 结构体
实时响应SysTick 10ms 轮询LED状态平滑切换,无肉眼可见闪烁
跨平台PLIB抽象硬件差异更换MCU只需重写plib_xxx模块


第六章 功能验证与总结

6.1 测试项目结果

功能项测试命令结果
LED呼吸灯led -m 0PASS
LED反转状态led -m 1PASS
LED自定义占空比led -m 2 [duty]PASS
LED blink(比1微快)led -m 3PASS
LED从当前状态渐变亮led -m 4PASS
LED从当前状态渐变暗led -m 5PASS
打印运算结果print -n num1 + num2 = ?PASS
打印指定内存数据print -m addr lenPASS
数据转换为16进制print -x numPASS
打印字符串print -s "str"PASS


部分测试LOG:
00:18:27:742 ---- 已发送 utf8 编码消息: "print -s \"Hello World\"\r\n" ----
00:18:27:749 -> Hello World
00:18:56:364 ---- 已发送 utf8 编码消息: "print -n 8 * 8 = ?\r\n" ----
00:18:56:383 -> 64
00:19:20:587 ---- 已发送 utf8 编码消息: "print -m 0 8\r\n" ----
00:19:20:616 -> Memory at 0x0 (8 bytes):
00:19:20:616 -> 0xF0 0xFF 0x03 0x20 0x65 0x2E 0x00 0x00 
00:19:40:759 ---- 已发送 utf8 编码消息: "led -m 2 50\r\n" ----
00:19:40:783 -> LED mode set to 2
00:19:43:808 ---- 已发送 utf8 编码消息: "led -m 2 0\r\n" ----
00:19:43:827 -> LED mode set to 2
00:19:52:854 ---- 已发送 utf8 编码消息: "led -m 4\r\n" ----
00:19:52:869 -> LED mode set to 4
00:19:52:869 -> Fade In: 1%
00:19:52:928 -> Fade In: 2%
00:19:52:990 -> Fade In: 3%
00:19:53:021 -> Fade In: 4%
00:19:53:083 -> Fade In: 5%
00:19:53:186 ---- 已发送 utf8 编码消息: "\r\n" ----
00:19:53:144 -> Fade In: 6%
00:19:53:206 -> Fade In: 7%
00:19:53:267 -> Fade In: 8%
00:19:53:329 -> Fade In: 9%
00:19:53:393 -> Fade In: 10%
00:19:53:452 -> Fade In: 11%
00:19:53:514 -> Fade In: 12%
00:19:53:576 -> Fade In: 13%
00:19:53:637 -> Fade In: 14%
00:19:53:699 -> Fade In: 15%
00:19:53:760 -> Fade In: 16%
00:19:53:822 -> Fade In: 17%
00:19:53:884 -> Fade In: 18%
00:19:53:945 -> Fade In: 19%
00:19:54:007 -> Fade In: 20%
00:19:54:068 -> Fade In: 21%
00:19:54:130 -> Fade In: 22%
00:19:54:191 -> Fade In: 23%
00:19:54:253 -> Fade In: 24%
00:19:54:314 -> Fade In: 25%
00:19:54:376 -> Fade In: 26%
00:19:54:438 -> Fade In: 27%
00:19:54:499 -> Fade In: 28%
00:19:54:561 -> Fade In: 29%
00:19:54:623 -> Fade In: 30%
00:19:54:684 -> Fade In: 31%
00:19:54:746 -> Fade In: 32%
00:19:54:807 -> Fade In: 33%
00:19:54:869 -> Fade In: 34%
00:19:54:931 -> Fade In: 35%
00:19:54:995 -> Fade In: 36%
00:19:55:054 -> Fade In: 37%
00:19:55:115 -> Fade In: 38%
00:19:55:177 -> Fade In: 39%
00:19:55:239 -> Fade In: 40%
00:19:55:269 -> Fade In: 41%
00:19:55:331 -> Fade In: 42%
00:19:55:393 -> Fade In: 43%
00:19:55:454 -> Fade In: 44%
00:19:55:526 -> Fade In: 45%
00:19:55:628 -> Fade In: 46%
00:19:55:639 -> Fade In: 47%
00:19:55:705 -> Fade In: 48%
00:19:55:781 -> Fade In: 49%
00:19:55:824 -> Fade In: 50%
00:19:55:886 -> Fade In: 51%
00:19:55:947 -> Fade In: 52%
00:19:56:009 -> Fade In: 53%
00:19:56:070 -> Fade In: 54%
00:19:56:132 -> Fade In: 55%
00:19:56:193 -> Fade In: 56%
00:19:56:257 -> Fade In: 57%
00:19:56:317 -> Fade In: 58%
00:19:56:378 -> Fade In: 59%
00:19:56:440 -> Fade In: 60%
00:19:56:502 -> Fade In: 61%
00:19:56:599 -> Fade In: 62%
00:19:56:625 -> Fade In: 63%
00:19:56:686 -> Fade In: 64%
00:19:56:748 -> Fade In: 65%
00:19:56:810 -> Fade In: 66%
00:19:56:872 -> Fade In: 67%
00:19:56:933 -> Fade In: 68%
00:19:56:994 -> Fade In: 69%
00:19:57:056 -> Fade In: 70%
00:19:57:136 -> Fade In: 71%
00:19:57:179 -> Fade In: 72%
00:19:57:241 -> Fade In: 73%
00:19:57:302 -> Fade In: 74%
00:19:57:364 -> Fade In: 75%
00:19:57:425 -> Fade In: 76%
00:19:57:487 -> Fade In: 77%
00:19:57:587 -> Fade In: 78%
00:19:57:615 -> Fade In: 79%
00:19:57:641 -> Fade In: 80%
00:19:57:702 -> Fade In: 81%
00:19:57:764 -> Fade In: 82%
00:19:57:826 -> Fade In: 83%
00:19:57:887 -> Fade In: 84%
00:19:57:949 -> Fade In: 85%
00:19:58:029 ---- 已发送 utf8 编码消息: "led -m 2 0\r\n" ----
00:19:58:011 -> LED mode set to 2

6.2 优化方向

  • 新增屏幕:通过屏幕显示更便于调试

  • 优化命令:目前的命令感觉不是很好用,但又没有什么好想法,准备做一个类似于Tab补全和历史命令保存的功能

6.3 gitee仓库链接

  • https://gitee.com/YuThirteen/SAME51J20A

image.png

参考文件

[1] SAME51J20 芯片数据手册:https://ww1.microchip.com/downloads/aemDocuments/documents/MCU32/ProductDocuments/DataSheets/SAM-D5x-E5x-Family-Data-Sheet-DS60001507.pdf

[2] EV76S68A 开发板用户手册:https://ww1.microchip.com/downloads/aemDocuments/documents/MCU32/ProductDocuments/UserGuides/SAM-E51-Curiosity-Nano-User-Guide-DS70005432.pdf






关键词: EV76S68A     试用     串口    

共1条 1/1 1 跳转至

回复

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