微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 第六篇?使能Rico board上的串口,以及测试。

第六篇?使能Rico board上的串口,以及测试。

时间:10-02 整理:3721RD 点击:
在此要感谢米尔科技的技术支持sunny,和@jinyi7061,在他们的帮助下,我完成串口3的使能,特此向他们表示感谢。jinyi7061的帖子里面已经介绍的很详细了,我稍微补充一点。就是修改设备树的代码的时候,如下所示:


上图的0x1f8  0x1fc  0x228 0x22c是怎么来的,我们可以借助TI Pinmux工具:
截图如下:


TI Pinmux
组后,记录下,我的串口3的测试(因为我的项目要用到串口):
我的程序代码:

  1. #include
  2. #include
  3. #include
  4. #include
  5. #include
  6. #include
  7. #include
  8. #include
  9. #include

  10. #define UART_PATH "/dev/ttyO3"
  11. #define BUF_SIZE 64


  12. int main(int argc,char *arvg[])
  13. {
  14.         struct termios oldio, newio;
  15.         int fd;
  16.         int ret;
  17.         char buf[BUF_SIZE];
  18.         fd = open(UART_PATH, O_RDWR|O_NOCTTY|O_NDELAY);
  19.         if(fd < 0)
  20.         {
  21.                 printf("open failed:error num is %d.\n", fd);
  22.                 return fd;
  23.         }
  24.         printf("fd is %d and dev is %s.\n", fd, UART_PATH);
  25.         ret = tcgetattr(fd, &oldio);
  26.         if(ret != 0)
  27.         {
  28.                 printf("get atrr failed ret:%d.\n", ret);
  29.                 return ret;
  30.         }
  31.         bzero(&newio, sizeof(newio));
  32.         newio.c_cflag |= CLOCAL | CREAD;
  33.         newio.c_cflag &= ~CSIZE;
  34.        
  35.         cfsetispeed(&newio, B9600);
  36.         cfsetospeed(&newio, B9600);
  37.         newio.c_cflag &= ~PARENB;//无校验
  38.         newio.c_cflag &= ~CSTOPB;//一个停止位
  39.         newio.c_cflag &= ~CSIZE;
  40.         newio.c_cflag |= CS8;//8位数据
  41.         newio.c_lflag &= ~(ECHO|ECHOE|ISIG|ICANON);
  42.     newio.c_oflag &= ~OPOST;
  43.         ret = tcsetattr(fd, TCSANOW, &newio);
  44.        
  45.         if(ret != 0)
  46.         {
  47.                 printf("set atrr failed ret:%d.\n", ret);
  48.                 return ret;
  49.         }
  50.         else
  51.         {
  52.                 memset(buf, 0, BUF_SIZE);
  53.                 sprintf(buf,"iysheng CHINA.");
  54.                 write(fd, buf, sizeof(buf));
  55.                 close(fd);
  56.                 printf("set attr done and test ok.\n");
  57.         }
  58.         while(1)
  59.         {       
  60.         memset(buf, 0, BUF_SIZE);
  61.         fd = open(UART_PATH, O_RDWR|O_NOCTTY|O_NDELAY);
  62.         printf("enter new buf.\n", buf);       
  63.         scanf("%s",buf);
  64.         if(0 == strcmp("quit",buf))
  65.                 break;
  66.         write(fd, buf, sizeof(buf));
  67.         close(fd);
  68.         }
  69.         return 0;       
  70.        
  71. }

复制代码

实验现象截图:


右侧是debug口的调试(uart0),左侧是uart3的输出。
现场实物图片如下:


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top