3827|10

508

帖子

4

TA的资源

纯净的硅(高级)

楼主
 

【贝能高性价比ATSAMD51评估板】从零开始开发环境搭建基于寄存器点灯 [复制链接]

准备

安装MDK这里就不再赘述了。

 

安装芯片支持包

 

安装ATSAME54开发板支持包,本开发板基于ATSAME54 XPlained PRO开发板的基础上开发,两个 MCU 在引脚数和外设方面完全相同,只是 ATSAMD51P20A 没有以太网和 CAN FD。

ATSAMD5x/E5x是同一个系列,用ATSAME54 XPlained PRO评估板的例程,只要不包含以太网和CAN功能的,均可以直接在ATSAMD51 EVK评估板上运行。

 

 

 

创建工程

菜单栏

Project->New uVison Project...

 

 

 

 

配置工程

添加源码main.c

添加到工程,编译,有告警先不管

 

 

邮件点击”Target 1”->Options for Target ‘Target 1’

按如下设置,点击Settings

 

 

选择仿真器

 

 

确认FLASH烧录算法

 

 

勾选如下设置Use Micro LIB

 

下载程序仿真

点击仿真,自动进入main函数处

 

 

以上基本的开发环境就搭建好了,可以仿真了。

 

LED操作

之前已将安装了芯片的支持包

头文件位于

Mdk的安装路径

Keil_v5\ARM\PACK\Microchip\SAMD51_DFP\3.6.120\samd51a\include

 

包含总的头文件#include "sam.h"即可

该头文件根据宏__SAMD51P20A__或者__ATSAMD51P20A__会包含

#include "samd51p20a.h"

再包含\ARM\PACK\Microchip\SAMD51_DFP\3.6.120\samd51a\include下的其他头文件。

 

原理图可以看到PC18控制用户LED0

 

 

 

参考用户手册《SAM-D5x-E5x-Family-Data-Sheet-DS60001507.pdf》的第《32. PORT - I/O Pin Controller》 进行IO的控制。

 

IO操作寄存器位于component/port.h

通过#define PORT_REGS                        ((port_registers_t*)0x41008000)               /* PORT Registers Address       */

PORT_REGS.GROUP[x]访问不同组IO。索引0~3分别对应PA~PD

寄存器保护

有些寄存器有保护,需要先解除保护

PORT相关的默认是没有保护,所以不需要操作,不过也可以了解下

 

 

通过WRCTRL 寄存器进行写保护解除

 

 

#define PAC_REGS                         ((pac_registers_t*)0x40000000)                /* PAC Registers Address        */

 

PAC_REGS->PAC_WRCTRL访问

PORT属于APBB桥

 

 

所以BridgeNumber=1

PERID=4

 

PAC_REGS->PAC_WRCTRL  = (1<<16) | (32*1+4); 接触PORT写保护

PORT操作

PORT输出只需要配置最少两个寄存器即可

 

设置输出

PORT_REGS->GROUP[2].PORT_DIRSET = 1<<18;  //PC18 OUTPUT

 

输出0或者1

PORT_REGS->GROUP[2].PORT_OUT |= 1<<18;  //PC18 SET

PORT_REGS->GROUP[2].PORT_OUT &= ~(1<<18);  //PC18 SET

 

所以完整的测试代码如下

#include "sam.h"

 

void io_delay(void)

{

volatile int tout=1000000;

while(tout--);

}

int main(void)

{

 

///PAC_REGS->PAC_WRCTRL  = (1<<16) | (32*1+4);

 

PORT_REGS->GROUP[2].PORT_DIRSET = 1<<18;  //PC18 OUTPUT

 

while(1)

  {

PORT_REGS->GROUP[2].PORT_OUT |= 1<<18;  //PC18 SET

io_delay();

PORT_REGS->GROUP[2].PORT_OUT &= ~(1<<18);  //PC18 SET

io_delay();

}

return 0;

}

 

下载运行可以看到黄色的LED0闪烁。

参考

https://bbs.eeworld.com.cn/elecplay/content/7ca9facb#F4

最新回复

ATSAM D51的MDK 支持包在哪下载?  详情 回复 发表于 2022-12-28 11:28
点赞 关注
 

回复
举报

1730

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

只要不包含以太网和CAN功能的,均可以直接在ATSAMD51 EVK评估板上运行,原来是这样啊

 
 
 

回复

7201

帖子

11

TA的资源

版主

板凳
 
万能的MDK。
 
 
 

回复

7498

帖子

2

TA的资源

版主

4
 

这教程挺详细的,对后面的测评人员也有一定的帮助~

 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

5
 

啊,这个还可以用keil来玩啊,我还以为只能用microchip的maplab呢

 
 
 

回复

7755

帖子

2

TA的资源

五彩晶圆(高级)

6
 

我比较喜欢看atmel的的手册,花花绿绿的

 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

1580

帖子

1

TA的资源

五彩晶圆(初级)

7
 

《SAM-D5x-E5x-Family-Data-Sheet-DS60001507.pdf》能提供个下载地址吗?

PORT_REGS->GROUP[2].PORT_DIRSET

PORT_REGS->GROUP[2].PORT_OUT

这个是怎样定义的,编译时通不过呀!

 
 
 

回复

1580

帖子

1

TA的资源

五彩晶圆(初级)

8
 

《SAM-D5x-E5x-Family-Data-Sheet-DS60001507.pdf》找到了。

 
 
 

回复

114

帖子

0

TA的资源

一粒金砂(中级)

9
 

之前想过用Keil 5


因为没有使用方法


安装的MPLAB X IDE


、MPLAB C非常大


用了7G虚拟内存,


当下载Harmony v3时


Github下载不了


看到Up主的


 
 
 

回复

114

帖子

0

TA的资源

一粒金砂(中级)

10
 

看到UP主的分享,


我用Keil


 
 
 

回复

114

帖子

0

TA的资源

一粒金砂(中级)

11
 

ATSAM D51的MDK 支持包在哪下载?


 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表