📄 s3esk_lcd_selftest.c
字号:
//////////////////////////////////////////////////////////////////////////////
// Filename: E:\MicroBlaze\s3esk_lcd/drivers/S3ESK_LCD_v1_00_a/src/S3ESK_LCD_selftest.c
// Version: 1.00.a
// Description: Contains a diagnostic self-test function for the S3ESK_LCD driver
// Date: Tue Jun 27 06:58:14 2006 (by Create and Import Peripheral Wizard)
//////////////////////////////////////////////////////////////////////////////
/***************************** Include Files *******************************/
#include "S3ESK_LCD.h"
/************************** Constant Definitions ***************************/
/************************** Variable Definitions ****************************/
/************************** Function Definitions ***************************/
/**
*
* Run a self-test on the driver/device. Note this may be a destructive test if
* resets of the device are performed.
*
* If the hardware system is not built correctly, this function may never
* return to the caller.
*
* @param baseaddr_p is the base address of the S3ESK_LCD instance to be worked on.
*
* @return
*
* - XST_SUCCESS if all self-test code passed
* - XST_FAILURE if any self-test code failed
*
* @note Caching must be turned off for this function to work.
* @note Self test may fail if data memory and device are not on the same bus.
*
*/
XStatus S3ESK_LCD_SelfTest(void * baseaddr_p)
{
int Index;
Xuint32 baseaddr;
Xuint8 Reg8Value;
Xuint16 Reg16Value;
Xuint32 Reg32Value;
Xuint64 Reg64Value;
/*
* Assert the argument
*/
XASSERT_NONVOID(baseaddr_p != XNULL);
baseaddr = (Xuint32) baseaddr_p;
xil_printf("******************************\n\r");
xil_printf("* User Peripheral Self Test\n\r");
xil_printf("******************************\n\n\r");
/*
* Reset the device to get it back to its default state and get module identification value
*/
xil_printf("RST/MIR test...\n\r");
S3ESK_LCD_mReset(baseaddr);
xil_printf(" - write 0x%08x to software reset register \n\r", IPIF_RESET);
Reg32Value = S3ESK_LCD_mReadMIR(baseaddr);
if ( Reg32Value == 0x30220301 )
{
xil_printf(" - read 0x%08x (expected) from module identification register \n\r", Reg32Value);
xil_printf(" - RST/MIR write/read passed\n\n\r");
}
else
{
xil_printf(" - read 0x%08x (unexpected) from module identification register, expect 0x30220301 \n\r", Reg32Value);
xil_printf(" - RST/MIR write/read failed\n\n\r");
return XST_FAILURE;
}
/*
* Write to user logic slave module register(s) and read back
*/
xil_printf("User logic slave module test...\n\r");
xil_printf(" - write 1 to slave register 0\n\r");
S3ESK_LCD_mWriteSlaveReg0(baseaddr, 1);
Reg32Value = S3ESK_LCD_mReadSlaveReg0(baseaddr);
xil_printf(" - read %d from register 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 1 )
{
xil_printf(" - slave register 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 2 to slave register 1\n\r");
S3ESK_LCD_mWriteSlaveReg1(baseaddr, 2);
Reg32Value = S3ESK_LCD_mReadSlaveReg1(baseaddr);
xil_printf(" - read %d from register 1\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 2 )
{
xil_printf(" - slave register 1 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - slave register write/read passed\n\n\r");
/*
* Enable all possible interrupts and clear interrupt status register(s)
*/
xil_printf("Interrupt controller test...\n\r");
Reg32Value = S3ESK_LCD_mReadReg(baseaddr, S3ESK_LCD_INTR_ISR_OFFSET);
xil_printf(" - IP (user logic) interrupt status : 0x%08x \n\r", Reg32Value);
xil_printf(" - clear IP (user logic) interrupt status register\n\r");
S3ESK_LCD_mWriteReg(baseaddr, S3ESK_LCD_INTR_ISR_OFFSET, Reg32Value);
Reg32Value = S3ESK_LCD_mReadReg(baseaddr, S3ESK_LCD_INTR_DISR_OFFSET);
xil_printf(" - Device (peripheral) interrupt status : 0x%08x \n\r", Reg32Value);
xil_printf(" - clear Device (peripheral) interrupt status register\n\r");
S3ESK_LCD_mWriteReg(baseaddr, S3ESK_LCD_INTR_DISR_OFFSET, Reg32Value);
xil_printf(" - enable all possible interrupt(s)\n\r");
S3ESK_LCD_EnableInterrupt(baseaddr_p);
xil_printf(" - write/read interrupt register passed \n\n\r");
return XST_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -