關(guān)于Dshot源代碼分享
前段時(shí)間發(fā)了個(gè)小實(shí)驗(yàn)的視頻,是照著網(wǎng)上大神分享的代碼寫(xiě)了個(gè)用Dshot協(xié)議驅(qū)動(dòng)電調(diào)的小玩意兒,可能有人會(huì)需要這段代碼,先分享出來(lái),要有錯(cuò)誤的地方大佬們多多指正,我是一個(gè)小菜雞。
第一部分,包含一些頭文件,其中debug.h頭文件里面包含有延時(shí)函數(shù),如果你們沒(méi)有延時(shí)函數(shù),需要自己加上其他頭文件。

第二部分,Dshot初始化函數(shù),具體步驟和目的在圖中都有標(biāo)注,使用TIM2產(chǎn)生PWM信號(hào),加上DMA控制PWM的占空比,從而達(dá)到發(fā)送數(shù)據(jù)的目的。

第三部分,Dshot復(fù)位函數(shù),這個(gè)沒(méi)啥好說(shuō)的,清空數(shù)組,關(guān)掉計(jì)時(shí)器,把IO口拉低。

第四部分,Dshot數(shù)組生成函數(shù),首先對(duì)輸入函數(shù)的速度數(shù)據(jù)添加回傳位組成12位數(shù)據(jù),將數(shù)據(jù)拆分成3組進(jìn)行異或得到CRC校驗(yàn)位,最后共同組成16位信號(hào)數(shù)據(jù),隨后對(duì)每一位進(jìn)行判斷,生成對(duì)應(yīng)占空比,儲(chǔ)存到數(shù)組中,這里圖省事直接給回傳位置0。

第五部分,Dshot開(kāi)啟函數(shù),具體步驟見(jiàn)注釋,在此函數(shù)調(diào)用時(shí),DMA會(huì)將占空比數(shù)組中的每一位一次一次的轉(zhuǎn)運(yùn)到計(jì)時(shí)器的CCR寄存器中,從而實(shí)現(xiàn)使用pwm傳輸Dshot信號(hào)的功能。

以上就是Dshot.c的全部代碼,使用前在Dshot.h中聲明一下,主函數(shù)首先調(diào)用初始化函數(shù)Dshot_Init以及Dshot_OFF,在循環(huán)中重復(fù)調(diào)用Dshot_ESCData以及Dshot_On,設(shè)置速度即可控制電機(jī)旋轉(zhuǎn)。
第一次分享代碼,有不對(duì)的地方希望大佬指點(diǎn)指點(diǎn)。
參考文章
https://blog.csdn.net/outbreakrmb/article/details/126218010
https://www.cnblogs.com/Sky-seeker/p/14358676.html
https://blog.csdn.net/qq_35081072/article/details/107747996
https://blog.csdn.net/qq_44810226/article/details/119150963