Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
LAN9252.cpp
00001 00002 #include "LAN9252.h" 00003 #include "LAN925X_SPI.h" 00004 #include <stdint.h> 00005 00006 //=============================================================================// 00007 // LAN9252 RESET 00008 //=============================================================================// 00009 void LAN9252_RESET(void) 00010 { 00011 uint32_t rdata; 00012 uint32_t wdata; 00013 uint32_t addr; 00014 00015 addr = RESET_CTL; 00016 LAN925X_SPI_WRITE(addr,ETHERCAT_RST); 00017 addr = BYTE_TEST; 00018 rdata = LAN925X_SPI_READ(addr); 00019 while(rdata!=0x87654321) 00020 { 00021 addr = BYTE_TEST; 00022 rdata = LAN925X_SPI_READ(addr); 00023 } 00024 } 00025 00026 //=============================================================================// 00027 // LAN9252 EtherCAT CSR WRITE 00028 //=============================================================================// 00029 void LAN9252_EtherCAT_CSR_WRITE(uint8_t CSR_SIZE,uint16_t CSR_ADDR,uint32_t CSR_DATA) 00030 { 00031 00032 uint32_t rdata; 00033 uint32_t wdata; 00034 uint16_t addr; 00035 addr = ECAT_CSR_DATA; 00036 wdata = CSR_DATA; 00037 LAN925X_SPI_WRITE(addr,wdata); 00038 00039 addr = ECAT_CSR_CMD; 00040 wdata = (uint32_t)CSR_BUSY | (uint32_t)0<<30 | (uint32_t)CSR_SIZE<<16 | (uint32_t)CSR_ADDR; //Write 00041 LAN925X_SPI_WRITE(addr,wdata); 00042 00043 addr = ECAT_CSR_CMD; 00044 rdata = LAN925X_SPI_READ(addr); 00045 while(CSR_BUSY&rdata) 00046 { 00047 addr = ECAT_CSR_CMD; 00048 rdata = LAN925X_SPI_READ(addr); 00049 } 00050 00051 } 00052 //=============================================================================// 00053 // LAN9252 EtherCAT CSR READ 00054 //=============================================================================// 00055 uint32_t LAN9252_EtherCAT_CSR_READ(uint8_t CSR_SIZE,uint16_t CSR_ADDR) 00056 { 00057 00058 uint32_t rdata; 00059 uint32_t wdata; 00060 uint16_t addr; 00061 addr = ECAT_CSR_CMD; 00062 wdata = (uint32_t)CSR_BUSY | (uint32_t)1<<30 | (uint32_t)CSR_SIZE<<16 | (uint32_t)CSR_ADDR; //Read 00063 LAN925X_SPI_WRITE(addr,wdata); 00064 00065 addr = ECAT_CSR_CMD; 00066 rdata = LAN925X_SPI_READ(addr); 00067 while(CSR_BUSY&rdata) 00068 { 00069 addr = ECAT_CSR_CMD; 00070 rdata = LAN925X_SPI_READ(addr); 00071 } 00072 addr = ECAT_CSR_DATA; 00073 rdata = LAN925X_SPI_READ(addr); 00074 return rdata; 00075 } 00076 //=============================================================================// 00077 // LAN9252 EtherCAT Prossec RAM Read 00078 //=============================================================================// 00079 uint32_t LAN9252_EtherCAT_PRAM_READ(uint16_t PRAM_READ_LEN,uint16_t PRAM_READ_ADDR) 00080 { 00081 uint32_t rdata; 00082 uint32_t wdata; 00083 uint32_t tmp; 00084 uint16_t addr; 00085 00086 addr = ECAT_PRAM_RD_ADDR_LEN; 00087 wdata = (uint32_t)PRAM_READ_LEN<<16 | (uint32_t)PRAM_READ_ADDR; 00088 LAN925X_SPI_WRITE(addr,wdata); 00089 00090 addr = ECAT_PRAM_RD_CMD; 00091 wdata = PRAM_READ_BUSY ; 00092 LAN925X_SPI_WRITE(addr,wdata); 00093 00094 addr = ECAT_PRAM_RD_DATA; 00095 rdata = LAN925X_SPI_READ(addr); 00096 00097 addr = ECAT_PRAM_RD_CMD; 00098 tmp = LAN925X_SPI_READ(addr); 00099 while(PRAM_READ_BUSY&tmp) 00100 { 00101 addr = ECAT_PRAM_RD_CMD; 00102 tmp = LAN925X_SPI_READ(addr); 00103 } 00104 return rdata; 00105 } 00106 //=============================================================================// 00107 // LAN9252 EtherCAT Prossec RAM Read 00108 //=============================================================================// 00109 void LAN9252_EtherCAT_PRAM_WRITE(uint16_t PRAM_WRITE_LEN,uint16_t PRAM_WRITE_ADDR, uint32_t PRAM_WR_DATA) 00110 { 00111 uint32_t rdata; 00112 uint32_t wdata; 00113 uint32_t tmp; 00114 uint16_t addr; 00115 00116 00117 addr = ECAT_PRAM_WR_DATA; 00118 wdata = PRAM_WR_DATA; 00119 LAN925X_SPI_WRITE(addr,wdata); 00120 00121 addr = ECAT_PRAM_WR_ADDR_LEN; 00122 wdata = (uint32_t)PRAM_WRITE_LEN<<16 | (uint32_t)PRAM_WRITE_ADDR; 00123 LAN925X_SPI_WRITE(addr,wdata); 00124 00125 addr = ECAT_PRAM_WR_CMD; 00126 wdata = PRAM_WRITE_BUSY ; 00127 LAN925X_SPI_WRITE(addr,wdata); 00128 00129 addr = ECAT_PRAM_WR_CMD; 00130 tmp = LAN925X_SPI_READ(addr); 00131 while(PRAM_WRITE_BUSY&tmp) 00132 { 00133 addr = ECAT_PRAM_WR_CMD; 00134 tmp = LAN925X_SPI_READ(addr); 00135 } 00136 } 00137
Generated on Fri Jul 15 2022 00:02:54 by
1.7.2