從去年年末接觸EtherCAT總線以來,由于其他一些作業原因,前期設計的基于STM32F303+LAN9252開發板一直未能跑通,僅實作了LAN9252這部分電路與Twincat的通訊,MCU與LAN9252未能成功通信互動資料,近段時間又回傳重新開始了這部分內容,終于是將下位機除錯成功,之前在選擇MCU時考慮很多,最后在網上找到了這樣一份答案,選取EtherCAT主控單片機時應選擇FLASH在25KB、RAM在32KB以上的MCU,考慮成本及一些功能要求在這里我用的是FLASH為128KB,RAM為40KB的STM32F303C6T6這片單片機,整體思路是采用STM32CubeMX生成基礎工程,連接適配好EtherCAT協議包的相關API,撰寫相關的XML檔案,在學習時看了丁丁大佬開發EtherCAT的相關文章,受益匪淺,大佬直通車https://www.hexcode.cn/article/5e3ee9a835616641b2daef97
關于我的設計
由于本次前已完成硬體上的除錯,故本次只對下位機軟體進行一個記錄和說明,
一、STM32CubeMX配置外設等基礎工程
首先,STM32與LAN9252的通信主要涉及到以下內容:
1、SPI: 與LAN9252通訊,讀寫LAN9252的介面,受單片機功能限制,在這里我只能選擇4線標準SPI通信
2、3個外部中斷:IRQ總中斷、SYNC0、SYNC1兩個時鐘同步中斷,EtherCAT主從通信中如果選擇使用分布式時鐘功能,這兩個中斷要配上,(el9800hw.c、el9800hw.h)
3、1ms定時器:用于超時差錯,呼叫ECAT_CheckTimer()函式,配置好后讓協議堆疊自己呼叫,
配置好這些基本的外設,剩下的就是和協議堆疊相結合一個蘿卜一個坑進行移植,移植程序中千萬細心不要出現低級錯誤,
二、配置MCU外設的一些主要截圖
1、引腳

2、時鐘

3、SPI

4、外部中斷

三、KEIL主要外設代碼
為方便快速開發,本次設計直接移植了開發板的EtherCAT包,STM32從站部分已經實作IO、DA、AD等功能,只需對相關變數和SDO進行操作,即可實作特定的功能和應用,


從站修改步驟大體是:
1.自定義物件字典,參考《從站添加物件字典操作流程-R1.2》;
2.在STM32從站程式中,添加外設驅動,初始化程序寫在HW_Init()函式中,

四、測驗
單片機程式、EEPROM和twincat軟體目錄下的XML檔案,三者必須對應,否則會出錯,
1、按鍵測驗

2、LED測驗

3、AD測驗

4、DA測驗
同AD測驗一樣,我們通過單片機產生PWM波輸入到外圍電路,通過外圍運放電路的轉換形成一個0~2.5V的電壓信號輸出,改變PWM波的占空比進而達到不同電壓信號的輸出,如下圖展示了AI信號的連續變化,

本次記錄就到這里啦!
博觀而約取,厚積而薄發!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/196635.html
標籤:AI
