EtherCAT Slave Library (LAN9252) https://www.switch-science.com/catalog/6659/

Dependencies:   mbed

Committer:
nonNoise
Date:
Mon Jan 18 03:46:20 2021 +0000
Revision:
0:3516fed95f0b
EtherCAT-Slave-Lib (LAN9252); Ver1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nonNoise 0:3516fed95f0b 1 #include "mbed.h"
nonNoise 0:3516fed95f0b 2
nonNoise 0:3516fed95f0b 3 #include "LAN9252.h"
nonNoise 0:3516fed95f0b 4 #include "LAN925X_SPI.h"
nonNoise 0:3516fed95f0b 5
nonNoise 0:3516fed95f0b 6
nonNoise 0:3516fed95f0b 7 //DigitalOut myled(LED1);
nonNoise 0:3516fed95f0b 8 Serial serial(USBTX, USBRX);
nonNoise 0:3516fed95f0b 9
nonNoise 0:3516fed95f0b 10 void UART_TX_Stringth(char S1[])
nonNoise 0:3516fed95f0b 11 {
nonNoise 0:3516fed95f0b 12 serial.printf(S1);
nonNoise 0:3516fed95f0b 13 }
nonNoise 0:3516fed95f0b 14
nonNoise 0:3516fed95f0b 15
nonNoise 0:3516fed95f0b 16 int main() {
nonNoise 0:3516fed95f0b 17 uint32_t rdata;
nonNoise 0:3516fed95f0b 18 uint32_t rdata_buff[100];
nonNoise 0:3516fed95f0b 19 int cnt=0;
nonNoise 0:3516fed95f0b 20 uint32_t wdata;
nonNoise 0:3516fed95f0b 21 char S1[100];
nonNoise 0:3516fed95f0b 22 uint16_t addr=0;
nonNoise 0:3516fed95f0b 23
nonNoise 0:3516fed95f0b 24 serial.baud(115200);
nonNoise 0:3516fed95f0b 25 UART_TX_Stringth("================================================== \n\r");
nonNoise 0:3516fed95f0b 26 UART_TX_Stringth(" EtherCAT TEST \n\r");
nonNoise 0:3516fed95f0b 27 UART_TX_Stringth("================================================== \n\r");
nonNoise 0:3516fed95f0b 28
nonNoise 0:3516fed95f0b 29 LAN925X_SPI_Init();
nonNoise 0:3516fed95f0b 30 // RESET
nonNoise 0:3516fed95f0b 31 //LAN9252_RESET();
nonNoise 0:3516fed95f0b 32
nonNoise 0:3516fed95f0b 33 addr = ID_REV;
nonNoise 0:3516fed95f0b 34 rdata = LAN925X_SPI_READ(addr);
nonNoise 0:3516fed95f0b 35 sprintf(S1,"ID_REV[0x%04X]: 0x%08lX \n\r",addr,rdata);
nonNoise 0:3516fed95f0b 36 UART_TX_Stringth(S1);
nonNoise 0:3516fed95f0b 37
nonNoise 0:3516fed95f0b 38 addr = BYTE_TEST;
nonNoise 0:3516fed95f0b 39 rdata = LAN925X_SPI_READ(addr);
nonNoise 0:3516fed95f0b 40 sprintf(S1,"BYTE_TEST[0x%04X]: 0x%08lX \n\r",addr,rdata);
nonNoise 0:3516fed95f0b 41 UART_TX_Stringth(S1);
nonNoise 0:3516fed95f0b 42
nonNoise 0:3516fed95f0b 43 addr = FREE_RUN;
nonNoise 0:3516fed95f0b 44 rdata = LAN925X_SPI_READ(addr);
nonNoise 0:3516fed95f0b 45 sprintf(S1,"FREE_RUN[0x%04X]: 0x%08lX \n\r",addr,rdata);
nonNoise 0:3516fed95f0b 46 UART_TX_Stringth(S1);
nonNoise 0:3516fed95f0b 47
nonNoise 0:3516fed95f0b 48
nonNoise 0:3516fed95f0b 49 addr = Type_Register;
nonNoise 0:3516fed95f0b 50 rdata = LAN9252_EtherCAT_CSR_READ(CSR_SIZE_32bit,addr);
nonNoise 0:3516fed95f0b 51 sprintf(S1,"Type_Register[0x%04X]: 0x%08lX \n\r",addr,rdata);
nonNoise 0:3516fed95f0b 52 UART_TX_Stringth(S1);
nonNoise 0:3516fed95f0b 53
nonNoise 0:3516fed95f0b 54 addr = Product_ID;
nonNoise 0:3516fed95f0b 55 rdata = LAN9252_EtherCAT_CSR_READ(CSR_SIZE_32bit,addr);
nonNoise 0:3516fed95f0b 56 sprintf(S1,"Product_ID[0x%04X]: 0x%08lX \n\r",addr,rdata);
nonNoise 0:3516fed95f0b 57 UART_TX_Stringth(S1);
nonNoise 0:3516fed95f0b 58
nonNoise 0:3516fed95f0b 59 addr = Vendor_ID;
nonNoise 0:3516fed95f0b 60 rdata = LAN9252_EtherCAT_CSR_READ(CSR_SIZE_32bit,addr);
nonNoise 0:3516fed95f0b 61 sprintf(S1,"Vendor_ID[0x%04X]: 0x%08lX \n\r",addr,rdata);
nonNoise 0:3516fed95f0b 62 UART_TX_Stringth(S1);
nonNoise 0:3516fed95f0b 63
nonNoise 0:3516fed95f0b 64 addr = Process_Data_RAM;
nonNoise 0:3516fed95f0b 65 rdata = LAN9252_EtherCAT_CSR_READ(CSR_SIZE_32bit,addr);
nonNoise 0:3516fed95f0b 66 sprintf(S1,"Process_Data_RAM[0x%04X]: 0x%08lX \n\r",addr,rdata);
nonNoise 0:3516fed95f0b 67 UART_TX_Stringth(S1);
nonNoise 0:3516fed95f0b 68
nonNoise 0:3516fed95f0b 69 addr = RUN_LED_Override;
nonNoise 0:3516fed95f0b 70 LAN9252_EtherCAT_CSR_WRITE(CSR_SIZE_32bit,addr,1<<4 | 0x0D);
nonNoise 0:3516fed95f0b 71 cnt=0;
nonNoise 0:3516fed95f0b 72 while(1);
nonNoise 0:3516fed95f0b 73 while(1) {
nonNoise 0:3516fed95f0b 74 addr = Process_Data_RAM;
nonNoise 0:3516fed95f0b 75 rdata = LAN9252_EtherCAT_CSR_READ(CSR_SIZE_32bit,addr);
nonNoise 0:3516fed95f0b 76 rdata_buff[cnt]=rdata;
nonNoise 0:3516fed95f0b 77 if(cnt==10)
nonNoise 0:3516fed95f0b 78 {
nonNoise 0:3516fed95f0b 79 for(int i=0;i<cnt;i++)
nonNoise 0:3516fed95f0b 80 {
nonNoise 0:3516fed95f0b 81 sprintf(S1,"Process_Data_RAM[0x%04X]: 0x%08lX \n\r",i,rdata_buff[i]);
nonNoise 0:3516fed95f0b 82 UART_TX_Stringth(S1);
nonNoise 0:3516fed95f0b 83 }
nonNoise 0:3516fed95f0b 84 cnt = 0;
nonNoise 0:3516fed95f0b 85 }
nonNoise 0:3516fed95f0b 86 else
nonNoise 0:3516fed95f0b 87 cnt++;
nonNoise 0:3516fed95f0b 88 //myled = 1; // LED is ON
nonNoise 0:3516fed95f0b 89 //wait(0.05); // 200 ms
nonNoise 0:3516fed95f0b 90 //myled = 0; // LED is OFF
nonNoise 0:3516fed95f0b 91 //wait(0.05); // 1 sec
nonNoise 0:3516fed95f0b 92 }
nonNoise 0:3516fed95f0b 93 }
nonNoise 0:3516fed95f0b 94