Yuta Kitagami
/
EtherCAT_Nucleo_F401
EtherCAT Slave Library (LAN9252) https://www.switch-science.com/catalog/6659/
main.cpp@0:3516fed95f0b, 2021-01-18 (annotated)
- 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?
User | Revision | Line number | New 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 |