*我發覺不管是mavlink還是感測器驅動都是基於串列埠協定的一個更高層的協定!!!!!!!(沒有協定沒有規則是沒有辦法進行通訊的)

2020-10-05 12:00:33

 

驅動做的事情就是協定解析

 

ACfly的光流還有TFmini的驅動,他們都有感測器自己定義的協定。串列埠只是幫你保證傳送一個位元組的資料,感測器的協定它是定義多個位元組代表的含義!!!

可以去看我這篇博文寫的

https://blog.csdn.net/sinat_16643223/article/details/107680515

 

 

mavlink

你之前不怎麼理解為什麼有串列埠了為什麼還要mavlink,現在應該理解, 它是基於串列埠之上的一個更高層的協定(並不是它上面校驗位比串列埠更多不是的,而是必須要有這麼一個),你就算不用mavlink,也需要自己定義一個簡單的協定,這樣你才能分出你傳的哪個是x  哪個是y  哪個是z 。這也是你糾結的要寫驅動的那部分,不如就用現成的協定。叫你自己寫一個這種資料的傳輸,你自然就理解為什麼需要協定了。你單單串列埠資料傳送過來這邊分不清誰是x誰是y誰是z啊對不對。你自己得弄個規則區分。

那些感測器用串列埠,那是因為他們自己也有基於串列埠之上的協定,並不是單用串列埠就完了,只是你之前沒寫驅動不清楚這一點,昨天細看了ACfly的驅動明白了這一點。是要去看感測器的datesheet,要去看封包的格式。也就是協定。然後STM32這邊除了串列埠驅動你還需要對感測器的協定解析,這樣才能拿到自己想要的資料。

 

所以驅動很大程度上就是協定解析,串列埠驅動可能還包含一些感測器設定。所以串列埠也叫串列埠通訊協定嘛。

 

我想再多看幾個感測器驅動是不是都是這樣,我覺得必然是這樣的,不然感測器用串列埠發過來一堆資料你也分不清誰是誰。你用感測器必然涉及到協定,嵌入式開發如此重視協定是有道理的,那幾個串列埠協定你確實需要去背下來。我感覺你現在再去看TCPIP協定棧也會好理解得多,藍芽協定棧,我現在也清楚為什麼叫電子與通訊工程,這是密不可分的。你現在再去面嵌入式的崗位我覺得才比較有底氣,你現在才真正清楚理解一些東西,你要是能早點真正啃透一個STM32工程我覺得會好些,你覺得呢。很多底層的東西你之前都沒去弄。現在再叫你去看感測器的datesheet,你也會清晰得多。

而且我估計你傳送影象資料視訊資料也是需要協定的,不然也是分不清的,串流媒體傳輸協定,rtmp  H.264編碼。當然H.264不是協定,應該是先把視訊壓縮,再傳輸。是的,沒有協定沒有規則是沒有辦法進行通訊的,讓我想起了通訊原理。

ACfly的GPS也是這樣的嘛,你看看找包頭。

 

是的,協定是必不可少的。現在明白協定的重要性了。

 

 

 

mavlink協定關鍵也就是這部分嘛。

 

 

這也你也可以理解協定棧怎麼形成的。

 

協定就是一套規則,幫你分清資料的,你也可以自己定義自己的協定只要可以分清資料就好
 

確實需要深入學一些東西,同時做些底層開發,這些東西自然能夠理解,不然你之前都不知道或者沒理解。

 

但凡有通訊的地方就會有協定,可以想想他們重視協定不是沒有道理的。

 

可以看到協定就類似於演演算法,它是某種規則,它是不侷限於某種語言的

http://mavlink.io/zh/