低速接口整理(IIC/UART/SPI/CAN)

1、半双工、全双工

        同步半双工:共用一根数据线。设备从主设备发给从设备,这时从设备不能发给主设备。比如IIC。当SCL传输SDA时,SDA只能传输单端数据。点对点传输,但是,IIC挂载在相同的线上,可根据主地址选择发送设备节点。

       同步全双工:公用时钟线,但是数据线分开。可以同时接收和发送。比如四线SPI,点对多传输,可挂载多个从设备,但是只能由主设备产生时钟信号,即只能主设备往从设备发送数据。

       异步半双工:只有TX和RX,时钟不同步。两端设备可以不做同步即接收数据。UART。点对点传输,不支持复用。

      CAN总线:采用公路模式,通过优先级或者节点信息。每个节点都可以往总线发数据,然后各节点通过帧格式判断数据是否是发给自己。如果有多个从设备发给自己,设备根据优先级决定先接收哪个节点,此时第二优先级如果判定设备未接收数据,第二优先级节点就重复发送相同数据,最大发送量为1000次,如果1000次为接收,即报告接收失败。CAN总线类似与IIC,但支持各节点同时上传数据。但是加入了协议包等内容,采用差分传输的机制。

2、传输原理

      IIC:点对点操作,公用两根线双向线,SCL和SDA。SCL代替时钟线。SDA拉低先,SCL再拉低,即传输开始。相反SDA拉高后SCL拉高,即传输结束。中间每次SCL拉高即传输一次SDA。标准100K传输,快速就是400K传输,高速3.4M。

     SPI:点对多操作,有四种模式,这里指0模式。两根双向线,CE和SCK,两根单向线,MOSI和MOSO。·当CE拉低时,由主设备产生时钟,并根据设备地址选择从设备。数据速率和设备相应和接口特性有关。

     UART:点对点操作,试过2.56M传输。没有地址位,只有数据位。数据线拉低几位数据传输开始。

    CAN:多对多操作,公用两根差分线。CANH和CANL。只需要最远设备需要加匹配电阻,各节点都可以同时往总线传输数据,根据节点和优先级判断接收数据。

3、verilog关键点实现 

IIC  实现

低速接口整理(IIC/UART/SPI/CAN)

UART:实现。同上。时钟到上升沿,拉高TX,到下降沿拉低TX;按照是否需要加校验位,发送数据。

其中分频为:clk_50M/115200;(1秒,50M。1秒发送115200个bit)

SPI,同理。需要加个SPI使能,选择是否发送数据。