笔者通过查阅相关资料,了解了BeagleBoneBlack开发板的UART接口特性,掌握的UART接口的基本使用方法,最后通过一个C语言的例程实现串口的自发自收。有了这个串口开发板就可和其他设备进行串口通信了,比如可以将单片机通过串口挂在开发板上。

第一步:硬件连接

1、用miniUSB线将 电脑与开发板相连,BeagleBoneBlack启动之后,在浏览器里面输入192.168.7.2,打开网页之后就可以查看相关的串口信息。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

注:

(1)BeagleBoneBlack开发板的P8,P9扩展接口上共引出了四个半的串口,其中UART1,UART2,UART4,UART5四个串口的发射和接收引脚全部引出,UART3只引出了发射引脚,所以共引出了四个串口;

(2)BeagleBoneBlack开发板的UART0引脚默认作为调试引脚使用,系统上电之后UART0作为默认的打印引脚使用;

(3)接下来的实验将会以UART4为例说明串口的使用。

2、本实验的硬件连接如下图所示,将P9的11,13引脚直接连接,这样就可以实现自发自收。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3、实物图如下

第二步:手动打开串口

1、加载设备

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(1)添加环境变量:export SLOTS=/sys/devices/bone_capemgr.8/slots

注:

1)功能说明:设置或显示环境变量。

2)语法:export [-fnp][变量名称]=[变量设置值]

3)补充说明:在shell中执行程序时,shell会提供一组环境变量。 export可新增,修改或删除环境变量,供后续执行的程序使用。

4)作用范围:export的有效期仅限于于该此登陆操作。

5)参 数:

    -f 代表[变量名称]中为函数名称。

    -n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。

    -p 列出所有的shell赋予程序的环境变量。

6)一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。

7)export命令可以用于传递一个或多个变量的值到任何后继脚本

 

(2)查看环境变量:cat $SLOTS

(3)加载UART4:echo BB-UART4 > $SLOTS

(4)查看设备:ls ttyO*,ttyO4就是添加的UART4设备

注:

1)*:匹配符。ttyO*可以过滤出所有ttyO开头的文件

2、利用minicom打开串口

 

 

 

注:如果想知道minicom的参数配置和相关命令,可以输入minicom –h,如下图所示,

注:

(1) 由上图可知道,刚才打开的minicom时配置参数的意义;

(2)-b 9600 设置波特率

(3)-o 不初始化模块,且锁定启动状态

(4)-D /dev/ttyO4 设置驱动名称

 

3、回车之后就可以进入UART4了,这时候输入任何字符在终端上都会显示出来。

第三步:用C语言编程实现自发自收

1、代码如下

 1 #include<stdio.h>
2 #include<fcntl.h>
3 #include<unistd.h>
4 #include<termios.h> // using the termios.h library
5
6 int main()
7 {
8 int file, count;
9 if ((file = open("/dev/ttyO4", O_RDWR | O_NOCTTY | O_NDELAY))<0)
10 {
11 perror("UART: Failed to open the file. \n");
12 return -1;
13 }
14 struct termios options; // the termios structure is vital
15 tcgetattr(file, &options); // sets the parameters associated with file
16 // Set up the communications options:
17 // 9600 baud, 8-bit, enable receiver, no modem control lines
18 options.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
19 options.c_iflag = IGNPAR | ICRNL; // ignore partity errors, CR -> newline
20 tcflush(file, TCIFLUSH); // discard file information not transmitted
21 tcsetattr(file, TCSANOW, &options); // changes occur immmediately
22 unsigned char transmit[18] = "Hello BeagleBone!"; // the string to send
23
24 if ((count = write(file, &transmit,18))<0)
25 { // send the string
26 perror("Failed to write to the output\n");
27 return -1;
28 }
29
30 usleep(100000); // give the Arduino a chance to respond
31 unsigned char receive[100]; // declare a buffer for receiving data
32 if ((count = read(file, (void*)receive, 100))<0)
33 { // receive the data
34 perror("Failed to read from the input\n");
35 return -1;
36 }
37 if (count==0)
38 printf("There was no data available to read! \n");
39 else
40 {
41 printf("The following was read in [%d]: %s\n",count,receive);
42 }
43 close(file);
44 return 0;
45 }

 

2、实验现象

beaglebone_black_学习笔记——(9)UART使用的更多相关文章

  1. MSP430学习笔记:UART

    串通可以两种方法其现 一.USART硬件直接实现 二.通过定时器软件实现 该模块可现现: UART异步串行通讯 SPI同步串行通讯 I2C同步串行通讯 UxCTL控制寄存器 7:PENA 6:PEV ...

  2. RTC实时时间系统学习笔记(一)---------------UART串口

    临近研三了,自己倾向于要找数字IC方面的工作,苦于教研室的项目一直都是调板子调板子调板子,真正用到FPGA的很少,,本着"工欲善其事必先利其器"的原则,在网上搜寻如何自学FPGA, ...

  3. 【原创】ZYNQ学习笔记(一) HelloWorld实现

    拿过ZYNQ开发板,里面给了很多部件,果断从网上下载了手册,N多手册和原理图. 要比Spartan-6复杂多了,耐心地看了看,知道ZYNQ系列分为PS(系统)以及PL(逻辑)部分. 之前,自己一直在做 ...

  4. LM3S之boot loader学习笔记-1

    LM3S之boot loader学习笔记-1 彭会锋 (首先声明,此系列文章编写参考了很多资料,其中一些内容是原版内容的引用和整理,并加入了一些自己的见解,我已经尽量标明引用部分,如有未全部标注部分, ...

  5. 嵌入式学习笔记(综合提高篇 第一章) -- 利用串口点亮/关闭LED灯

    1      前言 从踏入嵌入式行业到现在已经过去了4年多,参与开发过的产品不少,有交换机.光端机以及光纤收发器,停车场出入缴费系统,二维码扫码枪,智能指纹锁以及数字IC芯片开发等; 涉及产品中中既有 ...

  6. FPFA学习笔记的系列

    1.Zynq 学习裸跑系列 学会Zynq(1)搭建Zynq-7000 AP SoC处理器 作者:FPGADesigner 学会Zynq(2)Zynq-7000处理器的配置详解 作者:FPGADesig ...

  7. 嵌入式Linux学习笔记之第一阶段---基础篇

    嵌入式Linux学习分五个阶段 第一阶段: 01嵌入式环境搭建初期 02C语言语法概述 03C语言内存操作 04c语言函数 05linux基础 06gun基础 第二阶段: 01-linux之io系统编 ...

  8. STM32F4-IAP学习笔记--(转)

    花了断断续续两天时间在STM32上面写了一个IAP(In Application Programing)Boot,期间多多少少还是遇到的了不少问题.现在就花点时间把这两天写的东西整理一下,就当是学习笔 ...

  9. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. 软件工程(C编码实践)学习总结及心得

    徐礼超  原创作品转载请注明出处:http://www.cnblogs.com/xulichao <软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com ...

  2. HTML基础(四)——设置超链接的样式示例

     ***设置超链接的样式示例  a:link 超链接被点前状态 a:visited 超链接点击后状态 a:hover 悬停在超链接时 a:active 点击超链接时 在定义这些状态时,有一个顺序l v ...

  3. Maven Scope

    Dependency Scope  在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署.目前<scope>可以使用5个值:  * ...

  4. sql server 基础教程[温故而知新三]

    子曰:“温故而知新,可以为师矣.”孔子说:“温习旧知识从而得知新的理解与体会,凭借这一点就可以成为老师了.“ 尤其是咱们搞程序的人,不管是不是全栈工程师,都是集十八般武艺于一身.不过有时候有些知识如果 ...

  5. nginx设置黑/白名单

    编辑nginx配置文件: server { listen ; server_name www.xxx.cn; #白名单 allow 192.168.1.200; deny all; #黑名单 #den ...

  6. Linux中的SWAP交换分区

    大多数 Linux 在系统安装时都会提醒并建议你划分一个 SWAP 交换分区,如果你是从 Windows 切换到 Linux 的新用户,兴许对这个 SWAP 会感到十分疑惑. SWAP 交换分区到底是 ...

  7. SpringMVC从入门到精通之第一章

    第一节 简介:SpringMVC是Spring框架的一个模块,Spring和SpringMVC无需通过中间整合层进行整合.SpringMVC是基于MVC的WEB框架.MVC设计模式在B/S下的应用: ...

  8. stanford coursera 机器学习编程作业 exercise 6(支持向量机-support vector machines)

    在本练习中,先介绍了SVM的一些基本知识,再使用SVM(支持向量机 )实现一个垃圾邮件分类器. 在开始之前,先简单介绍一下SVM ①从逻辑回归的 cost function 到SVM 的 cost f ...

  9. 计算2的N次方&&计算e

    2的N次方 注意:这里在处理的时候并没有用循环来处理,而是用移位的做法.    n<<4  就是 n*2^4    ,所以在本例中只需要写 1<<time  (time是要求的 ...

  10. VS Code

    VS Code VS Code(Visual Studio Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器.几乎完美的编辑器. 官网:https://code.visualstudi ...