一、在B站板道题看到一个比较好完视频(爱上半导体)
我觉得将232和485之前先将串口通信,因为它们都是串口通讯的变种。
串口通讯:
串口通讯我们约定好帧格式和波特率,通讯正常起始位为低开始,8位数据位,一位停止位。
当然还有其他的帧格式,波特率既一秒传输几个位。
串口通讯是TTL逻辑电平,高电平范围2.4~5V,低电平为<0.4V。所以我常认为高电平是5V,低电平是0V,假设在通讯中濡染赖一个干扰,那么此时地电平可能倍拉高,多以自责很久造成它的抗干扰能力很弱。所以它的通讯距离很短,一般在一个电路板间两个芯片相互通讯,或者芯片和电脑通讯,距离一般在1米之内。
为了提高串口通讯的距离和稳定,美国电子工业联盟制定了一个RS232,比如单片机发送逻辑1 5V的TTL电平,则232会发送-3V~-15V,反之发送0,则232发送3V~15V,呈现负逻辑特性。
232只是改变电平大小,使其电平幅值范围相比TTL范围更广,所以它的抗干扰能力增强了。
- 接口使用一根信号线和一根信号返回线而构成共地的传输形式,容易产生共模干扰,所以抗噪声干扰性弱。
- 传输距为15米左右,波特率为20Kbps。(既19200左右)传输速率较低。
但是为连队更严苛的环境和更远的距离要求,232就力不从心。 所以485就产生。半双工串行通信方式。
485通讯是在串口通讯上加了电平转换芯片,把串口信号转换成差分信号,逻辑“1”以两线间的电压差为+(2-6) V表示(A-B);逻辑“0”以两线间的电压差为-(2-6)V表示(A-B)
因为485使用差分信号,同时使用双绞线通讯,如果此时收到干扰,两个线上都会出现电平变化,差值则不变,抗干扰能力强。
485通讯可到1200米,传输波特率更高。
以上这就是我认为串口和232和485最本质的区别。
CAN通讲解:
CAN总线:英文名,CONTROLLER AREA NETWORK意思是控制器局域网,应用最多的是汽车领域。
显性电平:3.5-1.5 = 2V,呈显性电平,代表逻辑0,隐形电平则代表逻辑1。
差分好处跟485一样是双绞线。
下面来看下CAN通讯到底在传递什么?
根据这11位识别码,就可以在回知道要传输给那个从机。
接下来这一位是用来区分是数据帧还是远程请求帧。
接下来的6位是控制码,它是控制数据长度,他的第一位 IDE位,用来区分标准格式和拓展格式
IDE未下来是预留位,是逻辑0
接下来的4位是DLC位,既数据长度码,
如果是1,则后面只有一个字节的数据
如果它的值是8,则后面数据就是8个字节,654位
接下来是15位CRC校验码
下面一位是CRC界定符,是逻辑1,它的目的是为把后面的信息隔开
然后是两位ACK码,
第一位是ACK确认槽,发送端发送逻辑1,而接收端则回复逻辑0,来表示应答。
第二位是ACK界定位,它一定是逻辑1,作用是把后面数据隔开
最后是7位结束位,为逻辑1,表示数据帧传输结束
当总线是同时出现,两个从机以上发送数据,以那个为准呢?
当兴县同时出现逻辑1和逻辑0时候,以那个为准?
总线会被置为逻辑0,既识别码越低,优先级越高
我认为,CAN通信最精彩最精妙的部分在仲裁,视频只用了很短的篇幅。如果大家有兴趣可以查查,我第一次看到的时候眼前一亮。
CAN与485区别:
CAN通信最精彩最精妙的部分在仲裁