第六篇?使能Rico board上的串口,以及测试。
时间:10-02
整理:3721RD
点击:
在此要感谢米尔科技的技术支持sunny,和@jinyi7061,在他们的帮助下,我完成串口3的使能,特此向他们表示感谢。jinyi7061的帖子里面已经介绍的很详细了,我稍微补充一点。就是修改设备树的代码的时候,如下所示:
上图的0x1f8 0x1fc 0x228 0x22c是怎么来的,我们可以借助TI Pinmux工具:
截图如下:
TI Pinmux
组后,记录下,我的串口3的测试(因为我的项目要用到串口):
我的程序代码:
右侧是debug口的调试(uart0),左侧是uart3的输出。
现场实物图片如下:
上图的0x1f8 0x1fc 0x228 0x22c是怎么来的,我们可以借助TI Pinmux工具:
截图如下:
TI Pinmux
组后,记录下,我的串口3的测试(因为我的项目要用到串口):
我的程序代码:
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #define UART_PATH "/dev/ttyO3"
- #define BUF_SIZE 64
- int main(int argc,char *arvg[])
- {
- struct termios oldio, newio;
- int fd;
- int ret;
- char buf[BUF_SIZE];
- fd = open(UART_PATH, O_RDWR|O_NOCTTY|O_NDELAY);
- if(fd < 0)
- {
- printf("open failed:error num is %d.\n", fd);
- return fd;
- }
- printf("fd is %d and dev is %s.\n", fd, UART_PATH);
- ret = tcgetattr(fd, &oldio);
- if(ret != 0)
- {
- printf("get atrr failed ret:%d.\n", ret);
- return ret;
- }
- bzero(&newio, sizeof(newio));
- newio.c_cflag |= CLOCAL | CREAD;
- newio.c_cflag &= ~CSIZE;
-
- cfsetispeed(&newio, B9600);
- cfsetospeed(&newio, B9600);
- newio.c_cflag &= ~PARENB;//无校验
- newio.c_cflag &= ~CSTOPB;//一个停止位
- newio.c_cflag &= ~CSIZE;
- newio.c_cflag |= CS8;//8位数据
- newio.c_lflag &= ~(ECHO|ECHOE|ISIG|ICANON);
- newio.c_oflag &= ~OPOST;
- ret = tcsetattr(fd, TCSANOW, &newio);
-
- if(ret != 0)
- {
- printf("set atrr failed ret:%d.\n", ret);
- return ret;
- }
- else
- {
- memset(buf, 0, BUF_SIZE);
- sprintf(buf,"iysheng CHINA.");
- write(fd, buf, sizeof(buf));
- close(fd);
- printf("set attr done and test ok.\n");
- }
- while(1)
- {
- memset(buf, 0, BUF_SIZE);
- fd = open(UART_PATH, O_RDWR|O_NOCTTY|O_NDELAY);
- printf("enter new buf.\n", buf);
- scanf("%s",buf);
- if(0 == strcmp("quit",buf))
- break;
- write(fd, buf, sizeof(buf));
- close(fd);
- }
- return 0;
-
- }
右侧是debug口的调试(uart0),左侧是uart3的输出。
现场实物图片如下: