Microblaze上串口传输问题
时间:10-02
整理:3721RD
点击:
高手求助,请问在microblaze上实现通过串口输入一串数据后,能在串口调试助手上立即显示输出的数据,用什么函数实现?
int main(void)
{
init_platform();
u8 rs_buffer[8];
unsigned int numRcv=0, numSnd=0;
XUartNs550_Initialize(&uartinit, 0);
/* Initialize RS232_Uart_1 - Set baudrate and number of stop bits */
XUartNs550_SetBaud(XPAR_RS232_UART_1_BASEADDR, XPAR_XUARTNS550_CLOCK_HZ, 9600);
XUartNs550_SetLineControlReg(XPAR_RS232_UART_1_BASEADDR, XUN_LCR_8_DATA_BITS);
xil_printf("***************************************\r\n");
xil_printf("*********** Please input data: ******\r\n");
while(!numRcv)
{
numRcv = XUartNs550_Recv(&uartinit, rs_buffer,5);
}
while(!numSnd)
{ numSnd = XUartNs550_Send(&uartinit, rs_buffer,5);
}
cleanup_platform();
return 0;
}
用上述程序只能完成一次操作,而且还会出现错误数据。
int main(void)
{
init_platform();
u8 rs_buffer[8];
unsigned int numRcv=0, numSnd=0;
XUartNs550_Initialize(&uartinit, 0);
/* Initialize RS232_Uart_1 - Set baudrate and number of stop bits */
XUartNs550_SetBaud(XPAR_RS232_UART_1_BASEADDR, XPAR_XUARTNS550_CLOCK_HZ, 9600);
XUartNs550_SetLineControlReg(XPAR_RS232_UART_1_BASEADDR, XUN_LCR_8_DATA_BITS);
xil_printf("***************************************\r\n");
xil_printf("*********** Please input data: ******\r\n");
while(!numRcv)
{
numRcv = XUartNs550_Recv(&uartinit, rs_buffer,5);
}
while(!numSnd)
{ numSnd = XUartNs550_Send(&uartinit, rs_buffer,5);
}
cleanup_platform();
return 0;
}
用上述程序只能完成一次操作,而且还会出现错误数据。
示例程序里应该有hello_uart之类的测试程序,先确定那个是能正常工作的。这样才知道你波特率和通路有没有问题。
另外,你的while循环肯定都是只执行1次就退出了
波特率等设置都对,因为printf输出的都正确。恩,while却是只能执行一次,我想通过串口将数据存储到flash中,想法是先将数据暂存到一个寄存器中,再将寄存器的数据通过指令写入flash。你知道怎么实现吗?
你用个数组存起来,然后通过flash的API写入就行了
学习学习
