王超的小站
认证:VIP会员
所在专题目录 查看专题
MCU扩展CAN/CAN FD接口方案-MCP2518FD+ATA6563
MCU扩展CAN/CAN FD接口方案-MCU软件动手实验
作者动态 更多
PIC24 & dsPIC33 MCU Bootloader开发
2021-11-08 15:12
PIC16 & PIC18 MCU Bootloader开发
2021-11-08 15:00
Python开发环境搭建(for Bootloader)
2021-11-08 14:58
Python开发环境搭建 (for Control)
2021-01-27 18:43
MCU扩展CAN/CAN FD接口方案-MCU软件动手实验
2020-11-25 14:11

MCU扩展CAN/CAN FD接口方案-MCU软件动手实验

“本文通过动手实验,从无到有新建立一个MCU软件工程,实现MCP2518FD的初始化和CAN FD报文发送与接收。”   

      虽然本专题上一篇文章已经介绍了基于MCP2518FD+ATA6563实现外扩CAN/CAN FD接口的设计过程,但在ATSAMD21G17D具体操作MCP2518FD的过程中可能还会碰到这样那样的问题,因此这里从无到有新建一个·工程,用一步一步的记录展示完成上篇文章提到的软件实现,使大家有一个更直观的认识,方便大家评估软件开发的工作量。

      本实验主要基于32位MCU的开发环境MPLAB® Harmony v3来完成,若您没有安装相关开发环境,请参考微信公众号王超的小站"开发工具->工具安装",依次安装如下几个部分,然后进入动手实验环节。

1)MPLAB® X IDE

2)MPLAB® XC32

3)MPLAB® Harmony v3

4)MPLAB® Data Visualizer

1. 新建工程

1)打开MPLAB® X IDE,选择“File->New Project”。

2)弹出对话框选择32-bit MPLAB Harmony 3 Project, 点击“Next”按钮进入下一步。

3)框架路径设置为MPLAB® Harmony v3安装过程中git到本地的内容所在的文件夹,然后点击“Next”按钮进入下一步。

4)设置工程所在的文件夹和工程名称(这里将工程命名为mcp2518fd_demo),然后点击“Next”按钮进入下一步。

5)选择器件,这里根据实验选择32位Coretx-M0+ MCU ATSAMD21G17D,然后点击“Finish”按钮进入下一步。

6)mcp2518fd_demo空工程建立后的界面如下。

2. MHC(MPLAB Harmony Configurator)启动

1)新建工程后会自动弹出如下界面,DFP和CMSIS选择默认配置,然后点击“Launch”按钮启动MHC。该界面在下次打开工程时也可以用户手动弹出,在MAPLAB X IDE环境下,点击菜单栏Tools->MPLAB® Harmony 3 Configurator即可。

2)MHC启动后的界面如下。

3. MHC中Pin配置

1)在MHC界面,选择Tools->Pin Configuration。

2)在Pin Settings界面,根据上篇文章提到的软硬件接口表设置如下IO。

3)在Pin Table界面,根据上篇文章提到的软硬件接口表设置SPI和USART,这两个串口通讯都是借助ATSAMD21的SERCOM外设实现,该外设可根据用户需要作为SPI、USART或I2C,非常灵活。这里ATSAMD21将SERCOM1作为与MCP2518FD通信的SPI外设,将SERCOM5作为与电脑串口终端的USART外设。

4. MHC中外设添加

1)在MHC界面,双击或拖拽的方式将左侧外设下的SERCOM1和SERCOM5,及Tools下的STDIO添加到Project Graph下。

2)SERCOM1设置:点击SERCOM1后在右侧可以看到其配置界面,绿色底色代表相较默认值做了更改。这里将SPI时钟速率设置为10MHz,SPI模式选择MCP2518FD认可的模式0,相应的pad根据上述pin设置进行调整。

3)SERCOM5设置:点击SERCOM5后在右侧可以看到其配置界面,绿色底色代表相较默认值做了更改。这里将USART波特率设置为115200Hz,8位数据位,1位停止位,无奇偶校验。同时将SERCOM5的UART口和STDIO的UART口相连,这样生成代码后用户可以在工程中直接调用打印函数printf。

5. MHC中系统滴答定时器添加

点击System后在右侧可以看到其配置界面,绿色底色代表相较默认值做了更改,如下设置代表在生成代码后用户可以在工程中直接调用SYSTICK_DelayMs函数。

6. MHC中时钟相关配置

1)在MHC界面,选择Tools->Clock Configuration。

2)时钟配置保持默认即可,可以看出SERCOM1和SERCOM5的外设时钟默认是48MHz。

7. MHC生成代码

1)如上配置保存后,在MHC界面选择Generate->Generate Code。

2)弹出如下界面后点击“Generate”按钮生成代码。

3)代码生成过程中。。。完成后会自动关闭该界面。

4)此时在工程目录下将包含MHC生成的外设等代码,还包含一个基本的main.c。

8. 添加其他工程代码

1)将MCP2518FD的driver、测试app和实验main.c拷贝到工程目录。

2)将上述driver、app文件夹下的.c和.h添加到工程中;main.c因为是替换不用添加。

3)工程头文件路径添加,添加文件夹drever/mcp2518fd_driver和app。

9. 器件编程及实验结果验证

1)按如下图选择仿真器和编译器,点击“Apply”后点击“OK”按钮。

2)点击“编译下载”按钮,将程序烧录到ATSAMD21G17D中。

3)选择“Tools->Embedded->Data Visualizer”。

4)设置波特率115200。

5)选择Send to terminal,开始接收ATSAMD21打印的报文消息。

6)串口终端显示报文ID 0x300~0x307可靠接收,报文ID 0x308~0x30f被过滤掉。至此,该动手实验结束。。。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
本篇所含全部资料,点击此处留下邮箱我会发给你
资料明细:mcp2518fd_demo工程
觉得内容不错的朋友,别忘了一键三连哦!
赞 5
收藏 4
关注 40
成为作者 赚取收益
全部留言
0/200
  • 熊紅 2022-11-27 11:37
    老师,能不能发我一下资料,谢谢! m1****@****.com
    回复 1条回复
  • 星球居民-u6Yn6Gg6 2020-11-26 15:57
    王工,您好。请帮忙提供一下例程资料,谢谢哈 bo****@****.com
    回复 1条回复
  • 星球居民-u6Yn6Gg6 2020-11-26 15:57
    王工,您好。请帮忙提供一下例程资料,谢谢哈 bo****@****.com
    回复 1条回复