第四天:gec6818开发板串口蓝牙模块的使用与配置

串口通信

串口是一种简单的通信接口,也是单片机中最常用最简单的通信方式

通常传感器都是采用串口作为与上位机的通信接口

ARM板有三个可外接传感器的串口接口,位于开发板右上角

从上到下,分别是

串口号 串口驱动设备文件

CON2 "/dev/ttySAC1"

CON3 "/dev/ttySAC2"

CON4 "/dev/ttySAC3"

将传感器链接到对应的串口端口后,在Linux中通过串口通信去获取该传感器的数据很简单

只需要打开 串口设备文件,并且对串口进行初始化配置,即可调用write函数来发送数据或命令给传感器,或调用read函数从传感器中接收数据

串口的初始化函数:

c 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h> //串口配置需要的头文件
/*
 *	init_serial:自定义的用来打开串口文件并对串口进行初始化的函数
 *	arg:
 *		@fild:串口设备文件名,指定您要使用的串口
 *		@baudrate:整数,指定您要配置的串口的通信波特率
 *			9600/115200/19200
 *	配置的串口协议:数据位8,停止位1,不要校验,不要硬件控制流
 *	return:
 *		成功,返回打开 并初始化好的 串口的文件描述符,后期根据该返回值来与链接在该串口上的传感器进行通信
 *		失败返回-1
 **/
int init_serial(const char *file, int baudrate)
{ 
	int fd;
	
	fd = open(file, O_RDWR);
	if (fd == -1)
	{
		perror("open device error:");
		return -1;
	}

	struct termios myserial;
	//清空结构体
	memset(&myserial, 0, sizeof (myserial));
	//O_RDWR               
	myserial.c_cflag |= (CLOCAL | CREAD);
	//设置控制模式状态,本地连接,接受使能
	//设置 数据位
	myserial.c_cflag &= ~CSIZE;   //清空数据位
	myserial.c_cflag &= ~CRTSCTS; //无硬件流控制
	myserial.c_cflag |= CS8;      //数据位:8

	myserial.c_cflag &= ~CSTOPB;//   //1位停止位
	myserial.c_cflag &= ~PARENB;  //不要校验
	//myserial.c_iflag |= IGNPAR;   //不要校验
	//myserial.c_oflag = 0;  //输入模式
	//myserial.c_lflag = 0;  //不激活终端模式

	switch (baudrate)
	{
		case 9600:
			cfsetospeed(&myserial, B9600);  //设置波特率
			cfsetispeed(&myserial, B9600);
			break;
		case 115200:
			cfsetospeed(&myserial, B115200);  //设置波特率
			cfsetispeed(&myserial, B115200);
			break;
		case 19200:
			cfsetospeed(&myserial, B19200);  //设置波特率
			cfsetispeed(&myserial, B19200);
			break;
	}
	/* 刷新输出队列,清除正接受的数据 */
	tcflush(fd, TCIFLUSH);

	/* 改变配置 */
	tcsetattr(fd, TCSANOW, &myserial);

	return fd;
}

eg:调用串口

c 复制代码
init_serial(ttySAC1,9600);

这模块资料内容有点多,我打包放到我的资源处了,可自行下载。

下载链接跳转

压缩包里面包括lanya.c实现手机蓝牙app与开发板聊天通信,手机蓝牙连接app,以及蓝牙使用方法和配置方法软件等
相关推荐
爱吃生蚝的于勒2 小时前
C语言内存函数
c语言·开发语言·数据结构·c++·学习·算法
失落的香蕉5 小时前
C语言串讲-2之指针和结构体
java·c语言·开发语言
追梦少年时7 小时前
STM32-Flash闪存
stm32·单片机·嵌入式硬件·51单片机
ChoSeitaku7 小时前
链表循环及差集相关算法题|判断循环双链表是否对称|两循环单链表合并成循环链表|使双向循环链表有序|单循环链表改双向循环链表|两链表的差集(C)
c语言·算法·链表
DdddJMs__1357 小时前
C语言 | Leetcode C语言题解之第557题反转字符串中的单词III
c语言·leetcode·题解
weixin_452600698 小时前
《青牛科技 GC6125:驱动芯片中的璀璨之星,点亮 IPcamera 和云台控制(替代 BU24025/ROHM)》
人工智能·科技·单片机·嵌入式硬件·新能源充电桩·智能充电枪
娃娃丢没有坏心思8 小时前
C++20 概念与约束(2)—— 初识概念与约束
c语言·c++·现代c++
大熊程序猿8 小时前
ubuntu 安装kafka-eagle
linux·ubuntu·kafka
Uncertainty!!8 小时前
更改Ubuntu22.04锁屏壁纸
ubuntu·锁屏壁纸
ahadee9 小时前
蓝桥杯每日真题 - 第11天
c语言·vscode·算法·蓝桥杯