常见硬件通信协议总结

(正好手上的nodemcu支持UART、SPI、I2C协议,所以这篇文章干脆就用nodemcu来分析协议了~)

UART

这里写图片描述

用逻辑分析仪捕捉nodemcu init.lua给上位机发送 “A”:

-- init.lua
tmr.alarm(1, 1000, tmr.ALARM_AUTO, function()
    print('A')
end)

解码设置:
这里写图片描述

解码结果:
这里写图片描述

SPI

这里写图片描述

GitHub上的nodemcu项目编译的固件中的spi没法用,测了好久,时序都不对。所以用的Arduino for esp项目来测的SPI时序。

#include <SPI.h>
void setup()
{
  SPI.setDataMode(0);//SPI_MODE0  CPOL: 0  CPHA: 0
  SPI.begin();
  while (1)
  {
    SPI.transfer(0xAD);
  }
}

解码设置:
这里写图片描述

解码结果:
这里写图片描述

I2C

I2C协议只用到两根线。具体细节可以参考I2C总线协议

-- init.lua
id  = 0
sda = 1
scl = 2

i2c.setup(id, sda, scl, i2c.SLOW)

tmr.alarm(1, 10, tmr.ALARM_AUTO, function()
    i2c.start(id)
    i2c.write(0, 0xAD)
    i2c.stop(id)
end)

解码设置:
这里写图片描述

解码结果:
这里写图片描述

这里只是测试代码,所以没有从机对主机发出的信号做出应答,因而解码结果中有非应答信号。

(USB)

本来是想分析一下USB协议的,结果一看才发现,我的妈呀,太多了。。以上协议传输单位为字节,而USB传输单位为packet,因而可以灵活定义数据传送方式。所以以上协议相较于USB协议简直就是小打小闹啊=。=
USB硬件接口有vcc gnd d+ d-,数据传输由d+ d-配合完成。基本知识可参考USB协议基本知识USB通讯协议–深入理解 ,要想了解详细内容还得深入研究,这方面的书太多太厚。。我这里就不深究了,等以后要用到再说。


nodemcu的引脚细节可以看这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值