找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1583|回復: 8
打印 上一主題 下一主題
收起左側(cè)

懂WS2812時序的師傅們,請教個問題

[復制鏈接]
回帖獎勵 1 黑幣 回復本帖可獲得 1 黑幣獎勵! 每人限 3 次
跳轉(zhuǎn)到指定樓層
樓主
ID:977079 發(fā)表于 2024-5-6 15:55 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
懂WS2812的師傅們,請教個問題如圖,我示波器的圖跟規(guī)格書的圖,如何去看波形對不對?要看哪些參數(shù)?如何去看波形和規(guī)格書?請教各位師傅們了

ws2812.jpg (4.23 MB, 下載次數(shù): 39)

ws2812

ws2812

51hei截圖_20240506155123.png (83.32 KB, 下載次數(shù): 52)

規(guī)格書1

規(guī)格書1

51hei截圖_20240506155109.png (62.93 KB, 下載次數(shù): 42)

規(guī)格書2

規(guī)格書2
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:161164 發(fā)表于 2024-5-6 17:11 | 只看該作者

評分

參與人數(shù) 1黑幣 +5 收起 理由
hai2369513 + 5 很給力!

查看全部評分

回復

使用道具 舉報

板凳
ID:977079 發(fā)表于 2024-5-6 18:09 | 只看該作者
回復

使用道具 舉報

地板
ID:401564 發(fā)表于 2024-5-7 12:50 | 只看該作者

示波器有一個可以測量時間長度的功能,你測量一下就可以了
在這方面30塊邏輯分析儀比示波器好用
這是一個已經(jīng)驗證的WS2812寫入函數(shù),你參考一下
/*—————————————————————————————————————————————————————————————————
*函數(shù)名                :write_ws2812
*函數(shù)功能        :寫入數(shù)據(jù)
*輸入                :rgb_data
*輸出                :無
備注: 使用16MHZ的內(nèi)部RC時鐘,一個指令周期為: 250uS,不需要增加延時
—————————————————————————————————————————————————————————————————*/
void write_ws2812(u8 rgb_data)
{
  u8 i;
  for(i = 0; i < 8; i++)
  {
    if(rgb_data & 0x80)//寫"1"
    {
      DO = HI;
          delay_750ns//這個是宏定義750nS延時,你要根據(jù)你用的單片機來自己寫一個,51單片機可以用幾個空指令來完成
      DO = LOW;
    }
    else //寫"0"
    {
      DO = HI;//如果你用的單片機指令快于250nS,可以加一個或者幾個空指令,來達到延時的目的
      DO = LOW;
    }
    rgb_data <<= 1;
  }
}

評分

參與人數(shù) 1黑幣 +90 收起 理由
admin + 90 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:688692 發(fā)表于 2024-5-7 16:03 | 只看該作者
論壇里面已經(jīng)有帖子把2812的時序用通俗語言解釋得較為清楚了,我也簡單在他們的基礎上進一步總結(jié)一下
要從芯片設計制造的角度去思考時序問題。比如為什么DS18B20和WS2812這種芯片的時序時間都有一個范圍,其實是因為這些芯片內(nèi)部用的是RC振蕩器,所以不會太精準,因此要求外部時序無論在高溫低溫還是電壓偏高偏低的情況下都落入一個特定的范圍。

對于ws2812來說,只要來個高電平,那么就會觀察這個高電平的持續(xù)時間,如果持續(xù)時間小于某個值,判為0,如果大于某個值,判為1.
如果信號變成了低電平,那么就等待下一個信號的到來,如果等了半天80us,沒有下一個信號,就判定為復位信號,本次傳輸結(jié)束。

因此只要控制高電平持續(xù)時間的長短,就是控制了發(fā)的到底是1還是0了。以下是我用的代碼,自認為沒有更簡潔的辦法了。

//STC8G1K08A 22.1184MHz
  1. //STC8G1K08A 22.1184MHz

  2. void nop(void)
  3. {
  4. }
  5. void sendbyte(unsigned char byte)
  6. {
  7.         unsigned char i;
  8.         i=8;
  9.         EA=0;
  10.                 do
  11.                 {
  12.                         ws2812pin=1;nop();
  13.                         ws2812pin=byte&0x80;nop();
  14.                         ws2812pin=0;nop();
  15.                         byte=(byte<<1);                 //左移位
  16.                 }while(--i);
  17.         EA=1;
  18. }
  19. void SetLed(unsigned char R_,G_,B_)
  20. {
  21.         sendbyte(G_);
  22.         sendbyte(R_);
  23.         sendbyte(B_);
  24. }
復制代碼

評分

參與人數(shù) 2黑幣 +105 收起 理由
lkc8210 + 15 共享資料的黑幣獎勵!
admin + 90 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:977079 發(fā)表于 2024-5-8 09:25 | 只看該作者
cnos 發(fā)表于 2024-5-7 16:03
論壇里面已經(jīng)有帖子把2812的時序用通俗語言解釋得較為清楚了,我也簡單在他們的基礎上進一步總結(jié)一下
要從 ...

感謝師傅,學習了!
回復

使用道具 舉報

7#
ID:977079 發(fā)表于 2024-5-8 09:26 | 只看該作者
Y_G_G 發(fā)表于 2024-5-7 12:50
示波器有一個可以測量時間長度的功能,你測量一下就可以了
在這方面30塊邏輯分析儀比示波器好用
這是一 ...

師傅,您說的那個測時間長度的功能叫什么?比如??
回復

使用道具 舉報

8#
ID:401564 發(fā)表于 2024-5-8 17:40 | 只看該作者
hai2369513 發(fā)表于 2024-5-8 09:26
師傅,您說的那個測時間長度的功能叫什么?比如??

示波器如果是英文的,它會有一個cursor的按鍵,使用方法大多是一樣的,或者是相似的
你先在一個測量波形的界面,按下停止按鍵,就像你現(xiàn)在上傳的這個波形一個
然后按一下cursor按鍵,左右旋轉(zhuǎn)一下旋鈕,大概操作就是這樣子的,一時半會兒說不明白,你可能百度一下
然后,你再去測量一下示波器上的的1KHZ時鐘,用來驗證一下
如果你的示波器沒有這個cursor按鍵,那它可能是叫"光標"
回復

使用道具 舉報

9#
ID:977079 發(fā)表于 2024-5-8 20:24 | 只看該作者
Y_G_G 發(fā)表于 2024-5-8 17:40
示波器如果是英文的,它會有一個cursor的按鍵,使用方法大多是一樣的,或者是相似的
你先在一個測量波形的 ...

萬分感謝師傅百忙抽時間回復我,謝謝!剩下的交給徒弟我了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表