Esempio n. 1
0
/*
 *
 *  USBSTK5505_GPIO_setDirection( number, direction )
 *
 *      Uint16 number    <- GPIO number
 *      Uint16 direction <- 0 : Set GPIO as Input
 *                          1 : Set GPIO as Output
 *
 *  Description
 *      Configure the GPIO "number" to input or output.
 *
 */
Int16 USBSTK5505_GPIO_setDirection( Uint16 number, Uint16 direction )
{
    CSL_Status           status;
    CSL_GpioPinConfig    config;
    
    /* Configure GPIO direction */
    config.pinNum    = number;
    config.direction = direction;
    config.trigger   = CSL_GPIO_TRIG_CLEAR_EDGE;
    
    /* Set configuration */
    status = GPIO_configBit(hGpio,&config);

    return status;
}
/**
 *  \brief  Function to test the functionality of GPIO as output pin
 *
 *  This function configures GPIO pin 0 as output pin and writes a value.
 *  Written value is verified and result is returned to the main function
 *
 *  \param  none
 *
 *  \return Test result
 */
int  gpio_output_pin_test(void)
{
    CSL_Status           status;
    CSL_GpioPinConfig    config;
    Uint16               writeVal;
    Uint16               readVal;

    writeVal = 0;

    /* Pin Muxing gor GPIO Pins -
     * Make Serial port 0 and 1, parallel port's 8 pin and
     * A15 to A20 pin as GPIO
     */
    CSL_FINST(CSL_SYSCTRL_REGS->EBSR, SYS_EBSR_SP0MODE, MODE2);

    /* Open GPIO module */
    hGpio = GPIO_open(&gpioObj, &status);
    if((NULL == hGpio) || (CSL_SOK != status))
    {
        printf("GPIO_open failed\n");
        return(CSL_TEST_FAILED);
    }
	else
	{
		printf("GPIO_open Successful\n");
	}

    /* Reset all the pins */
    GPIO_reset(hGpio);

    /* Configure GPIO pin 0 as output pin */
    config.pinNum    = CSL_GPIO_PIN0;
    config.direction = CSL_GPIO_DIR_OUTPUT;
    config.trigger   = CSL_GPIO_TRIG_CLEAR_EDGE;

    status = GPIO_configBit(hGpio, &config);
    if(CSL_SOK != status)
    {
        printf("GPIO_configBit failed\n");
        return(CSL_TEST_FAILED);
    }

    /* Write 1 to output pin */
    status = GPIO_write(hGpio, CSL_GPIO_PIN0, writeVal);
    if(CSL_SOK != status)
    {
        printf("GPIO_write Failed\n");
        return(CSL_TEST_FAILED);
    }
	else
	{
		printf("GPIO_write Successful\n");
	}

    /* Read pin No 0 - to check data written is equal to data read */
    status = GPIO_read(hGpio, CSL_GPIO_PIN0, &readVal);
    if(CSL_SOK != status)
    {
        printf("GPIO_read failed\n");
        return(CSL_TEST_FAILED);
    }
	else
	{
		printf("GPIO_read Successful\n");
	}

	/* Compare the value read and value written */
    if(writeVal == readVal)
    {
        printf("Data read is same as data written\n");
    }
    else
    {
        printf("Data read is not same as data written \n");
        return(CSL_TEST_FAILED);
    }

    /* Close the GPIO module */
    status = GPIO_close(hGpio);
    if(CSL_SOK != status)
    {
        printf("GPIO_close failed\n");
        return(CSL_TEST_FAILED);
    }

    return(CSL_TEST_PASSED);
}