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

📄 board.c

📁 Real-Time Digital Signal Processing Implementations, Applications, and Experiments with the TMS320C
💻 C
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************/
/*****************************************************************************/
/*  BOARD.C - TMS320VC5510 EVM Board Support Library Functions               */
/*                                                                           */
/*  This module provides the routines used to support board initialization.  */
/*                                                                           */
/*                                                                           */
/*                                                                           */
/*  FUNCTIONS:                                                               */
/*                                                                           */
/*  brd_init() - initializes the board                                       */
/*  brd_set_cpu_freq() - sets the CPU frequency                              */
/*  brd_get_cpu_freq() - returns the CPU frequency in MHz                    */
/*  brd_emif_init() - initializes EMIF registers                             */
/*  brd_interrupt_host() - interrupts host (HINT)                            */
/*  brd_busy_delay() - Provides multiple 64K loop delays                     */
/*                                                                           */
/*  STATIC FUNCTIONS:                                                        */
/*                                                                           */
/*                                                                           */
/*  GLOBAL VARIABLES DEFINED                                                 */
/*                                                                           */
/*                                                                           */ 
/*****************************************************************************/

/******************************************************************************/
/* FILE Global PROTOTYPES                                                     */
/******************************************************************************/

#pragma CODE_SECTION(brd_init, "EVM5510");
#pragma CODE_SECTION(brd_set_cpu_freq, "EVM5510");
#pragma CODE_SECTION(brd_get_cpu_freq, "EVM5510");
#pragma CODE_SECTION(brd_emif_init, "EVM5510");
#pragma CODE_SECTION(brd_interrupt_host, "EVM5510");
#pragma CODE_SECTION(brd_busy_delay, "EVM5510");


/*****************************************************************************/
/* INCLUDES AND LOCAL DEFINES                                                */
/*****************************************************************************/
#include "board.h"
#include "intr.h"
#include "timer.h"
#include "emif.h"

/*****************************************************************************/
/* typedefs                                                                  */
/*****************************************************************************/

/*****************************************************************************/
/* DEFINES                                                                   */
/*****************************************************************************/
#define EVM_OSC		20

/*****************************************************************************/
/* PRAGMAS                                                                   */
/*****************************************************************************/

/*****************************************************************************/
/* GLOBAL VARIABLES                                                          */
/*****************************************************************************/
#pragma DATA_SECTION(boardInitFlag, "EVMDATA");
s16 boardInitFlag =  False;

/*****************************************************************************/
/* EXTERNAL variables                                                        */
/*****************************************************************************/
extern int _vectors;	 //Start label of vector table

/******************************************************************************/
/* FILE LOCAL (STATIC) VARIABLES                                             */
/******************************************************************************/
#pragma DATA_SECTION(cpuFreq, "EVMDATA");
u16  cpuFreq = 0;       //default to unassigned

/******************************************************************************/
/* FILE LOCAL (STATIC) PROTOTYPES                                            */
/******************************************************************************/

/******************************************************************************/
/* FUNCTIONS                                                                  */
/******************************************************************************/

/******************************************************************************/
/* s16 brd_init(u16 freq) - Initialize EVM board for use                      */
/*                                                                            */
/*  Parameters:                                                               */
/*      - freq: Desired board operating frequency.                            */
/*                                                                            */ 
/*  Return:                                                                   */
/*  - BRD_OK on success                                                       */
/*  - BRD_ERROR on failure                                                    */
/*                                                                            */ 
/*  Notes:                                                                    */
/*                                                                            */ 
/*  Board frequencies must be a multiple of 10 with the lowest being 20 MHz   */
/*  and the highest being 160 MHz.                                            */
/*                                                                            */ 
/******************************************************************************/
s16 brd_init(u16 freq)
{
	brd_set_cpu_freq(freq);

    brd_emif_init();
		
    TIMER_HALT(TIMER_PORT0);
    TIMER_HALT(TIMER_PORT1);
    
    // disable interrupts
    INTR_GLOBAL_DISABLE;

    // clear IFR/IER registers
    IER0 = 0;
    IFR0 = 0;
    IER1 = 0;
    IFR1 = 0;
      
    CPLD_CTRL1_REG  = CPLD_CTRL1_DEFAULT;
    CPLD_CTRL2_REG  = CPLD_CTRL2_DEFAULT;
    CPLD_DBIO_REG   = CPLD_DBIO_DEFAULT;
    CPLD_SEM0_REG   = CPLD_SEM0_DEFAULT;
    CPLD_SEM1_REG   = CPLD_SEM1_DEFAULT;
    CPLD_SLIC_REG   = CPLD_SLIC_DEFAULT;

    // reset DSP timer
    TIMER_RESET(TIMER_PORT0);
    TIMER_RESET(TIMER_PORT1);

	//Initialize interrupt vector pointers
    REG_WRITE(IVPH_ADDR,(((u32)&_vectors & 0xffff00) >> 8));
	REG_WRITE(IVPD_ADDR,(((u32)&_vectors & 0xffff00) >> 8));
    
    boardInitFlag = True;

    INTR_GLOBAL_ENABLE; // Enable Interrupts
   
    return(BRD_OK);
}

/*****************************************************************************/
/*  void brd_set_cpu_freq()                                                  */
/*                                                                           */
/*  This routine sets the CPU frequency                                      */
/*                                                                           */
/*  Parameters:                                                              */
/*  - freq frequency in MHz to set cpu clock                                 */
/*                                                                           */
/*  Return:                                                                  */
/*  - void                                                                   */
/*                                                                           */
/*  Notes:                                                                   */
/*                                                                           */
/*  Board frequencies must be a multiple of 10 with the lowest being 20 MHz  */
/*  and the highest being 160 MHz.                                           */ 
/*                                                                           */
/*****************************************************************************/
void brd_set_cpu_freq(u16 freq)
{
    // limit frequency to max
    if (freq > MAX_CPU_FREQ)
        freq = MAX_CPU_FREQ;
    
    // limit frequency to min
    if (freq < MIN_CPU_FREQ)
        freq = MIN_CPU_FREQ;
    
    // if selected freq is current freq, do nothing
    if (freq == cpuFreq)
        return;

⌨️ 快捷键说明

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