news 2026/6/22 5:00:35

Zynq领航者板测试EtherCAT_LAN9252从站板

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Zynq领航者板测试EtherCAT_LAN9252从站板

领航者ZYNQ开发板的J4引脚 ,正好能接入淘宝买的EtherCAT_LAN9252从站板
注意 领航者ZYNQ开发板的J3引脚(GND 5V),碰到了 EtherCAT_LAN9252从站板上的贴片电容
应该用东西挡一下

参考

zynq的网口和串口透传.csdn
j2b描述ethercat.csdn

主站板资料

领航者ZYNQ 7020开发板

EtherCAT_LAN9252从站板

通过网盘分享的文件:01_iBT-EtherCAT 链接: https://pan.baidu.com/s/19XWjml_uv2Gt0CLikkUNvg?pwd=6r3s 提取码: 6r3s

连接关系

# 领航者ZYNQ J4端子[W11 U13 U15 W13 Y14 W153.3V][Y11 V13 U14 V12 W14 V15 GND]# EtherCat Lan9252从站板SPI接口端子[CS INT S0 S1 NA RST3.3V][GND NA MOSI MISO CLK NA GND]

BD

ecat_slave_spi_system.tcl

PIN

除了 DO0~DO3 其他引脚要接入EtherCAT_LAN9252从站板

## SPI SCLKset_property PACKAGE_PIN W14[get_ports SPI_0_0_sck_io]set_property IOSTANDARD LVCMOS33[get_ports SPI_0_0_sck_io]## SPI MOSIset_property PACKAGE_PIN U14[get_ports SPI_0_0_io0_io]set_property IOSTANDARD LVCMOS33[get_ports SPI_0_0_io0_io]## SPI MISOset_property PACKAGE_PIN V12[get_ports SPI_0_0_io1_io]set_property IOSTANDARD LVCMOS33[get_ports SPI_0_0_io1_io]## SPI CSset_property PACKAGE_PIN W11[get_ports SPI_0_0_ss_io]set_property IOSTANDARD LVCMOS33[get_ports SPI_0_0_ss_io]## ECAT_GNDset_property PACKAGE_PIN Y11[get_ports{ECAT_GND[0]}]set_property IOSTANDARD LVCMOS33[get_ports{ECAT_GND[0]}]## RSTset_property PACKAGE_PIN W15[get_ports{GPIO_EMIO_tri_io[4]}]set_property IOSTANDARD LVCMOS33[get_ports{GPIO_EMIO_tri_io[4]}]## INTset_property PACKAGE_PIN U13[get_ports{GPIO_EMIO_tri_io[5]}]set_property IOSTANDARD LVCMOS33[get_ports{GPIO_EMIO_tri_io[5]}]## SYNC0set_property PACKAGE_PIN U15[get_ports{GPIO_EMIO_tri_io[6]}]set_property IOSTANDARD LVCMOS33[get_ports{GPIO_EMIO_tri_io[6]}]## SYNC1set_property PACKAGE_PIN W13[get_ports{GPIO_EMIO_tri_io[7]}]set_property IOSTANDARD LVCMOS33[get_ports{GPIO_EMIO_tri_io[7]}]## DO0set_property PACKAGE_PIN J14[get_ports{GPIO_EMIO_tri_io[0]}]set_property IOSTANDARD LVCMOS33[get_ports{GPIO_EMIO_tri_io[0]}]## DO1set_property PACKAGE_PIN L16[get_ports{GPIO_EMIO_tri_io[1]}]set_property IOSTANDARD LVCMOS33[get_ports{GPIO_EMIO_tri_io[1]}]## DO2set_property PACKAGE_PIN U19[get_ports{GPIO_EMIO_tri_io[2]}]set_property IOSTANDARD LVCMOS33[get_ports{GPIO_EMIO_tri_io[2]}]## DO3set_property PACKAGE_PIN N20[get_ports{GPIO_EMIO_tri_io[3]}]set_property IOSTANDARD LVCMOS33[get_ports{GPIO_EMIO_tri_io[3]}]

vitis 裸机测试

main.c

#include"sleep.h"#include"xil_printf.h"#include"xparameters.h"#include"xspips.h"#include"xstatus.h"#include<stdint.h>#defineSPI_DEVICE_IDXPAR_XSPIPS_0_DEVICE_ID#defineSPI_CLK_PRESCALERXSPIPS_CLK_PRESCALE_64#defineSPI_OPTIONS(XSPIPS_MASTER_OPTION|XSPIPS_FORCE_SSELECT_OPTION)#defineCS_ASSERT0x00U#defineCS_RELEASE0x0FU#defineCMD_FAST_READ0x0BU#defineFAST_READ_DUMMY0x00U#defineBYTE_TEST_REG0x0064U#defineBYTE_TEST_VALUE0x87654321ULstaticXSpiPs SpiInstance;staticvoidcs_low(void){XSpiPs_SetSlaveSelect(&SpiInstance,CS_ASSERT);usleep(2U);}staticvoidcs_high(void){XSpiPs_SetSlaveSelect(&SpiInstance,CS_RELEASE);usleep(5U);}staticintspi_init(void){XSpiPs_Config*config;intstatus;config=XSpiPs_LookupConfig(SPI_DEVICE_ID);if(config==NULL){xil_printf("XSpiPs_LookupConfig failed\r\n");returnXST_FAILURE;}status=XSpiPs_CfgInitialize(&SpiInstance,config,config->BaseAddress);if(status!=XST_SUCCESS){xil_printf("XSpiPs_CfgInitialize failed\r\n");returnstatus;}status=XSpiPs_SelfTest(&SpiInstance);if(status!=XST_SUCCESS){xil_printf("XSpiPs_SelfTest failed\r\n");returnstatus;}status=XSpiPs_SetOptions(&SpiInstance,SPI_OPTIONS);if(status!=XST_SUCCESS){xil_printf("XSpiPs_SetOptions failed\r\n");returnstatus;}XSpiPs_SetClkPrescaler(&SpiInstance,SPI_CLK_PRESCALER);cs_high();usleep(1000U);returnXST_SUCCESS;}staticuint32_tlan9252_read_u32(uint16_taddress){uint8_ttx[8]={CMD_FAST_READ,(uint8_t)(address>>8),(uint8_t)(address&0xFFU),FAST_READ_DUMMY,0xFFU,0xFFU,0xFFU,0xFFU};uint8_trx[8]={0U};intstatus;cs_low();status=XSpiPs_PolledTransfer(&SpiInstance,tx,rx,sizeof(tx));cs_high();if(status!=XST_SUCCESS){xil_printf("XSpiPs_PolledTransfer failed\r\n");return0U;}xil_printf("TX: %02X %02X %02X %02X %02X %02X %02X %02X\r\n",tx[0],tx[1],tx[2],tx[3],tx[4],tx[5],tx[6],tx[7]);xil_printf("RX: %02X %02X %02X %02X %02X %02X %02X %02X\r\n",rx[0],rx[1],rx[2],rx[3],rx[4],rx[5],rx[6],rx[7]);return(uint32_t)rx[4]|((uint32_t)rx[5]<<8)|((uint32_t)rx[6]<<16)|((uint32_t)rx[7]<<24);}intmain(void){uint32_tvalue;unsignedintindex;xil_printf("\r\n=== LAN9252 SPI Single File Test ===\r\n");if(spi_init()!=XST_SUCCESS){xil_printf("SPI init failed\r\n");return-1;}while(1){for(index=0U;index<20U;index++){value=lan9252_read_u32(BYTE_TEST_REG);xil_printf("BYTE_TEST[%u] = %08X %s\r\n",index,(unsignedint)value,(value==BYTE_TEST_VALUE)?"PASS":"FAIL");usleep(500000U);}xil_printf("---- retry ----\r\n");usleep(1000000U);}return0;}

测试输出

[18:13:21.293]收←◆---- retry ----[18:13:22.292]收←◆TX: 0B 006400 FF FF FF FF RX: FF FF FF FF21436587BYTE_TEST[0]=87654321PASS[18:13:22.793]收←◆TX: 0B 006400 FF FF FF FF RX: FF FF FF FF21436587BYTE_TEST[1]=87654321PASS
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/16 15:25:42

别再死记硬背I2C时序了!用AT89C52和AT24C02实战,手把手教你调试I2C通信

实战AT89C52与AT24C02&#xff1a;I2C通信调试全攻略1. I2C协议调试的痛点与解决思路调试I2C通信就像在黑暗中摸索——明明按照手册写了代码&#xff0c;AT24C02却毫无反应。这种挫败感每个嵌入式开发者都经历过。传统教学只告诉你怎么写代码&#xff0c;却很少教你当代码不工作…

作者头像 李华
网站建设 2026/6/18 2:32:18

5分钟掌握BedrockLauncher:Minecraft基岩版启动器的终极使用指南

5分钟掌握BedrockLauncher&#xff1a;Minecraft基岩版启动器的终极使用指南 【免费下载链接】BedrockLauncher 项目地址: https://gitcode.com/gh_mirrors/be/BedrockLauncher BedrockLauncher是一款功能强大的Minecraft基岩版启动器&#xff0c;为玩家提供了便捷的游…

作者头像 李华
网站建设 2026/6/20 10:47:26

XUnity.AutoTranslator终极指南:让Unity游戏多语言支持变得简单快速

XUnity.AutoTranslator终极指南&#xff1a;让Unity游戏多语言支持变得简单快速 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经为Unity游戏的多语言支持而头疼&#xff1f;面对不同语言的文本…

作者头像 李华
网站建设 2026/6/14 6:26:35

3分钟搞定视频流畅度革命:Flowframes让你的视频瞬间丝滑如丝

3分钟搞定视频流畅度革命&#xff1a;Flowframes让你的视频瞬间丝滑如丝 【免费下载链接】flowframes Flowframes Windows GUI for video interpolation using DAIN (NCNN) or RIFE (CUDA/NCNN) 项目地址: https://gitcode.com/gh_mirrors/fl/flowframes 还在为视频卡顿…

作者头像 李华