mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-09-04 21:33:52 -04:00
Back only.
This commit is contained in:
parent
b4d26652b9
commit
8c8efdcc4e
11 changed files with 569 additions and 611 deletions
|
@ -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 */
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue