123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648 |
- //============================================================================
- // FILE: HVBLDC_Sensored-DevInit_F2803x.c
- // TITLE: Device initialization for F2803x series
- //============================================================================
- /***************************
- Note that the CLA is not used nor initialized in this project. Please download
- the Peripheral Files and Example Projects collection (SPRC832) and look at the
- cla_adc project for information on how to use and configure the CLA.
- ***************************/
- #include "PeripheralHeaderIncludes.h"
- // Functions that will be run from RAM need to be assigned to
- // a different section. This section will then be mapped to a load and
- // run address using the linker cmd file.
- #pragma CODE_SECTION(InitFlash, "ramfuncs");
- #define Device_cal (void (*)(void))0x3D7C80
- void DeviceInit(void);
- void PieCntlInit(void);
- void PieVectTableInit(void);
- void WDogDisable(void);
- void PLLset(Uint16);
- void ISR_ILLEGAL(void);
- //--------------------------------------------------------------------
- // Configure Device for target Application Here
- //--------------------------------------------------------------------
- void DeviceInit(void)
- {
- WDogDisable(); // Disable the watchdog initially
- DINT; // Global Disable all Interrupts
- IER = 0x0000; // Disable CPU interrupts
- IFR = 0x0000; // Clear all CPU interrupt flags
- // Switch to Internal Oscillator 1 and turn off all other clock
- // sources to minimize power consumption
- /* EALLOW;
- SysCtrlRegs.CLKCTL.bit.INTOSC1OFF = 0;
- SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL=0; // Clk Src = INTOSC1
- SysCtrlRegs.CLKCTL.bit.XCLKINOFF=1; // Turn off XCLKIN
- SysCtrlRegs.CLKCTL.bit.XTALOSCOFF=1; // Turn off XTALOSC
- SysCtrlRegs.CLKCTL.bit.INTOSC2OFF=1; // Turn off INTOSC2
- EDIS;*/
- //外部20M晶振
- EALLOW;
- SysCtrlRegs.CLKCTL.bit.XTALOSCOFF = 0; // Turn on XTALOSC
- SysCtrlRegs.CLKCTL.bit.XCLKINOFF = 1; // Turn off XCLKIN
- SysCtrlRegs.CLKCTL.bit.OSCCLKSRC2SEL = 0; // Switch to external clock
- SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL = 1; // Switch from INTOSC1 to INTOSC2/ext clk
- SysCtrlRegs.CLKCTL.bit.WDCLKSRCSEL = 0; // Clock Watchdog off of INTOSC1
- SysCtrlRegs.CLKCTL.bit.INTOSC2OFF = 1; // Turn off INTOSC2
- SysCtrlRegs.CLKCTL.bit.INTOSC1OFF = 0; // Leave INTOSC1 on
- EDIS;
- // SYSTEM CLOCK speed based on internal oscillator = 10 MHz
- // 0xC = 60 MHz (12)
- // 0xB = 55 MHz (11)
- // 0xA = 50 MHz (10)
- // 0x9 = 45 MHz (9)
- // 0x8 = 40 MHz (8)
- // 0x7 = 35 MHz (7)
- // 0x6 = 30 MHz (6)
- // 0x5 = 25 MHz (5)
- // 0x4 = 20 MHz (4)
- // 0x3 = 15 MHz (3)
- // 0x2 = 10 MHz (2)
- PLLset(0x6); // choose from options above
- // Initialise interrupt controller and Vector Table
- // to defaults for now. Application ISR mapping done later.
- PieCntlInit();
- PieVectTableInit();
- EALLOW; // below registers are "protected", allow access.
- // LOW SPEED CLOCKS prescale register settings
- SysCtrlRegs.LOSPCP.all = 0x0002; // Sysclk / 4 (15 MHz)
- SysCtrlRegs.XCLK.bit.XCLKOUTDIV=2;
-
-
- // ADC CALIBRATION
- //---------------------------------------------------
- // The Device_cal function, which copies the ADC & oscillator calibration values
- // from TI reserved OTP into the appropriate trim registers, occurs automatically
- // in the Boot ROM. If the boot ROM code is bypassed during the debug process, the
- // following function MUST be called for the ADC and oscillators to function according
- // to specification.
- SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; // Enable ADC peripheral clock
- (*Device_cal)(); // Auto-calibrate from TI OTP
- SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 0; // Return ADC clock to original state
-
- // PERIPHERAL CLOCK ENABLES
- //---------------------------------------------------
- // If you are not using a peripheral you may want to switch
- // the clock off to save power, i.e. set to =0
- //
- // Note: not all peripherals are available on all 280x derivates.
- // Refer to the datasheet for your particular device.
- SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; // ADC
- //------------------------------------------------
- SysCtrlRegs.PCLKCR3.bit.COMP1ENCLK = 1; // COMP1
- SysCtrlRegs.PCLKCR3.bit.COMP2ENCLK = 1; // COMP2
- SysCtrlRegs.PCLKCR3.bit.COMP3ENCLK = 1; // COMP3
- //------------------------------------------------
- SysCtrlRegs.PCLKCR1.bit.ECAP1ENCLK = 1; //eCAP1
- //------------------------------------------------
- SysCtrlRegs.PCLKCR0.bit.ECANAENCLK= 1; // eCAN-A
- //------------------------------------------------
- SysCtrlRegs.PCLKCR1.bit.EQEP1ENCLK = 1; // eQEP1
- //------------------------------------------------
- SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1; // ePWM1
- SysCtrlRegs.PCLKCR1.bit.EPWM2ENCLK = 1; // ePWM2
- SysCtrlRegs.PCLKCR1.bit.EPWM3ENCLK = 1; // ePWM3
- SysCtrlRegs.PCLKCR1.bit.EPWM4ENCLK = 1; // ePWM4
- SysCtrlRegs.PCLKCR1.bit.EPWM5ENCLK = 1; // ePWM5
- SysCtrlRegs.PCLKCR1.bit.EPWM6ENCLK = 1; // ePWM6
- SysCtrlRegs.PCLKCR1.bit.EPWM7ENCLK = 1; // ePWM7
- SysCtrlRegs.PCLKCR0.bit.HRPWMENCLK = 0; // HRPWM
- //------------------------------------------------
- SysCtrlRegs.PCLKCR0.bit.I2CAENCLK = 0; // I2C
- //------------------------------------------------
- SysCtrlRegs.PCLKCR0.bit.LINAENCLK = 0; // LIN-A
- //------------------------------------------------
- SysCtrlRegs.PCLKCR3.bit.CLA1ENCLK = 0; // CLA1
- //------------------------------------------------
- SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1; // SCI-A
- //------------------------------------------------
- SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 0; // SPI-A
- SysCtrlRegs.PCLKCR0.bit.SPIBENCLK = 0; // SPI-B
- //------------------------------------------------
- SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Enable TBCLK
- //------------------------------------------------
-
- //--------------------------------------------------------------------------------------
- // GPIO (GENERAL PURPOSE I/O) CONFIG
- //--------------------------------------------------------------------------------------
- //-----------------------
- // QUICK NOTES on USAGE:
- //-----------------------
- // If GpioCtrlRegs.GP?MUX?bit.GPIO?= 1, 2 or 3 (i.e. Non GPIO func), then leave
- // rest of lines commented
- // If GpioCtrlRegs.GP?MUX?bit.GPIO?= 0 (i.e. GPIO func), then:
- // 1) uncomment GpioCtrlRegs.GP?DIR.bit.GPIO? = ? and choose pin to be IN or OUT
- // 2) If IN, can leave next to lines commented
- // 3) If OUT, uncomment line with ..GPACLEAR.. to force pin LOW or
- // uncomment line with ..GPASET.. to force pin HIGH or
- //--------------------------------------------------------------------------------------
- //--------------------------------------------------------------------------------------
- // GPIO-00 - PIN FUNCTION = PWM1A
- GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // 0=GPIO, 1=EPWM1A, 2=Resv, 3=Resv
- // GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO0 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO0 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-01 - PIN FUNCTION = PWM1B
- GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; // 0=GPIO, 1=EPWM1B, 2=Resv, 3=COMP1OUT
- // GpioCtrlRegs.GPADIR.bit.GPIO1 = 1; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO1 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO1 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-02 - PIN FUNCTION = PWM2A
- GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1; // 0=GPIO, 1=EPWM2A, 2=Resv, 3=Resv
- // GpioCtrlRegs.GPADIR.bit.GPIO2 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO2 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO2 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-03 - PIN FUNCTION = PWM2B
- GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 1; // 0=GPIO, 1=EPWM2B, 2=SPISOMI-A, 3=COMP2OUT
- // GpioCtrlRegs.GPADIR.bit.GPIO3 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO3 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO3 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-04 - PIN FUNCTION = PWM3A
- GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 1; // 0=GPIO, 1=EPWM3A, 2=Resv, 3=Resv
- // GpioCtrlRegs.GPADIR.bit.GPIO4 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO4 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO4 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-05 - PIN FUNCTION = PWM3B
- GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 1; // 0=GPIO, 1=EPWM3B, 2=SPISIMO-A, 3=ECAP1
- // GpioCtrlRegs.GPADIR.bit.GPIO5 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO5 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO5 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-06 - PIN FUNCTION = PWM4A
- GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 1; // 0=GPIO, 1=EPWM4A, 2=SYNCI, 3=SYNCO
- // GpioCtrlRegs.GPADIR.bit.GPIO6 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO6 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO6 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-07 - PIN FUNCTION = PWM4B
- GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 1; // 0=GPIO, 1=EPWM4B, 2=SCIRX-A, 3=Resv
- // GpioCtrlRegs.GPADIR.bit.GPIO7 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO7 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO7 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-08 - PIN FUNCTION = --Spare--
- GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 1; // 0=GPIO, 1=EPWM5A, 2=Resv, 3=ADCSOC-A
- // GpioCtrlRegs.GPADIR.bit.GPIO8 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO8 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO8 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-09 - PIN FUNCTION = Clear Fault
- GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 0; // 0=GPIO, 1=EPWM5B, 2=LINTX-A, 3=Resv
- GpioCtrlRegs.GPADIR.bit.GPIO9 = 1; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO9 = 1; // uncomment if --> Set Low initially
- GpioDataRegs.GPASET.bit.GPIO9 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-10 - PIN FUNCTION = --Spare--
- GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 1; // 0=GPIO, 1=EPWM6A, 2=Resv, 3=ADCSOC-B
- // GpioCtrlRegs.GPADIR.bit.GPIO10 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO10 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO10 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-11 - PIN FUNCTION = --Spare--
- GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 1; // 0=GPIO, 1=EPWM6B, 2=LINRX-A, 3=Resv
- // GpioCtrlRegs.GPADIR.bit.GPIO11 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO11 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO11 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-12 - PIN FUNCTION = TZ1
- GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 1; // 0=GPIO, 1=TZ1, 2=SCITX-A, 3=SPISIMO-B
- GpioCtrlRegs.GPADIR.bit.GPIO12 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO12 = 0; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO12 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-13 - PIN FUNCTION = --Spare--
- GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0; // 0=GPIO, 1=TZ2, 2=Resv, 3=SPISOMI-B
- GpioCtrlRegs.GPADIR.bit.GPIO13 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO13 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO13 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-14 - PIN FUNCTION = --Spare--
- GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 0; // 0=GPIO, 1=TZ3, 2=LINTX-A, 3=SPICLK-B
- GpioCtrlRegs.GPADIR.bit.GPIO14 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO14 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO14 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-15 - PIN FUNCTION = OCP
- GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 0; // 0=GPIO, 1=TZ1, 2=LINRX-A, 3=SPISTE-B
- GpioCtrlRegs.GPADIR.bit.GPIO15 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO15 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO15 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- //--------------------------------------------------------------------------------------
- // GPIO-16 - PIN FUNCTION = SPISIMO-A fault
- GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 0; // 0=GPIO, 1=SPISIMO-A, 2=Resv, 3=TZ2
- GpioCtrlRegs.GPADIR.bit.GPIO16 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO16 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO16 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-17 - PIN FUNCTION = SPISOMI-A
- GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 0; // 0=GPIO, 1=SPISOMI-A, 2=Resv, 3=TZ3
- // GpioCtrlRegs.GPADIR.bit.GPIO17 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO17 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO17 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-18 - PIN FUNCTION = SPICLK-A
- GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1; // 0=GPIO, 1=SPICLK-A, 2=LINTX-A, 3=XCLKOUT
- // GpioCtrlRegs.GPADIR.bit.GPIO18 = 1; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO18 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO18 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-19 - PIN FUNCTION = SPISTE-A
- GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 1; // 0=GPIO, 1=SPISTE-A, 2=LINRX-A, 3=ECAP1
- // GpioCtrlRegs.GPADIR.bit.GPIO19 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO19 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO19 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-20 - PIN FUNCTION = EQEPA-1
- GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 1; // 0=GPIO, 1=EQEPA-1, 2=Resv, 3=COMP1OUT
- // GpioCtrlRegs.GPADIR.bit.GPIO20 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO20 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO20 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-21 - PIN FUNCTION = EQEPB-1
- GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 1; // 0=GPIO, 1=EQEPB-1, 2=Resv, 3=COMP2OUT
- // GpioCtrlRegs.GPADIR.bit.GPIO21 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO21 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO21 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-22 - PIN FUNCTION = GPIO LED低电平有效
- GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 0; // 0=GPIO, 1=EQEPS-1, 2=Resv, 3=LINTX-A
- GpioCtrlRegs.GPADIR.bit.GPIO22 = 1; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO22 = 1; // uncomment if --> Set Low initially
- GpioDataRegs.GPASET.bit.GPIO22 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-23 - PIN FUNCTION = EQEPI-1
- GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 1; // 0=GPIO, 1=EQEPI-1, 2=Resv, 3=LINRX-A
- // GpioCtrlRegs.GPADIR.bit.GPIO23 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO23 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO23 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-24 - PIN FUNCTION = Hall1 使用cap就不能都IO口
- GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 0; // 0=GPIO, 1=ECAP1, 2=Resv, 3=SPISIMO-B
- GpioCtrlRegs.GPADIR.bit.GPIO24 = 0; // 1=OUTput, 0=INput
- //GpioCtrlRegs.GPAQSEL2.bit.GPIO24 = 0; // Synch to SYSCLKOUT GPIO24 (CAP1)
- //GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0;
- // GpioCtrlRegs.GPAPUD.bit.GPIO24 =0;
- // GpioDataRegs.GPACLEAR.bit.GPIO24 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO24 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-25 - PIN FUNCTION = Hall2
- GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 0; // 0=GPIO, 1=Resv, 2=Resv, 3=SPISOMI-B
- GpioCtrlRegs.GPADIR.bit.GPIO25 = 0; // 1=OUTput, 0=INput
- // GpioCtrlRegs.GPAPUD.bit.GPIO25 =0;
- // GpioDataRegs.GPACLEAR.bit.GPIO25 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO25 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-26 - PIN FUNCTION = Hall3
- GpioCtrlRegs.GPAMUX2.bit.GPIO26 = 0; // 0=GPIO, 1=Resv, 2=Resv, 3=SPICLK-B
- GpioCtrlRegs.GPADIR.bit.GPIO26 = 0; // 1=OUTput, 0=INput
- // GpioCtrlRegs.GPAPUD.bit.GPIO26 =0;
- // GpioDataRegs.GPACLEAR.bit.GPIO26 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO26 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-27 - PIN FUNCTION = --Spare--
- GpioCtrlRegs.GPAMUX2.bit.GPIO27 = 0; // 0=GPIO, 1=Resv, 2=Resv, 3=SPISTE-B
- GpioCtrlRegs.GPADIR.bit.GPIO27 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO27 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO27 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-28 - PIN FUNCTION = SCI-RX
- GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1; // 0=GPIO, 1=SCIRX-A, 2=I2CSDA-A, 3=TZ2
- // GpioCtrlRegs.GPADIR.bit.GPIO28 = 1; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO28 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO28 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-29 - PIN FUNCTION = SCI-TX
- GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1; // 0=GPIO, 1=SCITXD-A, 2=I2CSCL-A, 3=TZ3
- // GpioCtrlRegs.GPADIR.bit.GPIO29 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO29 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO29 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-30 - PIN FUNCTION = CANRX-A
- GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 1; // 0=GPIO, 1=CANRX-A, 2=Resv, 3=Resv
- GpioCtrlRegs.GPADIR.bit.GPIO30 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO30 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO30 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-31 - PIN FUNCTION = CANTX-A
- GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 1; // 0=GPIO, 1=CANTX-A, 2=Resv, 3=Resv
- GpioCtrlRegs.GPADIR.bit.GPIO31 = 1; // 1=OUTput, 0=INput
- // GpioDataRegs.GPACLEAR.bit.GPIO31 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPASET.bit.GPIO31 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- //--------------------------------------------------------------------------------------
- // GPIO-32 - PIN FUNCTION = I2CSDA-A
- GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; // 0=GPIO, 1=I2CSDA-A, 2=SYNCI, 3=ADCSOCA
- GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1; // 1=OUTput, 0=INput
- // GpioDataRegs.GPBCLEAR.bit.GPIO32 = 1; // uncomment if --> Set Low initially
- GpioDataRegs.GPBSET.bit.GPIO32 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-33 - PIN FUNCTION = I2CSCL-A
- GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0; // 0=GPIO, 1=I2CSCL-A, 2=SYNCO, 3=ADCSOCB
- GpioCtrlRegs.GPBDIR.bit.GPIO33 = 1; // 1=OUTput, 0=INput
- // GpioDataRegs.GPBCLEAR.bit.GPIO33 = 1; // uncomment if --> Set Low initially
- GpioDataRegs.GPBSET.bit.GPIO33 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-34 - PIN FUNCTION = LED3 on controlCARD
- // GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0; // 0=GPIO, 1=Resv, 2=Resv, 3=Resv
- // GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1; // 1=OUTput, 0=INput
- // GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPBSET.bit.GPIO34 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- //--------------------------------------------------------------------------------------
- // GPIO 35-38 are defaulted to JTAG usage, and are not shown here to enforce JTAG debug
- // usage.
- //--------------------------------------------------------------------------------------
- //--------------------------------------------------------------------------------------
- // GPIO-39 - PIN FUNCTION = GPIO
- GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 0; // 0=GPIO, 1=Resv, 2=Resv, 3=Resv
- GpioCtrlRegs.GPBDIR.bit.GPIO39 = 1; // 1=OUTput, 0=INput
- // GpioDataRegs.GPBCLEAR.bit.GPIO39 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPBSET.bit.GPIO39 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-40 - PIN FUNCTION = EPWM7A
- GpioCtrlRegs.GPBMUX1.bit.GPIO40 = 1; // 0=GPIO, 1=EPWM7A, 2=Resv, 3=Resv
- // GpioCtrlRegs.GPBDIR.bit.GPIO40 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPBCLEAR.bit.GPIO40 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPBSET.bit.GPIO40 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-41 - PIN FUNCTION = EPWM7B
- GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 1; // 0=GPIO, 1=EPWM7B, 2=Resv, 3=Resv
- // GpioCtrlRegs.GPBDIR.bit.GPIO41 = 1; // 1=OUTput, 0=INput
- // GpioDataRegs.GPBCLEAR.bit.GPIO41 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPBSET.bit.GPIO41 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-42 - PIN FUNCTION = LED2
- GpioCtrlRegs.GPBMUX1.bit.GPIO42 = 0; // 0=GPIO, 1=Resv, 2=Resv, 3=COMP1OUT
- GpioCtrlRegs.GPBDIR.bit.GPIO42 = 1; // 1=OUTput, 0=INput
- GpioDataRegs.GPBCLEAR.bit.GPIO42 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPBSET.bit.GPIO42 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-43 - PIN FUNCTION = --Spare--
- GpioCtrlRegs.GPBMUX1.bit.GPIO43 = 0; // 0=GPIO, 1=Resv, 2=Resv, 3=COMP2OUT
- GpioCtrlRegs.GPBDIR.bit.GPIO43 = 0; // 1=OUTput, 0=INput
- // GpioDataRegs.GPBCLEAR.bit.GPIO43 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPBSET.bit.GPIO43 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- // GPIO-44 - PIN FUNCTION = LED1
- GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 0; // 0=GPIO, 1=Resv, 2=Resv, 3=Resv
- GpioCtrlRegs.GPBDIR.bit.GPIO44 = 1; // 1=OUTput, 0=INput
- GpioDataRegs.GPBCLEAR.bit.GPIO44 = 1; // uncomment if --> Set Low initially
- // GpioDataRegs.GPBSET.bit.GPIO44 = 1; // uncomment if --> Set High initially
- //--------------------------------------------------------------------------------------
- //--------------------------------------------------------------------------------------
- EDIS; // Disable register access
- }
- //============================================================================
- // NOTE:
- // IN MOST APPLICATIONS THE FUNCTIONS AFTER THIS POINT CAN BE LEFT UNCHANGED
- // THE USER NEED NOT REALLY UNDERSTAND THE BELOW CODE TO SUCCESSFULLY RUN THIS
- // APPLICATION.
- //============================================================================
- void WDogDisable(void)
- {
- EALLOW;
- SysCtrlRegs.WDCR= 0x0068;
- EDIS;
- }
- // This function initializes the PLLCR register.
- //void InitPll(Uint16 val, Uint16 clkindiv)
- void PLLset(Uint16 val)
- {
- volatile Uint16 iVol;
- // Make sure the PLL is not running in limp mode
- if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 0)
- {
- EALLOW;
- // OSCCLKSRC1 failure detected. PLL running in limp mode.
- // Re-enable missing clock logic.
- SysCtrlRegs.PLLSTS.bit.MCLKCLR = 1;
- EDIS;
- // Replace this line with a call to an appropriate
- // SystemShutdown(); function.
- asm(" ESTOP0"); // Uncomment for debugging purposes
- }
- // DIVSEL MUST be 0 before PLLCR can be changed from
- // 0x0000. It is set to 0 by an external reset XRSn
- // This puts us in 1/4
- if (SysCtrlRegs.PLLSTS.bit.DIVSEL != 0)
- {
- EALLOW;
- SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;
- EDIS;
- }
- // Change the PLLCR
- if (SysCtrlRegs.PLLCR.bit.DIV != val)
- {
- EALLOW;
- // Before setting PLLCR turn off missing clock detect logic
- SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
- SysCtrlRegs.PLLCR.bit.DIV = val;
- EDIS;
- // Optional: Wait for PLL to lock.
- // During this time the CPU will switch to OSCCLK/2 until
- // the PLL is stable. Once the PLL is stable the CPU will
- // switch to the new PLL value.
- //
- // This time-to-lock is monitored by a PLL lock counter.
- //
- // Code is not required to sit and wait for the PLL to lock.
- // However, if the code does anything that is timing critical,
- // and requires the correct clock be locked, then it is best to
- // wait until this switching has completed.
- // Wait for the PLL lock bit to be set.
- // The watchdog should be disabled before this loop, or fed within
- // the loop via ServiceDog().
- // Uncomment to disable the watchdog
- WDogDisable();
- while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1) {}
- EALLOW;
- SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0;
- EDIS;
- }
- //divide down SysClk by 2 to increase stability
- EALLOW;
- SysCtrlRegs.PLLSTS.bit.DIVSEL = 2;
- EDIS;
- }
- // This function initializes the PIE control registers to a known state.
- //
- void PieCntlInit(void)
- {
- // Disable Interrupts at the CPU level:
- DINT;
- // Disable the PIE
- PieCtrlRegs.PIECTRL.bit.ENPIE = 0;
- // Clear all PIEIER registers:
- PieCtrlRegs.PIEIER1.all = 0;
- PieCtrlRegs.PIEIER2.all = 0;
- PieCtrlRegs.PIEIER3.all = 0;
- PieCtrlRegs.PIEIER4.all = 0;
- PieCtrlRegs.PIEIER5.all = 0;
- PieCtrlRegs.PIEIER6.all = 0;
- PieCtrlRegs.PIEIER7.all = 0;
- PieCtrlRegs.PIEIER8.all = 0;
- PieCtrlRegs.PIEIER9.all = 0;
- PieCtrlRegs.PIEIER10.all = 0;
- PieCtrlRegs.PIEIER11.all = 0;
- PieCtrlRegs.PIEIER12.all = 0;
- // Clear all PIEIFR registers:
- PieCtrlRegs.PIEIFR1.all = 0;
- PieCtrlRegs.PIEIFR2.all = 0;
- PieCtrlRegs.PIEIFR3.all = 0;
- PieCtrlRegs.PIEIFR4.all = 0;
- PieCtrlRegs.PIEIFR5.all = 0;
- PieCtrlRegs.PIEIFR6.all = 0;
- PieCtrlRegs.PIEIFR7.all = 0;
- PieCtrlRegs.PIEIFR8.all = 0;
- PieCtrlRegs.PIEIFR9.all = 0;
- PieCtrlRegs.PIEIFR10.all = 0;
- PieCtrlRegs.PIEIFR11.all = 0;
- PieCtrlRegs.PIEIFR12.all = 0;
- }
- void PieVectTableInit(void)
- {
- int16 i;
- PINT *Dest = &PieVectTable.TINT1;
- EALLOW;
- for(i=0; i < 115; i++)
- *Dest++ = &ISR_ILLEGAL;
- EDIS;
-
- // Enable the PIE Vector Table
- PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
- }
- interrupt void ISR_ILLEGAL(void) // Illegal operation TRAP
- {
- // Insert ISR Code here
- // Next two lines for debug only to halt the processor here
- // Remove after inserting ISR Code
- asm(" ESTOP0");
- for(;;);
- }
- // This function initializes the Flash Control registers
- // CAUTION
- // This function MUST be executed out of RAM. Executing it
- // out of OTP/Flash will yield unpredictable results
- void InitFlash(void)
- {
- EALLOW;
- //Enable Flash Pipeline mode to improve performance
- //of code executed from Flash.
- FlashRegs.FOPT.bit.ENPIPE = 1;
- // CAUTION
- //Minimum waitstates required for the flash operating
- //at a given CPU rate must be characterized by TI.
- //Refer to the datasheet for the latest information.
- //Set the Paged Waitstate for the Flash
- FlashRegs.FBANKWAIT.bit.PAGEWAIT = 3;
- //Set the Random Waitstate for the Flash
- FlashRegs.FBANKWAIT.bit.RANDWAIT = 3;
- //Set the Waitstate for the OTP
- FlashRegs.FOTPWAIT.bit.OTPWAIT = 5;
- // CAUTION
- //ONLY THE DEFAULT VALUE FOR THESE 2 REGISTERS SHOULD BE USED
- FlashRegs.FSTDBYWAIT.bit.STDBYWAIT = 0x01FF;
- FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT = 0x01FF;
- EDIS;
- //Force a pipeline flush to ensure that the write to
- //the last register configured occurs before returning.
- asm(" RPT #7 || NOP");
- }
- // This function will copy the specified memory contents from
- // one location to another.
- //
- // Uint16 *SourceAddr Pointer to the first word to be moved
- // SourceAddr < SourceEndAddr
- // Uint16* SourceEndAddr Pointer to the last word to be moved
- // Uint16* DestAddr Pointer to the first destination word
- //
- // No checks are made for invalid memory locations or that the
- // end address is > then the first start address.
- void MemCopy(Uint16 *SourceAddr, Uint16* SourceEndAddr, Uint16* DestAddr)
- {
- while(SourceAddr < SourceEndAddr)
- {
- *DestAddr++ = *SourceAddr++;
- }
- return;
- }
-
- //===========================================================================
- // End of file.
- //===========================================================================
|