取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
Visitor
Visitor
212 次查看
注册日期: ‎10-20-2020

uartlite串口同时高速收发问题

串口以5ms的周期往上位机发数据,上位机无论往下发什么数据,都会影响上发的数据是为什么?该怎么解决

0 项奖励
回复
3 回复数
Xilinx Employee
Xilinx Employee
202 次查看
注册日期: ‎09-14-2018

@Lyx1997 

建议描述的具体写,可以贴上了log和代码,串口本身是全双工,我推测可能是代码问题。

----------------------------------------------------------------------------------------------
如果帖子有帮助,别忘“接受为解决方案”或“奖励”。谢谢!
Don't forget to "Accept as solution" or "Kudo" if it helps. Thanks!
----------------------------------------------------------------------------------------------

 

0 项奖励
回复
Visitor
Visitor
200 次查看
注册日期: ‎10-20-2020

void INTERRUPT_Handler_CALIBRATION(void)
{
    while((Calibration_Trans_Buffer_Begin!=Calibration_Trans_Buffer_Rear)&&((Xil_In32(XPAR_UART_MAIN_INTERFACE_BASEADDR+0x08)&0x08)==0))
    {
      Xil_Out32(XPAR_UART_MAIN_INTERFACE_BASEADDR+0x04,Calibration_Trans_Buffer[Calibration_Trans_Buffer_Begin]);
      Calibration_Trans_Buffer_Begin=(Calibration_Trans_Buffer_Begin+1)&0xFF;
    }
    if(Calibration_Trans_Buffer_Begin==Calibration_Trans_Buffer_Rear)
      {
      XUartLite_DisableInterrupt(Pointer_Uart_Calibration);
      }
}

 

这是串口中断代码,只发送是没有问题的,但是如果上位机也开始往下发数据,上发的数据就不对了,但我中断函数里并没有处理接收的数据,为什么会影响发送的数据呢

0 项奖励
回复
Xilinx Employee
Xilinx Employee
147 次查看
注册日期: ‎09-14-2018

你的代码中,看起来是tx_fifo未满就顺序发送Calibration_Trans_Buffer中数据,发送完成后关闭uart中断?

感觉这个流程有些问题,可否进一步解释下?

建议使用bsp中axi uartlite的例子来测试下看看,或者参考其中的代码。

 

 

0 项奖励
回复