#include<xparameters.h>
#include<xstatus.h>
#include<xuartlite.h>
#include<xgpio.h>
#define TEST_BUFFER_SIZE 5 // size of buffer of Uart
Xuint8 SendBuffer[TEST_BUFFER_SIZE];
Xuint8 RecvBuffer[TEST_BUFFER_SIZE];
int main(void){
XUartLite UartLite_DCE;
XGpio led;
XStatus Status;
unsigned int SentCount;
unsigned int ReceivedCount;
int Index;
// Initialize Led_8bit
XGpio_Initialize(&led, XPAR_LEDS_8BIT_DEVICE_ID);
XGpio_SetDataDirection(&led,1,0);
// Initialize Uart_DCE
Status = XUartLite_Initialize(&UartLite_DCE, XPAR_RS232_DCE_DEVICE_ID);
if (Status != XST_SUCCESS){
return XST_FAILURE;
}
// Initialize Buffer
for (Index = 0; Index < TEST_BUFFER_SIZE; Index++){
SendBuffer[Index] = Index;
RecvBuffer[Index] = 0;
}
// Send data
SentCount = XUartLite_Send(&UartLite_DCE, SendBuffer, TEST_BUFFER_SIZE);
if (SentCount != TEST_BUFFER_SIZE){
return XST_FAILURE;
}
// wait for data have been send
while (XUartLite_IsSending(&UartLite_DCE)){
}
// Received data
ReceivedCount = XUartLite_Recv(&UartLite_DCE, RecvBuffer, TEST_BUFFER_SIZE);
if (ReceivedCount != TEST_BUFFER_SIZE){
return XST_FAILURE;
}
// check if data send correctly
for (Index = 0; Index < TEST_BUFFER_SIZE; Index++){
if (SendBuffer[Index] == RecvBuffer[Index])
XGpio_DiscreteWrite(&led, 1, 3); // turn on Led1, Led2
else
XGpio_DiscreteWrite(&led, 1, 192); // turn on Led7, Led8
}
}