“本文通過動(dòng)手實(shí)驗(yàn),從無到有新建立一個(gè)MCU軟件工程,實(shí)現(xiàn)MCP2518FD的初始化和CAN FD報(bào)文發(fā)送與接收。”
雖然本專題上一篇文章已經(jīng)介紹了基于MCP2518FD+ATA6563實(shí)現(xiàn)外擴(kuò)CAN/CAN FD接口的設(shè)計(jì)過程,但在ATSAMD21G17D具體操作MCP2518FD的過程中可能還會(huì)碰到這樣那樣的問題,因此這里從無到有新建一個(gè)·工程,用一步一步的記錄展示完成上篇文章提到的軟件實(shí)現(xiàn),使大家有一個(gè)更直觀的認(rèn)識(shí),方便大家評(píng)估軟件開發(fā)的工作量。
本實(shí)驗(yàn)主要基于32位MCU的開發(fā)環(huán)境MPLAB® Harmony v3來完成,若您沒有安裝相關(guān)開發(fā)環(huán)境,請參考微信公眾號(hào)王超的小站"開發(fā)工具->工具安裝",依次安裝如下幾個(gè)部分,然后進(jìn)入動(dòng)手實(shí)驗(yàn)環(huán)節(jié)。
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, 點(diǎn)擊“Next”按鈕進(jìn)入下一步。
3)框架路徑設(shè)置為MPLAB® Harmony v3安裝過程中g(shù)it到本地的內(nèi)容所在的文件夾,然后點(diǎn)擊“Next”按鈕進(jìn)入下一步。
4)設(shè)置工程所在的文件夾和工程名稱(這里將工程命名為mcp2518fd_demo),然后點(diǎn)擊“Next”按鈕進(jìn)入下一步。
5)選擇器件,這里根據(jù)實(shí)驗(yàn)選擇32位Coretx-M0+ MCU ATSAMD21G17D,然后點(diǎn)擊“Finish”按鈕進(jìn)入下一步。
6)mcp2518fd_demo空工程建立后的界面如下。
2. MHC(MPLAB Harmony Configurator)啟動(dòng)
1)新建工程后會(huì)自動(dòng)彈出如下界面,DFP和CMSIS選擇默認(rèn)配置,然后點(diǎn)擊“Launch”按鈕啟動(dòng)MHC。該界面在下次打開工程時(shí)也可以用戶手動(dòng)彈出,在MAPLAB X IDE環(huán)境下,點(diǎn)擊菜單欄Tools->MPLAB® Harmony 3 Configurator即可。
2)MHC啟動(dòng)后的界面如下。
3. MHC中Pin配置
1)在MHC界面,選擇Tools->Pin Configuration。
2)在Pin Settings界面,根據(jù)上篇文章提到的軟硬件接口表設(shè)置如下IO。
3)在Pin Table界面,根據(jù)上篇文章提到的軟硬件接口表設(shè)置SPI和USART,這兩個(gè)串口通訊都是借助ATSAMD21的SERCOM外設(shè)實(shí)現(xiàn),該外設(shè)可根據(jù)用戶需要作為SPI、USART或I2C,非常靈活。這里ATSAMD21將SERCOM1作為與MCP2518FD通信的SPI外設(shè),將SERCOM5作為與電腦串口終端的USART外設(shè)。
4. MHC中外設(shè)添加
1)在MHC界面,雙擊或拖拽的方式將左側(cè)外設(shè)下的SERCOM1和SERCOM5,及Tools下的STDIO添加到Project Graph下。
2)SERCOM1設(shè)置:點(diǎn)擊SERCOM1后在右側(cè)可以看到其配置界面,綠色底色代表相較默認(rèn)值做了更改。這里將SPI時(shí)鐘速率設(shè)置為10MHz,SPI模式選擇MCP2518FD認(rèn)可的模式0,相應(yīng)的pad根據(jù)上述pin設(shè)置進(jìn)行調(diào)整。
3)SERCOM5設(shè)置:點(diǎn)擊SERCOM5后在右側(cè)可以看到其配置界面,綠色底色代表相較默認(rèn)值做了更改。這里將USART波特率設(shè)置為115200Hz,8位數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn)。同時(shí)將SERCOM5的UART口和STDIO的UART口相連,這樣生成代碼后用戶可以在工程中直接調(diào)用打印函數(shù)printf。
5. MHC中系統(tǒng)滴答定時(shí)器添加
點(diǎn)擊System后在右側(cè)可以看到其配置界面,綠色底色代表相較默認(rèn)值做了更改,如下設(shè)置代表在生成代碼后用戶可以在工程中直接調(diào)用SYSTICK_DelayMs函數(shù)。
6. MHC中時(shí)鐘相關(guān)配置
1)在MHC界面,選擇Tools->Clock Configuration。
2)時(shí)鐘配置保持默認(rèn)即可,可以看出SERCOM1和SERCOM5的外設(shè)時(shí)鐘默認(rèn)是48MHz。
7. MHC生成代碼
1)如上配置保存后,在MHC界面選擇Generate->Generate Code。
2)彈出如下界面后點(diǎn)擊“Generate”按鈕生成代碼。
3)代碼生成過程中。。。完成后會(huì)自動(dòng)關(guān)閉該界面。
4)此時(shí)在工程目錄下將包含MHC生成的外設(shè)等代碼,還包含一個(gè)基本的main.c。
8. 添加其他工程代碼
1)將MCP2518FD的driver、測試app和實(shí)驗(yàn)main.c拷貝到工程目錄。
2)將上述driver、app文件夾下的.c和.h添加到工程中;main.c因?yàn)槭翘鎿Q不用添加。
3)工程頭文件路徑添加,添加文件夾drever/mcp2518fd_driver和app。
9. 器件編程及實(shí)驗(yàn)結(jié)果驗(yàn)證
1)按如下圖選擇仿真器和編譯器,點(diǎn)擊“Apply”后點(diǎn)擊“OK”按鈕。
2)點(diǎn)擊“編譯下載”按鈕,將程序燒錄到ATSAMD21G17D中。
3)選擇“Tools->Embedded->Data Visualizer”。
4)設(shè)置波特率115200。
5)選擇Send to terminal,開始接收ATSAMD21打印的報(bào)文消息。
6)串口終端顯示報(bào)文ID 0x300~0x307可靠接收,報(bào)文ID 0x308~0x30f被過濾掉。至此,該動(dòng)手實(shí)驗(yàn)結(jié)束。。。