硬件
- 为什么I2C需要接上拉电阻,而USB不需要?
I2C是开漏输出,只能输出低电平或不输出,如果不接上拉电阻,而电路因为外部干扰而变成低电平,则主设备无法触发传输。 - 差分线为什么能抗干扰?
差分信号又称差模信号,与传统使用单根信号线电压表示逻辑的方式有区别,使用差分信号传输时,需要两根信号线,这两个信号线的振幅相等,相位相反,通过两根信号线的电压差值来表示逻辑0和逻辑1。
抗干扰能力强,当外界存在噪声干扰时,几乎会同时耦合到两条信号线上,而接收端只关心两个信号的差值,所以外界的共模噪声可以被完全抵消。 - 你之前做过CAN,还记得CAN怎么避免冲突吗?
报文的优先级,是通过对 ID 的仲裁来确定的。CAN总线上有两种电平状态,如果总线上同时出现显性电平和隐性电平,总线的状态会被置为显性电平,CAN正是利用这个特性进行仲裁。
当总线空闲时,有多个节点同时需要发送报文,那么每个节点的发送器将会对发送位的电平和被监控的总线电平做比较。如果电平相同,那么该节点可以继续发送;如果发送的为一“隐性”电平(1),但是监控到一“显性”电平(0),那么该节点失去仲裁,必须退出发送状态,只到下一次总线空闲的时候在参与总线的仲裁竞争。
需要注意的是在整个过程中两个节点都在监听总线,也就是说接收是不受发送状态限制的,也就没有转为接收这一说,所以也就不会出现数据不完整的帧,所以仲裁期间发送的位也是可以接收的