⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtl8019.h

📁 Contiki是一个开源
💻 H
字号:
#ifndef __RTL8019_H__#define __RTL8019_H__/******************************************************************************  Module Name:       Realtek 8019AS Driver*  *  Created By:        Louis Beaudoin (www.embedded-creations.com)**  Original Release:  September 21, 2002 **  Module Description:  *  Provides functions to initialize the Realtek 8019AS, and send and retreive*  packets**  September 30, 2002 - Louis Beaudoin*    Receive functions modified to handle errors encountered when receiving a*      fast data stream.  Functions now manually retreive data instead of*      using the send packet command.  Interface improved by checking for*      overruns and data in the buffer internally.*    Corrected the overrun function - overrun flag was not reset after overrun*    Added support for the Imagecraft Compiler*    Added support to communicate with the NIC using general I/O ports******************************************************************************//*#include "delay.h"*/#include "compiler.h"/******************************************************************************  RTL8019beginPacketSend(unsigned int packetLength)*  Args:        unsigned int - length of the Ethernet frame (see note)*  Created By:  Louis Beaudoin*  Date:        September 21, 2002*  Description: Sets up the NIC to send a packet*  Notes:       The NIC will not send packets less than 60 bytes long (the min*                 Ethernet frame length.  The transmit length is automatically*                 increased to 60 bytes if packetLength is < 60*****************************************************************************/void RTL8019beginPacketSend(unsigned int packetLength);/******************************************************************************  RTL8019sendPacketData(unsigned char * localBuffer, unsigned int length)*  Args:        1. unsigned char * localBuffer - Pointer to the beginning of*                    the buffer to load into the NIC*               2. unsigned char length - number of bytes to copy to*                    the NIC*  Created By:  Louis Beaudoin*  Date:        September 21, 2002*  Description: Loads length # of bytes from a local buffer to the transmit*                 packet buffer*  Notes:       RTL8019beginPacketSend() must be called before sending*                 any data.*               Several calls to RTL8019retreivePacketData() may be made to *                 copy packet data from different buffers*****************************************************************************/void RTL8019sendPacketData(unsigned char * localBuffer, unsigned int length);/******************************************************************************  RTL8019endPacketSend()*  Created By:  Louis Beaudoin*  Date:        September 21, 2002*  Description: Ends a packet send operation and instructs the NIC to transmit*                 the frame over the network*****************************************************************************/void RTL8019endPacketSend(void);/******************************************************************************  initRTL8019(void);**  Created By:  Louis Beaudoin*  Date:        September 21, 2002*  Description: Sets up the RTL8019 NIC hardware interface, and initializes*                 the buffers and configuration of the NIC*****************************************************************************/void initRTL8019(void);/******************************************************************************  processRTL8019Interrupt(void);**  Created By:  Louis Beaudoin*  Date:        September 21, 2002*  Description: Reads the NIC's ISR register looking for a receive buffer*                 overrun - which is then handled.*  Notes:       The function does not need to be called in response to an*                 interrupt.  The function can be polled and the NIC's INT*                 line not used.  This function should be called before*                 attempting to retreive a packet from the NIC*****************************************************************************/void processRTL8019Interrupt(void);/******************************************************************************  unsigned char RTL8019ReceiveEmpty(void);**  Returns:     non-zero (true) if buffer is empty, zero if data in buffer*  Created By:  Louis Beaudoin*  Date:        September 21, 2002*  Description: Compares the BNRY and CURR receive buffer pointers to see if*                 there is a packet in the receive buffer*  ** Removed as of version 0.60.1 *******************************************************************************///unsigned char RTL8019ReceiveEmpty(void);/******************************************************************************  unsigned int RTL8019beginPacketRetreive()*  Returns:     unsigned int - length of the Ethernet frame (see note)*  Created By:  Louis Beaudoin*  Date:        September 21, 2002*  Description: Sets up the NIC to retreive a packet*  Notes:       The size returned is the size of all the data in the Ethernet*                 frame minus the Ethernet checksum.  This may include unused*                 trailer bytes appended if data is less than the minimum*                 Ethernet frame length (60 bytes).  A size of zero indicates*                 there are no packets available.*               A call to RTL8019beginPacketRetreive() must be followed by a*                 call to RTL8019endPacketRetreive() regardless if data is*                 retreived, unless 0 is returned.*****************************************************************************/unsigned int RTL8019beginPacketRetreive(void);/******************************************************************************  RTL8019retreivePacketData(unsigned char * localBuffer, unsigned int length)*  Args:        1. unsigned char * localBuffer - Pointer to the beginning of*                    the buffer to store the ethernet frame.*               2. unsigned char length - number of bytes to copy to*                    localBuffer*  Created By:  Louis Beaudoin*  Date:        September 21, 2002*  Description: Loads length # of bytes from the receive packet buffer to*                 a local buffer*  Notes:       RTL8019beginPacketRetreive() must be called before retreiving*                 any data.*               Several calls to RTL8019retreivePacketData() may be made to *                 copy packet data to different buffers*****************************************************************************/void RTL8019retreivePacketData(unsigned char * localBuffer,                               unsigned int length);/******************************************************************************  RTL8019endPacketRetreive()*  Created By:  Louis Beaudoin*  Date:        September 21, 2002*  Description: Ends a packet retreive operation begun by calling*                 RTL8019beginPacketRetreive().  The NIC buffer space used by*                 the retreived packet is freed*  Notes:       A packet may be removed from the buffer without being read*                 by calling RTL8019endPacketRetreive() after*                 RTL8019beginPacketRetreive().*****************************************************************************/void RTL8019endPacketRetreive(void);/*******************************************************************************  AVR hardware setup**    External SRAM Interface:*      The five NIC address lines are taken from A8-A12 (uses the*      non-multiplexed address port so no latch is required)**    General I/O Interface:*      Two full ports are required for the address and data buses.  Two pins*        from another port are used to control the read and write lines**    One output pin is required for hard resetting the NIC******************************************************************************/// set to 1 to use the External SRAM Interface - 0 for General I/O#define MEMORY_MAPPED_NIC 1#if MEMORY_MAPPED_NIC /*** NIC Interface through External SRAM Interface ****/// NIC is mapped from address 0x8000 - 0x9F00#define MEMORY_MAPPED_RTL8019_OFFSET 0x8300#else /************ NIC Interface through General I/O *******************/// RTL8019 address port#define RTL8019_ADDRESS_PORT        PORTC#define RTL8019_ADDRESS_DDR         DDRC// RTL8019 data port#define RTL8019_DATA_PORT           PORTA#define RTL8019_DATA_DDR            DDRA#define RTL8019_DATA_PIN            PINA// RTL8019 control port#define RTL8019_CONTROL_PORT        PORTD#define RTL8019_CONTROL_DDR         DDRD#define RTL8019_CONTROL_READPIN     PD7#define RTL8019_CONTROL_WRITEPIN    PD6// macros to control the read and write pins#define RTL8019_CLEAR_READ   cbi(RTL8019_CONTROL_PORT,\                                 RTL8019_CONTROL_READPIN)#define RTL8019_SET_READ     sbi(RTL8019_CONTROL_PORT,\                                 RTL8019_CONTROL_READPIN) #define RTL8019_CLEAR_WRITE  cbi(RTL8019_CONTROL_PORT,\                                 RTL8019_CONTROL_WRITEPIN)#define RTL8019_SET_WRITE    sbi(RTL8019_CONTROL_PORT,\                                 RTL8019_CONTROL_WRITEPIN)#endif /** NIC Interface **/// RTL RESET - Port B pin 0#define RTL8019_RESET_PORT 	PORTE#define RTL8019_RESET_DDR 	DDRE#define RTL8019_RESET_PIN 	PORTE0/*******************************************************************************  Ethernet constants******************************************************************************/#define ETHERNET_MIN_PACKET_LENGTH	0x3C#define ETHERNET_HEADER_LENGTH		0x0E/******************************************************************************* MAC address assigned to the RTL8019******************************************************************************//*#define MYMAC_0 '0'#define MYMAC_1 'F'#define MYMAC_2 'F'#define MYMAC_3 'I'#define MYMAC_4 'C'#define MYMAC_5 'E'*/#define MYMAC_0 0x00#define MYMAC_1 0x06#define MYMAC_2 0x98#define MYMAC_3 0x01#define MYMAC_4 0x02#define MYMAC_5 0x26#endif /* __RTL8019_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -