(正好手上的nodemcu支持UART、SPI、I2C協議,所以這篇文章乾脆就用nodemcu來分析協議了~)
UART
用邏輯分析儀捕捉nodemcu init.lua給上位機發送 “A”:
-- init.lua
tmr.alarm(1, 1000, tmr.ALARM_AUTO, function()
print('A')
end)
1
2
3
4
解碼設置:
解碼結果:
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);
}
}
1
2
3
4
5
6
7
8
9
10
解碼設置:
解碼結果:
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)
1
2
3
4
5
6
7
8
9
10
11
12
解碼設置:
解碼結果:
這裏只是測試代碼,所以沒有從機對主機發出的信號做出應答,因而解碼結果中有非應答信號。
(USB)
本來是想分析一下USB協議的,結果一看才發現,我的媽呀,太多了。。以上協議傳輸單位爲字節,而USB傳輸單位爲packet,因而可以靈活定義數據傳送方式。所以以上協議相較於USB協議簡直就是小打小鬧啊=。=
USB硬件接口有vcc gnd d+ d-,數據傳輸由d+ d-配合完成。基本知識可參考USB協議基本知識和USB通訊協議–深入理解 ,要想了解詳細內容還得深入研究,這方面的書太多太厚。。我這裏就不深究了,等以後要用到再說。
nodemcu的引腳細節可以看這裏
————————————————
版權聲明:本文爲CSDN博主「T_1」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/spenghui/article/details/72878968