欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 請教一個WS2812ELD數據傳輸問題 [打印本頁]

作者: 芙蓉焊料    時間: 2024-11-17 13:32
標題: 請教一個WS2812ELD數據傳輸問題
很多控制ws2812的程序是spi+DMA實現的,請問不使用DMA功能實現ws2812的控制有什么區別呢?
謝謝!

作者: lkc8210    時間: 2024-11-17 22:08
DMA可以釋放芯片的算力
一顆WS2812 24位元的數據耗時1.3us X 24 = 31.2us
如果數量少不用DMA也可以
但如果數量一多起來
耗時很久,嚴重堵塞芯片運行
作者: zhuls    時間: 2024-11-18 21:53
DMA可是好東西!
DMA,是“直接內存訪問”的E文縮寫,即“Direct Memory Access”的首字連起來的。。
在大規模的數據搬運時,都會采用這種方式,除非你用的MCU沒有這個功能。
常見的有3種數據傳輸模式:外設到內存,內存到外設,內存到內存。
樓主控制WS2812,可選用“內存到外設”,即把數據準備好,就可以激發DMA,開始自動通過SPIx往外發送數據。
燈串有200個LED燈珠,每珠24bit,按2812的時序,每珠約耗時30us,200珠需約6ms...
因為2812的數據傳輸時不能被打斷,所以在這6ms的時間內什么事都做不了,只能等數據完全發完。。
用上DMA,你只要開一個600byte的緩存區,數據準備好后,激發DMA就OK了,DMA發完數據會給你一個中斷...
其間你還可以檢測按健、做ADC動作....

如樓上所說,DMA在傳輸數據時,數據量越大,效果越明顯,少量數據的話,用不用DMA沒啥區別。


https://m.bilibili.com/video/BV18CUxYJEnw?buvid=XU41BF74046114B601AC24A729FB5CAC6AF03(1.54和2.0的4線SPI屏)

前50次沒有用DMA,后50次用上了DMA,效果天差地別。。
這個示例與樓主這個沒多大關系,但DMA確實好用











作者: Y_G_G    時間: 2024-11-18 22:39
WS2812時序并不是特別的嚴格,但卻不能被中斷打斷,不然,燈的著色很容易是一個古怪的,并不是你想的著色
所以,在寫稿時,要先關閉中斷,中斷本身就是為"意外"準備的,如果你關閉了,就有可能會丟失某個意外
而且,寫入也是要時間的,如果你有幾百個燈的話,就能明顯的感覺到單片機卡了
但如果用了DMA就不同了,我就不百度DMA是什么了,反正沒有上面的缺點就是了
作者: 芙蓉焊料    時間: 2024-11-19 07:14
zhuls 發表于 2024-11-18 21:53
DMA可是好東西!
DMA,是“直接內存訪問”的E文縮寫,即“Direct Memory Access”的首字連起來的。。
在 ...

謝謝解答,是RGB-3字節X200==600byte吧?只是現在不知道怎樣準備數據!看了視頻效果不錯!!!
作者: coody_sz    時間: 2024-11-19 10:36
比如控制1000個燈,耗時30ms,如果不用DMA,則驅動時MCU全部或大部分時間都耗在輸出驅動上了,而DMA可以省去這個時間。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1