/* * * 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); }