UART 应用测试程序

平常测试串口通信程序,接受数据是否正常。open 打开的设备需要改成自己的驱动的/dev/ttyS0/1/2/3/4, 将/dev/ttySx 权限改成777测试。避免不必要的麻烦

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h> // Contains POSIX terminal control definitions
#include <sys/wait.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdio.h>
#include <poll.h>



int g_fpUart = 0;

int main(int argc, char * argv[])
{

    int fd;
    int r;
    char read_byte;
    struct pollfd fds[1];

    g_fpUart = open("/dev/ttyS1", O_RDWR | O_NOCTTY );

    if(g_fpUart<0)
    {
       return EOF;
    }

    struct termios tty;
    tcgetattr(g_fpUart, &tty);
    // In/Out no flow ctrl
    tty.c_iflag = 0;
    tty.c_oflag = 0;
    tty.c_lflag = 0;
    tty.c_line  = 0;
    // config: 115200,8,N,1
    cfsetispeed(&tty, B115200);
    cfsetospeed(&tty, B115200);
    tty.c_cflag &= ~(PARENB);			// Clear parity bit, disabling parity (most common)
    tty.c_cflag &= ~(CSTOPB);			// Clear stop field, only one stop bit used in communication (most common)
    tty.c_cflag &= ~(CSIZE);			// Clear all bits that set the data size 
    tty.c_cflag |=  (CS8);				// 8 bits per byte (most common)
    tty.c_cflag &= ~(CRTSCTS);			// Disable RTS/CTS hardware flow control (most common)
    tty.c_cflag |=  (CREAD | CLOCAL);	// Turn on READ & ignore ctrl lines (CLOCAL = 1)
    tty.c_cflag &= ~(HUPCL);			// disable 'hang up on last close'
    tty.c_cc[VMIN] = 1;
    tty.c_cc[VTIME] = 0;
    if (tcsetattr(g_fpUart, TCSANOW, &tty) != 0)
    {
        printf("Error from tcsetattr\n");
    }

    fds[0].fd = (int)g_fpUart;
    fds[0].events = POLLIN | POLLRDNORM;

    while(1)
	{
		r = poll(fds, 1, -1);
		if (r <= 0)
		{
		   printf("get uart errrot.....\n");
		   return -1;
	    }
		while(read(fd,&read_byte,1))
		{
		  printf("get 0x%x\n", read_byte);
		}
	}

    return 0;
}
Zynq是一款由Xilinx公司推出的可编程逻辑器件,其内部集成了处理器系统和可编程逻辑元件。其中的UART口是一种通信接口,用于串行通信。编写Zynq上的UART口驱动程序需要熟悉Zynq的架构和寄存器映射,以及了解UART通信协议和相关的Linux设备驱动开发知识。 首先,需要在Linux内核中启用UART口的支持,并在设备树中对UART口进行配置。然后,编写相应的设备驱动程序,包括初始化UART口、配置波特率、数据位、停止位等参数,以及实现数据的发送和接收功能。在驱动程序中还需要处理UART口的中断请求,以实现数据的异步传输。 在编写驱动程序时,需要考虑到Zynq的特殊架构和资源映射,以及与处理器系统的通信方式。在开发过程中可以利用Xilinx提供的开发工具和文档,如SDK和官方文档,来辅助驱动程序的开发和调试。 除了编写驱动程序,还需要进行测试和验证。可以编写应用程序进行UART口的读写操作,验证驱动程序的正确性和稳定性。此外,还可以通过逻辑分析仪等工具对UART口的信号进行监测和分析,以确保通信的可靠性和性能。 总之,编写Zynq上的UART口驱动程序需要深入理解硬件和软件的交互原理,熟练掌握Linux设备驱动开发技术,以及具备一定的调试和测试能力。通过认真的开发和验证工作,可以实现高质量的UART口驱动程序,为Zynq系统的串行通信提供可靠的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

baidu_37552881

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值