[X]关闭

hi ! zynq uart problem,plaease help me!!

文档创建者:grepbug
浏览次数:4714
最后更新:2017-12-28
悬赏1积分未解决
do
{
RecvB=XUartPs_RecvByte(Config-> BaseAddress);
xil_printf("%X \n",RecvB);
for(i=0;i<100;i++);
}
while(XUartPs_IsReceiveData( Config->BaseAddress));


以上时简单的code ,我串口过来的数据有很多,不超过64字节,但是改循环执行一次就跳出了,只接收到了一个字节的数据?

发表评论已发布 1

windy

发表于 2017-12-28 16:25:10 | 显示全部楼层

UART的使用,关键是初始化,你要看初始化那里是怎么设置的;
在例程的源代码里面,它是接收一个byte然后立即发送出去了;若连续接收,你需要修改这里的代码;

在这段代码static void UartIntrHandler(void *CallBackRef)里面修改这一段代码。(结合实际应用)


        while((CsrRegister & XUARTPS_SR_RXEMPTY)== (u32)0)
        {//读取FIFO中所有数据

                        //InstancePtr->ReceiveBuffer.NextBytePtr[ReceivedCount] =//每次循环读取1byte
                                ;

                        XUartPs_WriteReg(InstancePtr->Config.BaseAddress,//每次循环发送读取到的数据
                                           XUARTPS_FIFO_OFFSET,
                                           XUartPs_ReadReg(InstancePtr->Config.
                                                                                     BaseAddress,
                                                                                     XUARTPS_FIFO_OFFSET));

                        ReceivedCount++;//计数
                        CsrRegister = XUartPs_ReadReg(InstancePtr->Config.BaseAddress,
                                                                        XUARTPS_SR_OFFSET);
                }

        }


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则