Liunx树莓派(ARM)开发篇—1、全双工与半双工、串口、COM口、TTL、RS-232、RS-485区别;2、全双工、半双工的区别3、树莓派和电脑之间串口通信编程实例(附代码)

一、串口简述

串口,也称串行通信接口(通常指COM接口),通常用于多机通信通常使用的是全双工。是采用串行通信方式的扩展接口。

数据传送

串行接口 (Serial Interface)是指数据一位一位地顺序传送。

特点

是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。

二、串口、COM口、TTL、RS-232、RS-485区别

1、串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)。TTL标准是低电平为0,高电平为1(+5V电平)。RS-232标准是正电平为0,负电平为1(±15V电平)。
2、接设备的时候,一般只接GND RX TX。不会接Vcc或者+3.3v的电源线,避免与目标设备上的供电冲突
3、PL2303、CP2102、CH340芯片是 USB 转 TTL串口 的芯片,用USB来扩展串口(TTL电平)。
4、MAX232芯片是TTL电平与RS232电平的专用双向转换芯片,可以TTL转RS-232,也可以RS-232转TTL。
5、RS-485与RS-232类似,但是采用差分信号负逻辑。这里略过不讲。

三、全双工、半双工的区别

1、全双工传输(英文Full - Duplex )

是指交换机在发送数据的同时也能够接收数据,两者同步进行,这好像我们平时打电话一样,说话的同时也能够听到对方的声音。全双工的好处在于迟延小,速度快。

2、半双工(英文Half Duplex)

与全双工对应的是这个概念,就是指一个时间段内只有一个动作发生。类似对讲机,同一时间只能一个人说话。

四、树莓派与PC串口通信编程(全双工)

树莓派串口通信API,可参考树莓派wiringPi库详解
实物连接(RXD、TXD要相互反接)

在这里插入图片描述

使用时需要包含头文件:
#include <wiringSerial.h>
初次使用树莓派串口编程,需要配置。
第一步:修改 cmdline.txt文件
/* 修改 cmdline.txt文件 */
>cd /boot/
>sudo vim cmdline.txt

删除【】之间的部分
dwc_otg.lpm_enable=0 【console=ttyAMA0,115200】 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
第二步:修改 inittab文件(若没有inittab文件,则第二步可以跳过):
/*修改 inittab文件 */
>cd /etc/
>sudo vim inittab

注释掉最后一行内容:,在前面加上 # 号
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
第三步:
sudo reboot 重启

实验程序

#include<wiringSerial.h>
#include<wiringPi.h>
#include<stdio.h>
#include<string.h>
int main(){
        int fd;
        int data;
        wiringPiSetup();
        fd=serialOpen("/dev/ttyAMA0",9600);
        while(serialDataAvail(fd) != -1){
                data=serialGetchar(fd);
                if(data!=-1){
                        printf("get data=%c\n",data);
                        if(data == '1'){
                                printf("aipolo\n");
                                serialPuts(fd,"rec aipolo\r\n");
                        }
                        else if(data == '2'){
                                printf("abllll\n");
                                serialPuts(fd,"rec abllll\r\n");
                        }
                }else{
                        serialPuts(fd,"please input:\r\n");
                        printf("no find input\n");
                }
        }
        return 0;
}

实验结果

在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值