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 "LAN925X_SPI.h"
nonNoise 0:3516fed95f0b 2 #include <stdint.h>
nonNoise 0:3516fed95f0b 3
nonNoise 0:3516fed95f0b 4 #include "mbed.h"
nonNoise 0:3516fed95f0b 5 //********************************************************************//
nonNoise 0:3516fed95f0b 6 // HardWare Interface
nonNoise 0:3516fed95f0b 7 //********************************************************************//
nonNoise 0:3516fed95f0b 8
nonNoise 0:3516fed95f0b 9 #define SPI_CS_LOW() cs = 0;
nonNoise 0:3516fed95f0b 10 #define SPI_CS_HIGH() cs = 1;
nonNoise 0:3516fed95f0b 11
nonNoise 0:3516fed95f0b 12 SPI spi(PA_7, PA_6, PA_5); // mosi, miso, sclk
nonNoise 0:3516fed95f0b 13 DigitalOut cs(PB_6);
nonNoise 0:3516fed95f0b 14
nonNoise 0:3516fed95f0b 15 void LAN925X_SPI_Init(void)
nonNoise 0:3516fed95f0b 16 {
nonNoise 0:3516fed95f0b 17 SPI_CS_HIGH();
nonNoise 0:3516fed95f0b 18 // Setup the spi for 8 bit data, high steady state clock,
nonNoise 0:3516fed95f0b 19 // second edge capture, with a 1MHz clock rate
nonNoise 0:3516fed95f0b 20 spi.format(8,3);
nonNoise 0:3516fed95f0b 21 spi.frequency(20000000);
nonNoise 0:3516fed95f0b 22 }
nonNoise 0:3516fed95f0b 23 uint8_t SPI_8bit_Read(void)
nonNoise 0:3516fed95f0b 24 {
nonNoise 0:3516fed95f0b 25 return spi.write(0x00);
nonNoise 0:3516fed95f0b 26 }
nonNoise 0:3516fed95f0b 27 void SPI_8bit_Write(uint8_t wdata)
nonNoise 0:3516fed95f0b 28 {
nonNoise 0:3516fed95f0b 29 spi.write(wdata);
nonNoise 0:3516fed95f0b 30 }
nonNoise 0:3516fed95f0b 31
nonNoise 0:3516fed95f0b 32 void SQI_RESET(void)
nonNoise 0:3516fed95f0b 33 {
nonNoise 0:3516fed95f0b 34 //SS2_SetDigitalInput();
nonNoise 0:3516fed95f0b 35 //while(SS2_GetValue()!=1);
nonNoise 0:3516fed95f0b 36 SPI_CS_HIGH();
nonNoise 0:3516fed95f0b 37 SPI_CS_HIGH();
nonNoise 0:3516fed95f0b 38 SPI_CS_HIGH();
nonNoise 0:3516fed95f0b 39 SPI_CS_HIGH();
nonNoise 0:3516fed95f0b 40 SPI_CS_HIGH();
nonNoise 0:3516fed95f0b 41 SPI_CS_HIGH();
nonNoise 0:3516fed95f0b 42 SPI_CS_HIGH();
nonNoise 0:3516fed95f0b 43 SPI_CS_HIGH();
nonNoise 0:3516fed95f0b 44 SPI_CS_LOW();
nonNoise 0:3516fed95f0b 45 SPI_8bit_Write(0xFF);
nonNoise 0:3516fed95f0b 46 SPI_CS_HIGH();
nonNoise 0:3516fed95f0b 47 }
nonNoise 0:3516fed95f0b 48
nonNoise 0:3516fed95f0b 49
nonNoise 0:3516fed95f0b 50
nonNoise 0:3516fed95f0b 51
nonNoise 0:3516fed95f0b 52 uint32_t LAN925X_SPI_READ(uint16_t addr)
nonNoise 0:3516fed95f0b 53 {
nonNoise 0:3516fed95f0b 54 uint32_t rdata;
nonNoise 0:3516fed95f0b 55 SPI_CS_LOW();
nonNoise 0:3516fed95f0b 56 SPI_8bit_Write(0x03); //Instruction
nonNoise 0:3516fed95f0b 57 SPI_8bit_Write( 0xFF&(addr>>8) ); //Address
nonNoise 0:3516fed95f0b 58 SPI_8bit_Write( 0xFF&(addr>>0) ); //Address
nonNoise 0:3516fed95f0b 59 rdata = (uint32_t)SPI_8bit_Read();
nonNoise 0:3516fed95f0b 60 rdata |= (uint32_t)SPI_8bit_Read()<<8;
nonNoise 0:3516fed95f0b 61 rdata |= (uint32_t)SPI_8bit_Read()<<16;
nonNoise 0:3516fed95f0b 62 rdata |= (uint32_t)SPI_8bit_Read()<<24;
nonNoise 0:3516fed95f0b 63 SPI_CS_HIGH();
nonNoise 0:3516fed95f0b 64 return rdata;
nonNoise 0:3516fed95f0b 65 }
nonNoise 0:3516fed95f0b 66
nonNoise 0:3516fed95f0b 67 uint32_t LAN925X_SPI_WRITE(uint16_t addr,uint32_t data)
nonNoise 0:3516fed95f0b 68 {
nonNoise 0:3516fed95f0b 69 uint32_t rdata;
nonNoise 0:3516fed95f0b 70 SPI_CS_LOW();
nonNoise 0:3516fed95f0b 71 SPI_8bit_Write(0x02); //Instruction
nonNoise 0:3516fed95f0b 72 SPI_8bit_Write( 0xFF&(addr>>8) ); //Address
nonNoise 0:3516fed95f0b 73 SPI_8bit_Write( 0xFF&(addr>>0) ); //Address
nonNoise 0:3516fed95f0b 74 SPI_8bit_Write( 0xFF&(data>>0) );
nonNoise 0:3516fed95f0b 75 SPI_8bit_Write( 0xFF&(data>>8) );
nonNoise 0:3516fed95f0b 76 SPI_8bit_Write( 0xFF&(data>>16) );
nonNoise 0:3516fed95f0b 77 SPI_8bit_Write( 0xFF&(data>>24) );
nonNoise 0:3516fed95f0b 78 SPI_CS_HIGH();
nonNoise 0:3516fed95f0b 79 return rdata;
nonNoise 0:3516fed95f0b 80 }
nonNoise 0:3516fed95f0b 81