3.2.14 DIAG_GPIO
The DIAG_GPIO module is designed to verify the correct functionality of the GPIO memories through a set of C function calls.
The DIAG_GPIO software test API is mapped to the following safety mechanisms:
| Function | Diagnostic Mechanism | Use Case | Elapsed Time (μs)~ |
|---|---|---|---|
| DIAG_GPIO_InputComparison() | IO_PORTS_INPUT_COMPARISON | POST / OnDemand | 15.03 |
| DIAG_GPIO_InputOutputDirection() | IO_PORTS_DIRECTION | POST / OnDemand | 18.02 |
| DIAG_GPIO_OutputDriveStrength() | IO_PORTS_OUTPUT_DRIVE | POST / OnDemand | 16.18 |
| DIAG_GPIO_OutputMonitoring() | IO_PORTS_OUTPUT_MONITOR | POST / OnDemand | 14.43 |
| DIAG_GPIO_PeripheralMux() | IO_PORTS_PERIPHERAL_MUX | POST / OnDemand | 41.43 |
| DIAG_GPIO_PullUpPullDown() | IO_PORTS_PULLUP_PULLDOWN | POST | 20.29 |
| DIAG_GPIO_SFRReset() | SFR_RESET_STATE | POST | 80 |
| DIAG_GPIO_SFRWriteRead() | SFR_WRITE_READ | POST / OnDemand | 95 |
Configuring the Diagnostic
DIAG_GPIO does not require additional configuration.
Using the Diagnostic
#include "definitions.h"
DIAG_TEST_STATUS DIAG_GPIO_Post ( void )
{
DIAG_TEST_STATUS result[NO_OF_GPIO_POST_TESTS];
DIAG_TEST_STATUS gpio_test_status = DIAG_TEST_FAILED;
int i;
NVMCTRL_REGS->NVMCTRL_CTRLB = NVMCTRL_CTRLB_RWS(3);
result[0] = DIAG_GPIO_InputOutputDirection(PORTB, PIN0, DIAG_PIN_DIR_INPUT);
result[1] = DIAG_GPIO_InputOutputDirection(PORTA, PIN14, DIAG_PIN_DIR_OUTPUT);
result[2] = DIAG_GPIO_InputComparison(PORTA, PIN22, PORTB, PIN1, PORT_PIN_HIGH);
result[3] = DIAG_GPIO_OutputMonitoring(PORTA, PIN8, PORTB, PIN0, PORT_PIN_HIGH);
result[4] = DIAG_GPIO_OutputMonitoring(PORTA, PIN8, PORTB, PIN0, PORT_PIN_LOW);
result[5] = DIAG_GPIO_PeripheralMux(PORTA, PIN8, PORTB, PIN0);
// DO ADDITIONAL TESTS POST HERE
for(i=0; i<NO_OF_GPIO_POST_TESTS; i++)
{
if (result[i] != DIAG_TEST_PASSED)
{
gpio_test_status = result[i];
break;
}
else
{
gpio_test_status = DIAG_TEST_PASSED;
}
}
return gpio_test_status;
}
