本帖最后由 mxkw0514 于 2022-12-29 11:52 编辑
一、引言
第一次使用32位的Microchip的产品,以前只用过Microchip的8位PIC和AVR单片机。看了一下ATSAMD51P20A芯片的datasheet,了解到该单片机是ARM架构,相对与PIC来说,入门门槛应该是低一点的,比较ARM的生态做得太好了。从相关网站下载了Burnon ATSAMD51 EVK评估板资料包,快速应用小项目对该板卡进行简单的测评,刚好手里有一个GM120的4G通讯模块,就用ATSAMD51P20A串口打印驱动4G模块连接OneNET平台吧。
二、开发环境搭建
ATSAMD51 EVK支持使用MPLAB X IDE、Atmel Studio以及MDK,本次项目还是基于MPLAB X IDE吧,比较使用习惯了。下面开始搭建环境:
第一步,新建工程(如图1):(1)File——>New project——>32-bit MCC Harmony Project。(2)Framework Path——> Name and Location。(3)select MPLAB Harmony——>configuration Settings。 第一步,选择调试工具(如图2):右键工程 ——>Properties——>Connected Hardware Tool——>SAM D51 EVK-SN。这样基本开发环境的配置完成了,最新版的MPLAB开启MCC比较慢,可以先断网等MCC打开后后再联网。
a
b
c
图1 新建工程
图2 选择调试工具
三、项目实现 本次项目主要用到的就是串口,所以在Harmony的Peripherals方面只需要配置SERCOM外设,包括波特率、串口输入输出等(如图3),当然在Project Graph可视化界面中还需要右键SERCOM,选择STDIO输出,并使用鼠标对SERCOM和STDIO连线(如图4),毕竟要用到Printf函数。然后在Pin Diagram界面中配置串口对应的IO口(如图5)。最后使能SYsTick时钟(如图6),毕竟要用到延时函数。
图3 串口配置
图4 选择STDIO
图5 Pin Diagram配置
图6 使能SysTick时钟
接下基于MQTT协议,使用ATSAMD51PA串口打印对应的AT指令驱动GM331模块连接OneNET物联网开放平台,并将数据上传到平台,GM331的指导手册见附件。在这之前还需要在ONeNET平台新建产品和设备(如图7所示),以实现设备与OneNET平台的基于MQTT协议通信。以字符换形式输出的AT指令如下所示:
AT+ZIPCALL=1//激活PDP通道
AT+ZMQNEW=1,183.230.40.39,6002,12000,2048,2//创建基于MATT的TCP连接
AT+ZMQCON=1,4,1028645216,1000,1,0,488625,shentao//连接OneNET服务器
AT+ZMQPUB=1,$dp,1,0,0,18,03000F7b22686569676874223a31352e327d//上传数据
图7 OneNET平台新建产品和项目
四、实验结果
试验装置如图8所示,上传到OneNET的数据流如图9所示。成功实现ATSAMD51PA串口打印驱动4G模块上传数据到OneNET平台。
图8 试验装置图
图9 OneNET平台数据流
五、实验心得
第一次使用32位的Microchip产品还是很紧张的,但是在Burnon ATSAMD51 EVK评估板资料包的指导下还是能够初步上手了,该工具包里面由各个外设的相关例程,还是挺详细的。在使用了两次最新版本的MPLAB X IDE后,已经逐渐适应了,体验还行。至此已经用过了MCC Classic、MCC Melody、MPLAB Harmony,这些都是可视化预配置的相关工具,大致使用方法差不多,细节不同而已
六、附件
Burnon ATSAMD51 EVK评估板资料包地址:
https://www.burnon.com/public/uploads/files/20220513/88f5ed5c2c94f98eb09866161dc23cce.zip
GM331模块指定手册:
「开源教程」GM190核心板MQTT连接ONENET v2.0.pdf
(4.51 MB)
|