📄 ezkitutilities.c
字号:
/*********************************************************************************
Copyright(c) 2005 Analog Devices, Inc. All Rights Reserved.
This software is proprietary and confidential. By using this software you agree
to the terms of the associated Analog Devices License Agreement.
$RCSfile: ezkitutilities.c,v $
$Revision: 1.4 $
$Date: 2007/06/14 16:28:11 $
Description: EZ-Kit utility routines. This file contains a collection
of functions that automate typical EZ-Kit functionality,
including control of LEDs and push buttons.
*********************************************************************************/
/*********************************************************************
Include files
*********************************************************************/
#include <services/services.h> // system service includes
#include <sysreg.h> // system config definitions
#include "ezkitutilities.h" // EZ-Kit utility definitions
/*********************************************************************
flash addresses for BF-533 EZ-Kit
*********************************************************************/
#if defined(__ADSP_EDINBURGH__) // the Edinburgh EZ-Kit uses a flash for ports
#define pFlashA_PortA_In ((volatile unsigned char *)0x20270000) // address of flash A port A input data register
#define pFlashA_PortA_Out ((volatile unsigned char *)0x20270004) // address of flash A port A output data register
#define pFlashA_PortA_Dir ((volatile unsigned char *)0x20270006) // address of flash A port A direction register
#define pFlashA_PortB_In ((volatile unsigned char *)0x20270001) // address of flash A port B input data register
#define pFlashA_PortB_Out ((volatile unsigned char *)0x20270005) // address of flash A port B output data register
#define pFlashA_PortB_Dir ((volatile unsigned char *)0x20270007) // address of flash A port B direction register
#define pFlashB_PortA_In ((volatile unsigned char *)0x202E0000) // address of flash B port A input data register
#define pFlashB_PortA_Out ((volatile unsigned char *)0x202E0004) // address of flash B port A output data register
#define pFlashB_PortA_Dir ((volatile unsigned char *)0x202E0006) // address of flash B port A direction register
#define pFlashB_PortB_In ((volatile unsigned char *)0x202E0001) // address of flash B port B input data register
#define pFlashB_PortB_Out ((volatile unsigned char *)0x202E0005) // address of flash B port B output data register
#define pFlashB_PortB_Dir ((volatile unsigned char *)0x202E0007) // address of flash B port B direction register
#endif
//REMOVE WHEN DRIVERS ARE ADDED
/*********************************************************************
Miscellaneous defines
*********************************************************************/
#if defined(__ADSP_EDINBURGH__) // ADSP-BF533 EZ-Kit specific info
#define RST_7183 (0x8) //decoder reset bit #3 in flashA portA
#define PPICLK_ADV7183_SELECT (0x10) //decoder clock to PPI bit #4 in flashA portA
#define ADV7183_OE_MASK (0x4) //ADV7183 /OE = PF2
#define ADV7183_OE (0) //Index into Codec flag handler array
#define RST_7171 (0x4) // encoder reset
#endif
#if defined(__ADSP_TETON__)
#define ADV7183_RESET (13) //decoder reset bit
#define ADV7183_OE (2) //ADV7183 /OE = PF2
#define ADV7183_Reset_Delay 0x04000000 // For delay after reset
#define ADV7183_Lock 0x0000ffff // For startup locktime delay
#define ADV7179_RESET (14) // encoder reset bit
#endif
/*********************************************************************
LED/Button to pf mappings
*********************************************************************/
#if defined(__ADSP_EDINBURGH__) // ADSP-BF533 EZ-Kit mappings
ADI_FLAG_ID ezButtonToFlag[] = {
ADI_FLAG_PF8, // button 0
ADI_FLAG_PF9, // button 1
ADI_FLAG_PF10, // button 2
ADI_FLAG_PF11 // button 3
};
ADI_FLAG_ID ezLEDToFlag[] = { // (not used on Edinburgh but needed as placeholder)
ADI_FLAG_PF0, // led 0
ADI_FLAG_PF0, // led 1
ADI_FLAG_PF0, // led 2
ADI_FLAG_PF0, // led 3
ADI_FLAG_PF0, // led 4
ADI_FLAG_PF0 // led 5
};
#endif
/*********************************************************************/
#if defined(__ADSP_STIRLING__) // ADSP-BF538 EZ-Kit mappings
ADI_FLAG_ID ezButtonToFlag[] = {
ADI_FLAG_PF0, // button 0
ADI_FLAG_PF1, // button 1
ADI_FLAG_PF2, // button 2
ADI_FLAG_PF3 // button 3
};
ADI_FLAG_ID ezLEDToFlag[] = {
ADI_FLAG_PC4, // led 0
ADI_FLAG_PC5, // led 1
ADI_FLAG_PC6, // led 2
ADI_FLAG_PC7, // led 3
ADI_FLAG_PC8, // led 4
ADI_FLAG_PC9 // led 5
};
#endif
#if defined(__ADSP_BRAEMAR__) // ADSP-BF537 EZ-Kit mappings
ADI_FLAG_ID ezButtonToFlag[] = {
ADI_FLAG_PF2, // button 0
ADI_FLAG_PF3, // button 1
ADI_FLAG_PF4, // button 2
ADI_FLAG_PF5 // button 3
};
ADI_FLAG_ID ezLEDToFlag[] = {
ADI_FLAG_PF6, // led 0
ADI_FLAG_PF7, // led 1
ADI_FLAG_PF8, // led 2
ADI_FLAG_PF9, // led 3
ADI_FLAG_PF10, // led 4
ADI_FLAG_PF11 // led 5
};
#endif
#if defined(__ADSP_TETON__) // ADSP-BF561 EZ-Kit mappings
ADI_FLAG_ID ezButtonToFlag[] = {
ADI_FLAG_PF5, // button 0
ADI_FLAG_PF6, // button 1
ADI_FLAG_PF7, // button 2
ADI_FLAG_PF8 // button 3
};
ADI_FLAG_ID ezLEDToFlag[] = {
ADI_FLAG_PF40, // led 0
ADI_FLAG_PF41, // led 1
ADI_FLAG_PF42, // led 2
ADI_FLAG_PF43, // led 3
ADI_FLAG_PF44, // led 4
ADI_FLAG_PF45, // led 5
ADI_FLAG_PF46, // led 6
ADI_FLAG_PF47, // led 7
ADI_FLAG_PF32, // led 8
ADI_FLAG_PF33, // led 9
ADI_FLAG_PF34, // led 10
ADI_FLAG_PF35, // led 11
ADI_FLAG_PF36, // led 12
ADI_FLAG_PF37, // led 13
ADI_FLAG_PF38, // led 14
ADI_FLAG_PF39 // led 15
};
#endif
#if defined(__ADSP_MOAB__) // ADSP-BF54x EZ-Kit mappings
ADI_FLAG_ID ezButtonToFlag[] = {
ADI_FLAG_PB8, // button 1
ADI_FLAG_PB9, // button 2
ADI_FLAG_PB10, // button 3
ADI_FLAG_PB11 // button 4
};
ADI_FLAG_ID ezLEDToFlag[] = {
ADI_FLAG_PG6, // led 1
ADI_FLAG_PG7, // led 2
ADI_FLAG_PG8, // led 3
ADI_FLAG_PG9, // led 4
ADI_FLAG_PG10, // led 5
ADI_FLAG_PG11 // led 6
};
#endif
/*********************************************************************
LED control
*********************************************************************/
static u32 LEDDisplay; // bit field representing the LED display
static u32 LEDEnables; // bit field representing the enabled LEDs
/*********************************************************************
function prototypes
*********************************************************************/
/*********************************************************************
Function: ezInit
Description: Initializes the EZ-Kit. Specifically:
- configures async memories
- configures flash (where applicable)
*********************************************************************/
void ezInit(u32 NumCores)
{
// no longer configures async memory - done in adi_ebiu_init
// configure flash
#if defined(__ADSP_EDINBURGH__) // ADSP-BF533 EZ-Kit specific info
*pFlashA_PortA_Out = 0; // resets port A to initial value
*pFlashA_PortA_Dir = 0xFF; // configure everything on port A as outputs
*pFlashA_PortB_Out = 0; // resets port B to initial value
*pFlashA_PortB_Dir = 0x3f; // configure everything on port B as outputs
#endif
// no longer initializing power or EBIU services
}
/*********************************************************************
Function: ezInitLEDs
Description: Enables an LED for use
*********************************************************************/
void ezInitLED(u32 LED) // enables an LED
{
// make sure the LED is valid
if (LED >= EZ_NUM_LEDS) return;
// set the enable bit
LEDEnables |= (1 << LED);
// configure the flag for output
#if defined(__ADSP_BRAEMAR__) || defined (__ADSP_TETON__) || defined (__ADSP_STIRLING__) || defined (__ADSP_MOAB__)
adi_flag_Open(ezLEDToFlag[LED]);
adi_flag_SetDirection(ezLEDToFlag[LED], ADI_FLAG_DIRECTION_OUTPUT);
#endif
// dim the LED
ezTurnOffLED(LED);
}
/*********************************************************************
Function: ezTurnOnLED
Description: Lights an LED
*********************************************************************/
void ezTurnOnLED(u32 LED) // lights an LED
{
// update
ezSetDisplay(LEDDisplay | (1 << LED));
}
/*********************************************************************
Function: ezTurnOffLED
Description: Dims an LED
*********************************************************************/
void ezTurnOffLED(u32 LED) // dims an LED
{
// update
ezSetDisplay(LEDDisplay & ~(1 << LED));
}
/*********************************************************************
Function: ezToggleLED
Description: Toggles an LED
*********************************************************************/
void ezToggleLED(u32 LED) // toggles an LED
{
// update
ezSetDisplay(LEDDisplay ^ (1 << LED));
}
/*********************************************************************
Function: ezTurnOnAllLEDs
Description: Lights all LEDs
*********************************************************************/
void ezTurnOnAllLEDs(void) // lights all LEDs
{
// update
ezSetDisplay(0xffff);
}
/*********************************************************************
Function: ezTurnOffAllLEDs
Description: Dims all LEDs
*********************************************************************/
void ezTurnOffAllLEDs(void) // dims all LEDs
{
// update
ezSetDisplay(0);
}
/*********************************************************************
Function: ezToggleAllLEDs
Description: Toggles all LEDs
*********************************************************************/
void ezToggleAllLEDs(void) // toggles all LEDs
{
// update
ezSetDisplay(~LEDDisplay);
}
/*********************************************************************
Function: ezIsLEDon
Description: Senses if an LED is lit
*********************************************************************/
u32 ezIsLEDOn(u32 LED) // senses if an LED is lit
{
// return
return (LEDDisplay & (1 << LED)?TRUE:FALSE);
}
/*********************************************************************
Function: ezCycleLEDs
Description: Cycles LEDs
*********************************************************************/
void ezCycleLEDs(void) // cycles all LEDs
{
static u32 CycleDisplay;
// insure at least 1 LED is enabled
if (LEDEnables == 0) return;
// calculate the pattern
do {
CycleDisplay <<= 1;
if (CycleDisplay == 0) CycleDisplay = 1;
} while ((CycleDisplay & LEDEnables) == 0);
// update
ezSetDisplay(CycleDisplay);
}
/*********************************************************************
Function: ezGetDisplay
Description: Gets the display pattern
*********************************************************************/
u32 ezGetDisplay(void) // gets the pattern
{
// get it
return (LEDDisplay);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -