国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

這篇具有很好參考價值的文章主要介紹了基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

EtherCAT移植過程

前言:剛拿到一個EtherCAT的開發(fā)需求,本來想安心當個CV戰(zhàn)士的,結(jié)果在網(wǎng)上找了一圈,只有https://www.hexcode.cn/article/5e3ee9a835616641b2daef97?這篇寫的相對詳細,看來偷不了懶了,只有自己重新整理開發(fā)了。

1、需求

基于STM32F407芯片、LAN9253芯片(自帶PHY芯片),驗證8路I/O程序的通信。

2、使用到的工具

  • 協(xié)議棧生成:Excel(編輯協(xié)議棧預文件),SSC-5.11(生成ESC協(xié)議棧文件),XMLSpy(查看XML文件);
  • 代碼編寫:CubeMX,Keil5;
  • 程序驗證:TwinCAT3.0。

3、SSC構(gòu)建協(xié)議棧文件和XML

3.1、配置SSC 協(xié)議棧/XML

SSC-5.11和SSC-5.12生成的協(xié)議棧文件差別有點大,SSC-5.11更適配MicroChip官網(wǎng)提供的SSC SDK。打開SSC,選擇8bit I/O模板,點擊“OK”生成Excel文件(需要保證Excel文件是非加密狀態(tài))。

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

SSC-5.11和SSC-5.12生成的Excel文件區(qū)別在于5.12有一段0xFxxx的片區(qū),用于通道數(shù)量的填寫。5.11生成的協(xié)議棧不用在意這個,狀態(tài)轉(zhuǎn)換的時候會忽略這個步驟。(所以不能用非同一SSC配出來的XML和協(xié)議棧!)

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

打開5.11生成的Excel文件,配置如下:

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

0x6000定義的是輸入,0x7000定義的是輸出,配置完成后保存,退出。

這個時候有的SSC會自動加載Excel文件,如果沒有自動加載,點擊Tool->Application->Import,加載剛才配置的Excel文件。

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

RT2000是自定義的SSC協(xié)議棧名稱,右邊顯示的是所使用到的SSC協(xié)議棧版本。附一張5.12配出的文件:

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

可以很明顯的看出協(xié)議棧里的很多文件已經(jīng)變更了,5.11版的協(xié)議棧和官方給的SDK更適配。參考“AN_ET9300.pdf”文件,SSC選項設置如下:

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

選項設置好后點擊Project->Create New Slave File,生成XML文件和協(xié)議棧文件夾。

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

3.2、修改SSC 協(xié)議棧/XML

由于SSC是針對倍福公司的軟硬件生成協(xié)議棧,而我們使用的是基于LAN9252芯片和STM32F4芯片的程序架構(gòu),所以需要更改一些東西:

  • XML的EEPROM類型;
  • 協(xié)議棧增加LAN9252.c/LAN9252.h文件。

3.2.1、XML-> EEPROM

打開XML文件,Descirptions->Devices->Device->Eeprom->ConfigData:

800E00CC8813f000000000800000

保存,找到TwinCAT3路徑的XML路徑:C:\TwinCAT\3.1\Config\Io\EtherCAT,把TwinCAT3自帶的XML模板全刪了,然后把自己生成的XML文件丟進去。

3.2.2、增加LAN9252.c/LAN9252.h文件

Micrchip官網(wǎng)下載SDK(“LAN9252-PIC32-SDK-1.1”),里面有這個兩個文件,我們只需要里面的代碼架構(gòu),里面的內(nèi)容都可以自己寫。

4、創(chuàng)建MDK工程,移植協(xié)議棧

4.1、CubeMX創(chuàng)建STM32F407工程

此過程中,我們需要開啟以下引腳功能:

  • 外部晶振;
  • SPI1;
  • 1個定時器中斷;
  • 3個外部中斷(一個主中斷,兩個時鐘同步中斷,該程序使用的是DC同步,如果是用Free同步或者是SM同步,則只需要開一個主中斷,主中斷和定時器中斷的優(yōu)先級一樣且要高于時鐘同步中斷);
  • 所使用的的I/O引腳。
  • 串口(非必須)。

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

點擊Project Manager,添加工程名,選擇MDK-ARM,點擊Create Code生成對應的MDK工程。

4.2、移植協(xié)議棧

把第3章生成的協(xié)議棧添加進MDK文件樹中,如下圖:

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

RT2000.c是SSC生成的“從站APPlication”文件,I/O引腳映射和應用層邏輯在這個文件里面修改;

LAN9252.c是SDK里面的,用于完成MCU和LAN9252芯片之間的通信建立。

重點就在這兩個文件里面,除此之外,在spi.c文件里面創(chuàng)建對應的spi讀寫函數(shù)就行了。

接下來按照順序,先修改spi,在修改LAN9252,最后修改APPlication文件。

4.2.1、SPI.c

根據(jù)SDK文件里面的SPIDriver,創(chuàng)建SPI發(fā)送/SPI接收函數(shù),其實也可以直接Copy過來用,刪除SPIOpen(),SPIPut(),修改一下SPIWrite()和SPIRead()對應的讀寫HAL函數(shù),補一下(void)。最后修改一下

SPI_CS的置高/置低HAL函數(shù):

#define DESELECT_SPI??? HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port,SPI1_NSS_Pin,GPIO_PIN_SET)

#define SELECT_SPI??????? HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port,SPI1_NSS_Pin,GPIO_PIN_RESET)

#define CSHIGH()??????? DESELECT_SPI

#define CSLOW()??????????? SELECT_SPI

4.2.2、LAN9252.c

由于SDK里面的文件是針對MicrChip公司自家的PIC32芯片,所以改動內(nèi)容有點多,但都是把PIC32的函數(shù)格式改成HAL函數(shù)格式。

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

這里,關于定時器,我Cubemx配置的是tim2,在移植過程中,擔心基本定時器不夠用,后面改起來麻煩,就直接在代碼里自己換成了tim7。這里可以根據(jù)需要,換成自己的定時器。

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

然后是中斷服務函數(shù):

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

Lan9252.c->HW_EscWirte()里面,修改如下:

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

刪除這個函數(shù)之后的所有函數(shù),那些函數(shù)是PIC的中斷函數(shù),我們已經(jīng)自定義了。

4.2.3、RT2000.c – APP程序

這個文件中,根據(jù)需要修改我們的程序邏輯就好。

4.2.3.1 停止輸出

UINT16 APPL_StopOutputHandler(void)

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

4.2.3.2 輸入地址映射

void APPL_InputMapping(UINT16* pData)

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

4.2.3.3 輸出地址映射

void APPL_OutputMapping(UINT16* pData)

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

4.2.3.4 APP應用邏輯

void APPL_Application(void)

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

4.3、補充說明

4.3.1、UINT16_VAL 和 UINT32_VAL

這是PIC芯片的庫文件包含,如果不想做太多更改,在自己的spi.h文件中直接添加如圖聯(lián)合體:

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

4.3.2、MEM_ADDR長度

UINT16用SPIWriteWord()

UINT32用SPIWriteDWord()

4.3.3、HW_Init()

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

像 #if USE_SPI 這樣的篩選函數(shù),直接刪掉。

5、程序驗證

使用TwinCAT3創(chuàng)建程序,更新EEPROM:

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程

至此,EtherCAT從站協(xié)議棧移植完畢。

代碼部分:基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程,代碼部分https://blog.csdn.net/qq_41580996/article/details/130292031

TwinCAT調(diào)試過程中出現(xiàn)的錯誤碼,參考倍福官方給的詳解:

https://infosys.beckhoff.com/english.php?content=../content/1033/ethercatsystem/1072497163.html&id=

點贊-收藏-over。文章來源地址http://www.zghlxwxcb.cn/news/detail-491158.html

到了這里,關于基于STM32F407-LAN9252的EtherCAT從站協(xié)議移植過程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • STM32F407 移植 FreeRTOS

    STM32F407 移植 FreeRTOS

    本實驗是基于正點原子 STM32F407ZG 探索者開發(fā)板完成的,所以需要一個STM32F407ZG 探索者開發(fā)板 用于移植的基礎工程(下面會講) FreeRTOS源碼(下面會講) 本實驗所有用到的代碼:基于正點原子STM32F407的FreeRTOS移植工程.zip 1.1 移植前準備 1.1.1 基礎工程 由于后續(xù)需要用到 LED、

    2024年02月08日
    瀏覽(28)
  • STM32F407移植OpenHarmony筆記1

    參考文檔: OpenAtom OpenHarmony width=device-width,initial-scale=1.0 https://docs.openharmony.cn/pages/v3.2/zh-cn/device-dev/get-code/gettools-acquire.md/ 搭建環(huán)境 安裝linux系統(tǒng): Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-91-generic x86_64) 下載源代碼:我選擇的是V3.2.4版本 https://repo.huaweicloud.com/openharmony/os/3.2.4/code-v3.2.4-Rele

    2024年01月25日
    瀏覽(24)
  • 匿名上位機V7.12協(xié)議編程(基于STM32F407+CubeMX+UART外設通信)

    匿名上位機V7.12協(xié)議編程(基于STM32F407+CubeMX+UART外設通信)

    本篇以STM32F407VET6主控為基礎進行論述。 文章的目的在于記錄和引導, 傳遞一些編寫通信類功能會用到的基本思想 ,以及組合這些功能的思想。 匿名上位機V7版本的功能在本篇沒有全部寫出來,而是針對本上位機常用的功能舉例來描述。 相信讀者通過仔細閱讀筆者的思想引

    2023年04月14日
    瀏覽(94)
  • STM32開發(fā)之Modbus協(xié)議(RTU從站)

    說明 1、本文不做協(xié)議格式的講解,只做實現(xiàn),如需了解協(xié)議格式,自行搜索 2、本文不依賴于硬件相關的資源,建立在硬件通訊之上,通過回調(diào)的形式和對應的硬件進行關聯(lián) 3、相關協(xié)議內(nèi)容參照,上一篇RTU主站 宏定義(modbus_core_define) crc校驗(modbus_core_crc) 頭文件 源文件

    2024年02月11日
    瀏覽(21)
  • 十四.EtherCAT開發(fā)之ST MCU STM32F407ZGt6+ AX58100的開發(fā)FOE應用

    STM32F407ZGt6與AX58100是 SPI連接,工作在SPI模式。 FoE(File Access over EtherCAT)可實現(xiàn)EtherCAT節(jié)點之間的文件傳輸。 boot mode與FOE支持 FOE 說是要在狀態(tài)機的boot mode下運行,實際測試了在OP模式也能收數(shù)據(jù)??赡苁菫榱朔€(wěn)定,減少出錯把,畢竟是升級固件。 14.1.1 XML支持字段 XML名稱—AX58

    2024年02月10日
    瀏覽(131)
  • STM32F407移植1588v2(ptpd)

    STM32F407移植1588v2(ptpd)

    硬件: STM32F407ZGT6開發(fā)板 軟件: VSCode arm-none-eabi-gcc openOCD st-link 在github搜到一個在NUCLEO-F429ZI開發(fā)板上移植ptpd的example,因為和F407差別很小,所以就打算用這個demo移植到手頭的開發(fā)板上。因為目前只需要slave,所以只調(diào)試了slave。據(jù)介紹,master好像原作者沒有充分測試過。 源項

    2024年02月09日
    瀏覽(26)
  • GD32F450+LAN8720A,#FreeRTOS_Plus_TCP 網(wǎng)絡協(xié)議棧移植教程

    GD32F450+LAN8720A,#FreeRTOS_Plus_TCP 網(wǎng)絡協(xié)議棧移植教程

    (此博文在2023年10月寫完后,在2023年11月有更新,更新內(nèi)容包括博文內(nèi)容與代碼文件,代碼效果不變,但更新后的邏輯更合理) FreeRTOS-Plus-TCP 是一種適用于 FreeRTOS 的可擴展的開源和線程安全 TCP/IP 堆棧。 FreeRTOS-Plus-TCP 提供了一個熟悉的 基于標準 Berkeley 套接字的接口, 簡單易用

    2024年01月16日
    瀏覽(17)
  • STM32F407+LWIP+DP83848以太網(wǎng)驅(qū)動移植

    STM32F407+LWIP+DP83848以太網(wǎng)驅(qū)動移植

    ??最近有個項目上需要用到網(wǎng)絡功能,于是開始移植網(wǎng)絡相關代碼。在移植的過程中感覺好難,網(wǎng)上找各種資料都沒有和自己項目符合的,移植廢了廢了好的大勁。不過現(xiàn)在回頭看看,其實移植很簡單,主要是當時剛開始接觸網(wǎng)絡,各種新的知識和概念撲面而來,加上LWI

    2024年02月12日
    瀏覽(18)
  • STM32 F407探索者移植正點原子LCD例程(CubeMx)

    STM32 F407探索者移植正點原子LCD例程(CubeMx)

    先說明本次實驗所使用的硬件型號,本次實驗使用正點原子F407探索者V3.4版本,屏幕尺寸為4.3寸 TFTLCD。 本文章主要講解如何移植正點原子的官方LCD代碼,并不涉及太多理論知識。然后,官方的LCD代碼應該是更新過了,因為之前也移植過一次其他板子的,好像也不是醬紫,所以

    2024年04月17日
    瀏覽(86)
  • stm32f407移植LVGL8.3.1實況(所有bug調(diào)試現(xiàn)場,最終成功點燈)

    stm32f407移植LVGL8.3.1實況(所有bug調(diào)試現(xiàn)場,最終成功點燈)

    聲明: 本文主要參考 stm32移植lvgl_NULL_1969的博客-CSDN博客_lvgl stm32 及 STM32移植LVGL8.0.2超詳細的保姆級教程附移植好的工程文件 ,底層驅(qū)動主要采用正點原子觸摸屏實驗和定時器實驗 1.1 主要硬件接口 1.1.1 觸摸屏 主要需要觸摸屏來實現(xiàn)屏幕的顯示及觸摸。 觸摸屏需要底層的接

    2024年01月16日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包