Android 串口通信异常调试详解

前言

Android板外接的硬件,也是Android板需要控制的硬件以下我称为负载;

需要准备的:

Android板;负载;Android板和负载的连接线(根据实际物理窜口情况,有很多种);如果有根据负载指令或者协议写的Demo更好;PC端串口调试助手;

一,串口类型

1.1,这里说的串口类型是指硬件(物理接口形式)端口的类型,如下图白色的:

Android板子的串口的硬件接口有:九针串口(分公头和母头),还有2.54端子等等,感觉每个厂家的都不一样,没有统一标准;

负载串口类型有:九针串口(分公头和母头),还有2.54端子等等,这个也是没有统一的标准;

1.2,这里说的类型是指电平标准

Android主板上的串口类型有:TTL,RS232,RS485 常用的目前是这些;

负载串口类型有:TTL, RS232,RS485 

二,连线

2.1,要知道Android版上的串口有哪些,每个串口是什么类型(TTL,RS232,RS485);

2.2,确定外接硬件的串口类型(TTL,RS232,RS485)

2.3,确定连接线中的每根线两端是否一一对应;例如:Android板子串口中的TX,RX,GND和外接硬件的串口中的TX,RX,GND要一一对应:TX对TX,RX对RX等

2.4,有的时候需要PC端通过USB转串口来连接到外接硬件;这个时候连线就比较麻烦点,方式多样;以下列举我使用过的吧;

2.4.1,通过USB转RS232的线(一头是USB一头是九针串口:分公头和母头)此条线称为A和九针串口转外接硬件上的串口接口(物理接口)此线称为B,这样就有两种组合就是公投和母头互相组合而成(1,A是九针公头B是九针母头组合;2,A是九针母头B是九针公头组合);

2.4.2,通过USB转RS485的线(一头是USB一头是九针串口:分公头和母头)此条线称为A和九针串口转外接硬件上的串口接口(物理接口)此线称为B,这样就有两种组合就是公投和母头互相组合而成(1,A是九针公头B是九针母头组合;2,A是九针母头B是九针公头组合);

2.4.3,就是USB转TTL,TTL端直接和负载的硬件的TTL串口相连;

2.5,不管是TTL,RS232,RS485只要电源线(Vcc)和地线(GND)相连造成短路,就会烧芯片;这里造成短路包括两个方面一是Android版串口中的Vcc和外接驱动板串口中的GND相连;二是Android版或者外接的驱动板上的串口中Vcc和GND直接相连;

三,调试

3.1,通过Android自己写的Demo直接通过串口发指令,看负载是否收到信号;注意Demo中的串口号不要写错,这个是根据连线来的,连接不同的串口对应的Android应用中的串口号也不同;

3.2,通过PC来调试,这种方式一般都需要找一些工具来调试了,有的负载厂家会给PC端的调试工具,如果厂家没给,那就自己百度找了比如串口助手啥的;

四,问题

4.1,如果负载接受不到信号一般有以下原因:

1,接线不正确,例如android板上接的是TTL负载接的却是RS232后者RS485;

2,Android板子RX是否和负载的RX一一对应,也包括TX和GND;

3,有的板子厂家抽风把TX和RX搞反了,这个时候需要自己调一下线,这样Android板的TX就需要和负载的RX相连,这种情况不常见;实在没办法了可以试一下;

4,Android Demo中的指令知否正确,这个就不好验证,所以就需要先验证接线是否有问题,就需要PC通过串口调试助手去测试接线连接是否有问题;

5,可能没有读写串口的权限,可以修改权限:adb shell 进入Android系统命令行,cd /dev 进入dev后,ls -l查看设备有的ttyS*串口号,输入:setenforce 0 关闭防火墙(之前就是不知道这个一直不成功,注意:setenforce命令需要root权限,获取root权限;再输入:chmod 777 /dev/ttyS0 修改串口读写权限(ttyS*是需要修改的端口要,如果不知道的话,每个都试一下)

4.2,串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)。

发布了93 篇原创文章 · 获赞 50 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/ezconn/article/details/100069543