久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1541|回復: 8
收起左側

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

[復制鏈接]
回帖獎勵 1 黑幣 回復本帖可獲得 1 黑幣獎勵! 每人限 3 次
ID:977079 發表于 2024-5-6 15:55 | 顯示全部樓層 |閱讀模式
懂WS2812的師傅們,請教個問題如圖,我示波器的圖跟規格書的圖,如何去看波形對不對?要看哪些參數?如何去看波形和規格書?請教各位師傅們了

ws2812

ws2812

規格書1

規格書1

規格書2

規格書2
回復

使用道具 舉報

ID:161164 發表于 2024-5-6 17:11 | 顯示全部樓層
2024-05-06_170952.png

評分

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

查看全部評分

回復

使用道具 舉報

ID:977079 發表于 2024-5-6 18:09 | 顯示全部樓層
回復

使用道具 舉報

ID:401564 發表于 2024-5-7 12:50 | 顯示全部樓層

示波器有一個可以測量時間長度的功能,你測量一下就可以了
在這方面30塊邏輯分析儀比示波器好用
這是一個已經驗證的WS2812寫入函數,你參考一下
/*—————————————————————————————————————————————————————————————————
*函數名                :write_ws2812
*函數功能        :寫入數據
*輸入                :rgb_data
*輸出                :無
備注: 使用16MHZ的內部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延時,你要根據你用的單片機來自己寫一個,51單片機可以用幾個空指令來完成
      DO = LOW;
    }
    else //寫"0"
    {
      DO = HI;//如果你用的單片機指令快于250nS,可以加一個或者幾個空指令,來達到延時的目的
      DO = LOW;
    }
    rgb_data <<= 1;
  }
}

評分

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

查看全部評分

回復

使用道具 舉報

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

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

因此只要控制高電平持續時間的長短,就是控制了發的到底是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. }
復制代碼

評分

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

查看全部評分

回復

使用道具 舉報

ID:977079 發表于 2024-5-8 09:25 | 顯示全部樓層
cnos 發表于 2024-5-7 16:03
論壇里面已經有帖子把2812的時序用通俗語言解釋得較為清楚了,我也簡單在他們的基礎上進一步總結一下
要從 ...

感謝師傅,學習了!
回復

使用道具 舉報

ID:977079 發表于 2024-5-8 09:26 | 顯示全部樓層
Y_G_G 發表于 2024-5-7 12:50
示波器有一個可以測量時間長度的功能,你測量一下就可以了
在這方面30塊邏輯分析儀比示波器好用
這是一 ...

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

使用道具 舉報

ID:401564 發表于 2024-5-8 17:40 | 顯示全部樓層
hai2369513 發表于 2024-5-8 09:26
師傅,您說的那個測時間長度的功能叫什么?比如??

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

使用道具 舉報

ID:977079 發表于 2024-5-8 20:24 | 顯示全部樓層
Y_G_G 發表于 2024-5-8 17:40
示波器如果是英文的,它會有一個cursor的按鍵,使用方法大多是一樣的,或者是相似的
你先在一個測量波形的 ...

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线免费观看欧美 | 欧美亚洲视频 | 97久久精品午夜一区二区 | 99亚洲精品 | 亚洲国产福利视频 | 日韩精品在线视频 | 国产黄色在线观看 | www久久99| 国产精品1| 午夜久久久 | 天天久久| 国产精品成人在线 | 亚洲精品欧美 | 亚洲国产精品久久久久秋霞不卡 | 国产精品久久久久久久久久不蜜臀 | 在线观看中文视频 | 请别相信他免费喜剧电影在线观看 | 久久免费高清视频 | 天天躁人人躁人人躁狂躁 | 亚洲一区免费 | 91精品国产综合久久久亚洲 | 婷婷丁香在线视频 | 日日天天| 久久美国 | 国产精品久久 | 五月天婷婷综合 | 91夜色在线观看 | 爱草在线 | 久久久久综合 | 中文字幕一区二区三区在线观看 | 国产精品久久二区 | 午夜精品久久久久99蜜 | 色吧综合| 免费播放一级片 | 玖玖视频网 | 国产黄色在线观看 | 美日韩一区二区 | 欧美一级黑人aaaaaaa做受 | 一区二区影视 | 亚洲一区在线观看视频 | 日韩精品一区二区三区中文字幕 |