1 串口引脚定义
引脚 | 定义 | 符号 |
---|---|---|
1 | 载波检测 | DCD(Data Carrier Detect) |
2 | 接收数据 | RXD(Received Data) |
3 | 发送数据 | TXD(Transmit Data) |
4 | 数据终端准备好 | DTR(Data Terminal Ready) |
5 | 信号地 | SG(Signal Ground) |
6 | 数据准备好 | DSR(Data Set Ready) |
7 | 请求发送 | RTS(Request To Send) |
8 | 清除发送 | CTS(Clear To Send) |
9 | 振铃提示 | RI(Ring Indicator) |
很多嵌入式设备串口仅有四个引脚,分别是RX、TX、GND、5V,在实际使用时,一般接RX、TX、GND三个引脚就可以完成数据收发。
RTS、CTS用于流控,物理连接(主从机交叉连接):主机的RTS(输出)信号,连接到从机的CTS(输入)信号;主机的CTS(输入)信号,连接到从机的RTS(输出)信号。
2 设置、查看串口属性
stty //设置、查看串口属性
stty -F /dev/ttymxc3 -a //查看属性
stty -F /dev/ttymxc3 ispeed 115200 ospeed 115200 cs8 //设置成115200波特率,8位数据模式
查看系统串口属性
cat /proc/tty/driver/IMX-uart //不同平台IMX-uart名字不一样
serinfo:1.0 driver revision: //系统共注册个四个口中
0: uart:IMX mmio:0x02020000 irq:58 tx:4801 rx:269 RTS|DTR|DSR|CD
1: uart:IMX mmio:0x021E8000 irq:59 tx:0 rx:0 DSR|CD
2: uart:IMX mmio:0x021EC000 irq:60 tx:0 rx:0 DSR|CD
3: uart:IMX mmio:0x021F0000 irq:61 tx:0 rx:0 DSR|CD
3 串口测试
断开串口与外设连接,确保串口没有被外设的软件占用;短接rx、tx引脚。执行下面命令:
cat /dev/ttymxc3 &
echo abc > /dev/ttymxc3 //正常情况下会打印abc,此时可以确认kernel串口驱动、硬件是正常的,可以
echo -e "at \r" >/dev/ttyUSB2 //-e可以发送特殊字符
busybox microcom
Usage: microcom [-d DELAY] [-t TIMEOUT] [-s SPEED] [-X] TTY //Copy bytes for stdin to TTY and from TTY to stdout
-d Wait up to DELAY ms for TTY output before sending every next byte to it
-t Exit if both stdin and TTY are silent for TIMEOUT ms
-s Set serial line to SPEED
-X Disable special meaning of NUL and Ctrl-X from stdin
使用
busybox microcom -t 5000 -s 115200 /dev/ttySAC1 // -t 5000:5000ms后没有操作,自动退出 -s 115200:波特率设置为115200,打开ttySAC1串口,进入交互环境,可以输入命令,打印信息
ctrl+x可以退出
4 串口乱码
下面是几种可能导致串口乱码的原因:
- 波特率不匹配,大部分情况是波特率不匹配导致
- 波特率匹配仍然乱码,晶振的不匹配,Fpclk设置的不合理行,电源的不稳定姓,或者电源的电压达不到预定的要求
- 波特率过大造成乱码,般这种情况跟线路的干扰有关系,比如说磁场干扰,线路内部有干扰
- 没有共地,tx/rx接错
5 ttl 232 485区别
常说的串口、com口都是硬件端口,而ttl、232、485是电平标准,也就是对串口通信信号的不同定义,参考下表
电平 | ttl | 232 | 485 |
---|---|---|---|
逻辑电平 0 | 0V | 0 (正电平) | 两线间的电压差为-(2~6)V |
逻辑电平 1 | +5V | ±15V (负电平) | 两线间的电压差为+(2~6)V |
485接口电平信号比232低,相对来说比较安装,不容易损坏芯片;且电平与ttl电平兼容,所以经常可以看到485接口的cpu方向都是接ttl电平接口,然后再加一个读写控制IO。
嵌入式设备调试时经常需要用到串口,除了电脑主机上的通用9pin串口,最常用的就是usb转串口,常用的转换芯片有PL2303、CP2102,这种芯片是用usb来扩展ttl电平的串口。
TTL电平与RS232电平的专用双向转换芯片可以用MAX23芯片。