Xil_DCacheInvalidateRange((INTPTR)UartTxBuf, UartRxLen); usleep(2); XAxiDma_SimpleTransfer(&DmaInst, (UINTPTR)UartTxBuf, UartRxLen, XAXIDMA_DEVICE_TO_DMA); while(!RxDone); RxDone = 0; XUartPs_Send(&UartInst, UartTxBuf, UartRxLen); XUartPs_Recv(&UartInst, UartRxBuf, 4096);//...
UartPsSend(&Uart_PS,SendBufferPtr, SendByteNum); /* Block receiving the buffer. */ ReceivedCount= 0; while(ReceivedCount < TEST_BUFFER_SIZE) { ReceivedCount+= XUartPs_Recv(&Uart_PS,&RecvBuffer[ReceivedCount], (TEST_BUFFER_SIZE - ReceivedCount)); } 附录: //UART发送数据 intUartPsSend...
我们打开uart_intr_loop_bsp目录下的system.mss文件,找到ps7_uart_0,可以看到UART文档和导入示例,如图 8.4.4所示: 图8.4.4 system.mss文件 如果我们点击Import Examples,会弹出下图所示的导入示例界面,关于UART有5个示例,如下图所示: 图8.4.5 导入示例 感兴趣的朋友可以参考下官方提供的UART例程,其中xuartps_...
XUARTPS_IMR_OFFSET);isr_status &= XUartPs_ReadReg(uart_instance_ptr->Config.BaseAddress,XUARTPS_ISR_OFFSET);//判断中断标志位RxFIFO是否触发if (isr_status & (u32)XUARTPS_IXR_RXOVR){rec_data = XUartPs_RecvByte(XPAR_PS7_UART_0_BASEADDR);...
//uart enable XUartPs_EnableUart(&Uart_1); } Uart接收字节函数 判断RX的FIFO是否为空,如果处于空的状态,一直等待;如果不为空,读取RX的FIFO里面的数据,源码如下: u8 Uart_RecvByte(void) { u8 byte = 0; while(((XUartPs_ReadReg(InstancePtr->Config.BaseAddress,XUARTPS_SR_OFFSET)) & 0x02) =...
UartPsSend(&Uart_PS,SendBufferPtr, SendByteNum); /* Block receiving the buffer. */ ReceivedCount= 0; while(ReceivedCount < TEST_BUFFER_SIZE) { ReceivedCount+= XUartPs_Recv(&Uart_PS,&RecvBuffer[ReceivedCount], (TEST_BUFFER_SIZE - ReceivedCount)); ...
returnXST_FAILURE;}else{xil_printf("Uartlite Initialize succeed\n\r");}while(1){uartlite_recv_cnt=XUartLite_Recv(&PL_Uartlite,uartlite_buf,512);if(uartlite_recv_cnt>0){XUartLite_Send(&PL_Uartlite,uartlite_buf,uartlite_recv_cnt);memset(uartlite_buf,0,512);uartlite_recv_cnt=0;}...
RecvBufferPtr = RecvBuffer; TotalRecvCnt = 0; /* 初始化UART设备 */ Config = XUartPs_LookupConfig(DeviceId); if (NULL == Config) { return XST_FAILURE; } Status = XUartPs_CfgInitialize(Uart_Ps, Config, Config->BaseAddress); if (Status != XST_SUCCESS) { ...
int Init_UartPsIntr(XUartPs *UartInstPtr,u16 DeviceId ) { int Status; XUartPs_Config *Config; u32 IntrMask; if (XGetPlatform_Info() == XPLAT_ZYNQ_ULTRA_MP) { #ifdef XPAR_XUARTPS_1_DEVICE_ID DeviceId = XPAR_XUARTPS_1_DEVICE_ID; ...
//默认使用uart0 如果要用uart1 请改成 XPAR_XUARTPS_1_DEVICE_ID Config = XUartPs_LookupConfig(XPAR_XUARTPS_0_DEVICE_ID); if (NULL == Config) { return XST_FAILURE; } Status = XUartPs_CfgInitialize(&debug_uart, Config, Config->BaseAddress); ...