
工作中会遇到TTL和RS-232电平的通信的状态,为了实现一种便捷的切换方式,提供一种电路方便大家使用:

SELECT接到3.3V时:TX_IN输入高电平,RX_OUT输出低电平;TX_IN输入低电平,RX_OUT输出高电平;RX_IN的信号同样原理,属于232的通信逻辑;
SELECT接到GND时:TX_IN输入高电平,RX_OUT输出高电平;TX_IN输入低电平,RX_OUT输出低电平;RX_IN的信号同样原理,属于TTL的通信逻辑。
3.信号线上,串一个100R或1K电阻进行限幅,因为外部的高电平范围是+3-+15V。
4.上述电平切换电路的优点是可以进行逻辑转换的电平选择,缺点是电平不标准,有时候会出现兼容性问题,长距离传输(超过1米)不太靠谱。
四、经常有人问:需要十六进制,怎么控制串口传输十六进制呢?需要十进制,怎么控制串口传输十进制呢?调试助手上显示的是十六进制数或ASCII字符,这些数据在传输的时候到底是几进制的?
1.计算机世界的“母语”是二进制,十六进制只是方便人理解的速记符号
无论是电脑还是单片机,它们的母语都是二进制。所有数据在硬件层面最终都会转换成0和1的电平信号。当你用串口发送数据时,不管发送的是数字、字母还是特殊符号,最终都会变成一连串的0和1。

2.我们用串口调试助手时,看到的是十六进制或ASCII码显示,这只是软件做的“实时翻译”:选择HEX模式:显示十六进制形式;选择文本模式:显示ASCII字符。不管传输什么数据,最终都是二进制的传输,至于显示屏显示出的是字母、符号、十进制、十六进制,那是串口收到数据后,显示屏进行了处理,不是串口直接传来的数据。
硬件传输的本质:永远是二进制位流,即0和1的排列组合。显示方式可选:调试工具可以显示为十六进制、十进制或ASCII码。编程时要注意:发送0x41和发送65(十进制)其实是同一个二进制数据。
3.调试时推荐使用十六进制模式,可以避免下面这些问题:ASCII模式会把0x00显示为空白;能直观看到每个字节的真实值;方便检查数据包头、校验位等关键信息。
串口调试助手HEX显示时,记住这三点:每个十六进制数代表4位二进制;数据传输速率(波特率)决定每秒发送多少二进制位;数据位长度(如8位)决定每个数据包包含多少二进制位。