Back only.

This commit is contained in:
Richard Barry 2010-09-22 21:29:57 +00:00
parent b4d26652b9
commit 8c8efdcc4e
11 changed files with 569 additions and 611 deletions

View file

@ -1,27 +1,27 @@
/******************************************************************************
* DISCLAIMER
* This software is supplied by Renesas Technology Corp. and is only
* This software is supplied by Renesas Technology Corp. and is only
* intended for use with Renesas products. No other uses are authorized.
* This software is owned by Renesas Technology Corp. and is protected under
* This software is owned by Renesas Technology Corp. and is protected under
* all applicable laws, including copyright laws.
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES
* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,
* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY
* REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY,
* INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY
* DISCLAIMED.
* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS
* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
* TECHNOLOGY CORP. NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
* FOR ANY REASON RELATED TO THE THIS SOFTWARE, EVEN IF RENESAS OR ITS
* AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* Renesas reserves the right, without notice, to make changes to this
* software and to discontinue the availability of this software.
* By using this software, you agree to the additional terms and
* Renesas reserves the right, without notice, to make changes to this
* software and to discontinue the availability of this software.
* By using this software, you agree to the additional terms and
* conditions found by accessing the following link:
* http://www.renesas.com/disclaimer
******************************************************************************
@ -39,10 +39,9 @@
/******************************************************************************
Includes <System Includes> , "Project Includes"
******************************************************************************/
#include <iodefine.h>
#include "iodefine.h"
#include "yrdkrx62ndef.h"
// #include "lcd.h" Uncomment this if an LCD is present.
#include "r_ether.h"
/******************************************************************************
Typedef definitions
@ -63,168 +62,88 @@ Exported global variables and functions (to be accessed by other files)
/******************************************************************************
Private global variables and functions
******************************************************************************/
void io_set_cpg(void);
void ConfigurePortPins(void);
void EnablePeripheralModules(void);
/******************************************************************************
* Function Name: HardwareSetup
* Description : This function does initial setting for CPG port pins used in
* : the Demo including the MII pins of the Ethernet PHY connection.
* Arguments : none
* : the Demo including the MII pins of the Ethernet PHY connection.
* Arguments : none
* Return Value : none
******************************************************************************/
void HardwareSetup(void)
{
/* CPG setting */
io_set_cpg();
unsigned long sckcr = 0;
/* Setup the port pins */
ConfigurePortPins();
/* Configure system clocks based on header */
sckcr += (ICLK_MUL==8) ? (0ul << 24) : (ICLK_MUL==4) ? (1ul << 24) : (ICLK_MUL==2) ? (2ul << 24) : (3ul << 24);
sckcr += (BCLK_MUL==8) ? (0ul << 16) : (BCLK_MUL==4) ? (1ul << 16) : (BCLK_MUL==2) ? (2ul << 16) : (3ul << 16);
sckcr += (PCLK_MUL==8) ? (0ul << 8) : (PCLK_MUL==4) ? (1ul << 8) : (PCLK_MUL==2) ? (2ul << 8) : (3ul << 8);
SYSTEM.SCKCR.LONG = sckcr;
/* Enables peripherals */
EnablePeripheralModules();
/* Module standby clear - EtherC, EDMAC */
SYSTEM.MSTPCRB.BIT.MSTPB15 = 0;
#if INCLUDE_LCD == 1
/* Initialize display */
InitialiseDisplay();
#endif
PORT0.DDR.BYTE = 0x00 ; // Port 0: inputs (IRQ's from ethernet & WiFi)
PORT1.DDR.BYTE = 0x00 ; // Port 1: inputs (IIC and USB settings will override these later)
PORT2.DDR.BYTE = 0x1A ; // Port 2: USB signals
PORT3.DDR.BYTE = 0x04 ; // Port 3: JTAG (P30, P31, P34), CAN (P32=Tx, P33=Rx), NMI (P35)
PORT4.DDR.BYTE = 0x00 ; // Port 4: Switches (P40-P42), AIN (P43-P47)
PORT5.DDR.BYTE = 0x3B ; // Port 5: Audio (P55,P54), BCLK (P53), SCI (P52=Rx, P50=Tx), LCD-RS (P51)
PORTA.DR.BYTE = 0x00 ; // Port A outputs all LOW to start
PORTA.DDR.BYTE = 0xFF ; // Port A: Expansion (PA0-PA2), Ether (PA3-PA5), Audio (PA6-PA7)
PORTB.DR.BYTE = 0x00 ;
PORTB.DDR.BYTE = 0x70 ; // Port B: Ether
PORTC.DR.BYTE = 0xF7 ; // Port C: Chip selects, clock = high; IO reset = low (not reset, needed by Ether PHY)
PORTC.DDR.BYTE = 0x7F ; // Port C: SPI (PC0-2, PC4-7), IO reset (PC3)
// Ethernet settings
IOPORT.PFENET.BYTE = 0x82; // Enable Ether poins, RMII mode, enable LINKSTA
PORTA.ICR.BIT.B5 = 1; // ET_LINKSTA
PORTA.ICR.BIT.B3 = 1; // ET_MDIO
PORTB.ICR.BIT.B0 = 1; // RMII_RXD1
PORTB.ICR.BIT.B1 = 1; // RMII_RXD0
PORTB.ICR.BIT.B2 = 1; // REF50CLK
PORTB.ICR.BIT.B3 = 1; // RMII_RX_ER
PORTB.ICR.BIT.B7 = 1; // RMII_CRS_DV
/* Configure LEDs */
LED4 = LED_OFF;
LED5 = LED_OFF;
LED6 = LED_OFF;
LED7 = LED_OFF;
LED8 = LED_OFF;
LED9 = LED_OFF;
LED10 = LED_OFF;
LED11 = LED_OFF;
LED12 = LED_OFF;
LED13 = LED_OFF;
LED14 = LED_OFF;
LED15 = LED_OFF;
LED4_DDR = 1;
LED5_DDR = 1;
LED6_DDR = 1;
LED7_DDR = 1;
LED8_DDR = 1;
LED9_DDR = 1;
LED10_DDR = 1;
LED11_DDR = 1;
LED12_DDR = 1;
LED13_DDR = 1;
LED14_DDR = 1;
LED15_DDR = 1;
/* Configure push button switches */
SW1_DDR = 0;
SW2_DDR = 0;
SW3_DDR = 0;
SW1_ICR = 1;
SW2_ICR = 1;
SW3_ICR = 1;
}
/******************************************************************************
* Function Name: EnablePeripheralModules
* Description : Enables Peripheral Modules before use
* Arguments : none
* Return Value : none
******************************************************************************/
void EnablePeripheralModules(void)
{
/* Module standby clear */
SYSTEM.MSTPCRB.BIT.MSTPB15 = 0; /* EtherC, EDMAC */
SYSTEM.MSTPCRA.BIT.MSTPA15 = 0; /* CMT0 */
}
/******************************************************************************
* Function Name: ConfigurePortPins
* Description : Configures port pins.
* Arguments : none
* Return Value : none
******************************************************************************/
void ConfigurePortPins(void)
{
/* Port pins default to inputs. To ensure safe initialisation set the pin states
before changing the data direction registers. This will avoid any unintentional
state changes on the external ports.
Many peripheral modules will override the setting of the port registers. Ensure
that the state is safe for external devices if the internal peripheral module is
disabled or powered down. */
/* ==== MII/RMII Pins setting ==== */
/*--------------------------------------*/
/* Port Function Control Register */
/*--------------------------------------*/
#if ETH_MODE_SEL == ETH_MII_MODE
/* EE=1, PHYMODE=1, ENETE3=1, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */
IOPORT.PFENET.BYTE = 0x9A;
#endif /* ETH_MODE_SEL */
#if ETH_MODE_SEL == ETH_RMII_MODE
/* EE=1, PHYMODE=0, ENETE3=0, ENETE2=0, ENETE1=1, ENETE0=0 (Ethernet) */
IOPORT.PFENET.BYTE = 0x82;
#endif /* ETH_MODE_SEL */
/*-------------------------------------------*/
/* Input Buffer Control Register (ICR) */
/*-------------------------------------------*/
#if ETH_MODE_SEL == ETH_MII_MODE
/* P54=1 Set ET_LINKSTA input */
PORT5.ICR.BIT.B4 = 1;
/* P71=1 Set ET_MDIO input */
PORT7.ICR.BIT.B1 = 1;
/* P74=1 Set ET_ERXD1 input */
PORT7.ICR.BIT.B4 = 1;
/* P75=1 Set ET_ERXD0 input */
PORT7.ICR.BIT.B5 = 1;
/* P76=1 Set ET_RX_CLK input */
PORT7.ICR.BIT.B6 = 1;
/* P77=1 Set ET_RX_ER input */
PORT7.ICR.BIT.B7 = 1;
/* P83=1 Set ET_CRS input */
PORT8.ICR.BIT.B3 = 1;
/* PC0=1 Set ET_ERXD3 input */
PORTC.ICR.BIT.B0 = 1;
/* PC1=1 Set ET_ERXD2 input */
PORTC.ICR.BIT.B1 = 1;
/* PC2=1 Set ET_RX_DV input */
PORTC.ICR.BIT.B2 = 1;
/* PC4=1 Set EX_TX_CLK input */
PORTC.ICR.BIT.B4 = 1;
/* PC7=1 Set ET_COL input */
PORTC.ICR.BIT.B7 = 1;
#endif /* ETH_MODE_SEL */
#if ETH_MODE_SEL == ETH_RMII_MODE
/* P54=1 Set ET_LINKSTA input */
PORT5.ICR.BIT.B4 = 1;
/* P71=1 Set ET_MDIO input */
PORT7.ICR.BIT.B1 = 1;
/* P74=1 Set RMII_RXD1 input */
PORT7.ICR.BIT.B4 = 1;
/* P75=1 Set RMII_RXD0 input */
PORT7.ICR.BIT.B5 = 1;
/* P76=1 Set REF50CLK input */
PORT7.ICR.BIT.B6 = 1;
/* P77=1 Set RMII_RX_ER input */
PORT7.ICR.BIT.B7 = 1;
/* P83=1 Set RMII_CRS_DV input */
PORT8.ICR.BIT.B3 = 1;
#endif /* ETH_MODE_SEL */
/* Configure LED 0-5 pin settings */
PORT0.DR.BIT.B2 = 1;
PORT0.DR.BIT.B3 = 1;
PORT0.DR.BIT.B5 = 1;
PORT3.DR.BIT.B4 = 1;
PORT6.DR.BIT.B0 = 1;
PORT7.DR.BIT.B3 = 1;
PORT0.DDR.BIT.B2 = 1;
PORT0.DDR.BIT.B3 = 1;
PORT0.DDR.BIT.B5 = 1;
PORT3.DDR.BIT.B4 = 1;
PORT6.DDR.BIT.B0 = 1;
PORT7.DDR.BIT.B3 = 1;
/* Configure SW 1-3 pin settings */
PORT0.DDR.BIT.B0 = 0;
PORT0.DDR.BIT.B1 = 0;
PORT0.DDR.BIT.B7 = 0;
PORT0.ICR.BIT.B0 = 1;
PORT0.ICR.BIT.B1 = 1;
PORT0.ICR.BIT.B7 = 1;
#if INCLUDE_LCD == 1
/* Set LCD pins as outputs */
/* LCD-RS */
PORT8.DDR.BIT.B4 = 1;
/* LCD-EN */
PORT8.DDR.BIT.B5 = 1;
/*LCD-data */
PORT9.DDR.BYTE = 0xF0;
#endif
}
/******************************************************************************
* Function Name: io_set_cpg
* Description : Sets up operating speed
* Arguments : none
* Return Value : none
******************************************************************************/
void io_set_cpg(void)
{
/* Set CPU PLL operating frequencies. Changes to the peripheral clock will require
changes to the debugger and flash kernel BRR settings. */
/* ==== CPG setting ==== */
SYSTEM.SCKCR.LONG = 0x00020100; /* Clockin = 12MHz */
/* I Clock = 96MHz, B Clock = 24MHz, */
/* P Clock = 48MHz */
}