You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
180 lines
4.5 KiB
180 lines
4.5 KiB
/* |
|
* Copyright (C) 2013 Freie Universität Berlin |
|
* |
|
* This file is subject to the terms and conditions of the GNU Lesser |
|
* General Public License v2.1. See the file LICENSE in the top level |
|
* directory for more details. |
|
*/ |
|
|
|
/** |
|
* @ingroup pttu |
|
* @{ |
|
*/ |
|
|
|
/** |
|
* @file |
|
* @brief PTTU board initialization |
|
* |
|
* @author Heiko Will |
|
* @author Kaspar Schleiser |
|
* |
|
*/ |
|
#include "board.h" |
|
#include "msba2_common.h" |
|
#include "VIC.h" |
|
#include "cpu.h" |
|
|
|
#define PCRTC BIT9 |
|
#define CL_CPU_DIV 4 |
|
|
|
/*---------------------------------------------------------------------------*/ |
|
void init_clks1(void) |
|
{ |
|
// Disconnect PLL |
|
PLLCON &= ~0x0002; |
|
pllfeed(); |
|
while (PLLSTAT & BIT25); // wait until PLL is disconnected before disabling - deadlock otherwise |
|
|
|
// Disable PLL |
|
PLLCON &= ~0x0001; |
|
pllfeed(); |
|
while (PLLSTAT & BIT24); // wait until PLL is disabled |
|
|
|
SCS |= 0x20; // Enable main OSC |
|
while( !(SCS & 0x40) ); // Wait until main OSC is usable |
|
|
|
/* select main OSC, 16MHz, as the PLL clock source */ |
|
CLKSRCSEL = 0x0001; |
|
|
|
// Setting Multiplier and Divider values |
|
PLLCFG = 0x0008; // M=9 N=1 Fcco = 288 MHz |
|
pllfeed(); |
|
|
|
// Enabling the PLL */ |
|
PLLCON = 0x0001; |
|
pllfeed(); |
|
|
|
/* Set clock divider to 4 (value+1) */ |
|
CCLKCFG = CL_CPU_DIV - 1; // Fcpu = 72 MHz |
|
|
|
#if USE_USB |
|
USBCLKCFG = USBCLKDivValue; /* usbclk = 288 MHz/6 = 48 MHz */ |
|
#endif |
|
} |
|
|
|
void bl_init_ports(void) |
|
{ |
|
SCS |= BIT0; // Set IO Ports to fast switching mode |
|
|
|
/* UART0 */ |
|
PINSEL0 |= BIT4 + BIT6; // RxD0 and TxD0 |
|
PINSEL0 &= ~(BIT5 + BIT7); |
|
|
|
/*Turn Board on*/ |
|
PINMODE0 |= BIT1; |
|
FIO0DIR |= BIT27; |
|
FIO0CLR = BIT27; |
|
|
|
/* 5V*/ |
|
FIO1DIR |= BIT28; // Synch |
|
FIO1SET = BIT28; // No Powersave |
|
|
|
FIO1DIR |= BIT27; // 5V off |
|
FIO1CLR = BIT27; |
|
|
|
/* Disable Resistors on Buttons */ |
|
PINMODE4 |= BIT9 + BIT11; |
|
|
|
/* Disable Resistors on LED - and Ports to output*/ |
|
PINMODE7 |= BIT19 + BIT21; |
|
PINMODE2 |= BIT1; |
|
FIO1DIR |= BIT0; |
|
FIO3DIR |= BIT25 + BIT26; |
|
FIO1SET = BIT0; |
|
FIO3SET = BIT25 + BIT26; |
|
|
|
// Config and Disable PA |
|
FIO1DIR |= BIT25 + BIT26 + BIT22; |
|
FIO1SET = BIT26; |
|
FIO1CLR = BIT25; |
|
FIO1CLR = BIT22; // PA /Shutdown |
|
FIO0DIR |= BIT26; // ** // Important: First put this Port as DA 2.0V and then turn on PA!! |
|
FIO0SET = BIT26; // ** |
|
|
|
// Configure GPS |
|
PINMODE3 |= BIT3 + BIT7; // No Pullup on 1.17 & 1.19 |
|
PINMODE9 |= BIT27 + BIT25; // No Pullup for Uart |
|
FIO1DIR |= BIT17; |
|
FIO1CLR = BIT17; // Turn off GPS |
|
FIO1DIR |= BIT19; |
|
FIO1CLR = BIT19; // Hold in Reset |
|
PINSEL9 |= BIT24 + BIT25 + BIT26 + BIT27; //4.28 & 4.29 as Uart3 |
|
|
|
// Nanotron |
|
FIO2DIR &= ~BIT8; // nanotron uC IRQ as input |
|
FIO1DIR |= BIT15; // nanotron power on reset |
|
FIO1DIR &= ~BIT14; // nanotron uC RESET as input |
|
FIO1DIR &= ~BIT10; // nanotron uC Vcc as input |
|
FIO1DIR |= BIT9; // nanotron ENABLE as output |
|
FIO1DIR &= ~BIT4; // nanotron Rx/Tx as input |
|
|
|
FIO1CLR = BIT15; |
|
FIO1CLR = BIT9; // Enable power |
|
|
|
PINMODE1 |= BIT1; // No Pullup for CS |
|
FIO0DIR |= BIT16; // CS as output |
|
FIO0SET = BIT16; // drive cs inactive |
|
FIO0DIR |= BIT18 + BIT15; // SPi Output |
|
|
|
// RFID |
|
FIO1DIR |= BIT1; // RFID Power |
|
FIO1CLR = BIT1; // |
|
|
|
FIO0DIR |= BIT1; // RFID Reset |
|
FIO0SET = BIT1; // Hold in Reset |
|
|
|
FIO0DIR &= ~BIT10; // LED as INPUT |
|
FIO0DIR &= ~BIT11; // DATA as INPUT |
|
PINMODE0 |= BIT19 + BIT21; // No Pullups |
|
|
|
// LTC4150 ARM |
|
FIO0DIR |= BIT5; |
|
FIO0CLR = BIT5; |
|
|
|
// LTC4150 System |
|
FIO0DIR |= BIT24; |
|
FIO0CLR = BIT24; |
|
|
|
// Battery Voltage (AD) |
|
PINMODE1 |= BIT19; |
|
PINSEL1 &= ~BIT19; |
|
PINSEL1 |= BIT18; |
|
|
|
//cc1100 |
|
FIO0DIR |= BIT6 + BIT7 + BIT9; |
|
FIO0SET = BIT6; |
|
FIO0SET = BIT7 + BIT9; |
|
|
|
//SD |
|
FIO2DIR |= BIT12 + BIT13 + BIT11; |
|
FIO0DIR |= BIT20 + BIT22 + BIT21; |
|
|
|
//Tetra |
|
FIO2DIR |= BIT0 + BIT7; |
|
|
|
|
|
// No Pullups on any port |
|
int nopullup = BIT1 + BIT3 + BIT5 + BIT7 + BIT9 + BIT11 + BIT13 + BIT15 + BIT17 + BIT19 + BIT21 + BIT23 + BIT25 + BIT27 + BIT29 + BIT31; |
|
PINMODE0 = nopullup - BIT13 - BIT15 - BIT17 - BIT19; |
|
PINMODE1 = BIT1 + BIT3 + BIT5 + BIT7 + BIT9 + BIT11 + BIT13 + BIT15 + BIT17 + BIT19 + BIT21; |
|
PINMODE2 = nopullup; |
|
PINMODE3 = nopullup; |
|
PINMODE4 = nopullup; |
|
PINMODE5 = nopullup; |
|
PINMODE6 = nopullup; |
|
PINMODE7 = nopullup; |
|
PINMODE8 = nopullup; |
|
PINMODE9 = nopullup; |
|
} |
|
|
|
/** @} */
|
|
|