3è²ã®ãSPI LEDãWS2812bïŒå³1ïŒãšãã®å身ã§ããWS2811 / WS2812ã¯çŽåã«æ¥ç¶ãããåç·ïŒã·ãªã¢ã«ïŒãã¹ãä»ããŠå¶åŸ¡ãããŸãïŒãããã£ãŠããã®å Žåãç¹ã«ãããŒãã¹ïŒ1ã ããSPIã€ã³ã¿ãŒãã§ãŒã¹ãéèŠãªåœ¹å²ãæãããŸãïŒã åRGBã«ã©ãŒãããïŒ24ãããããã£ãã«ããã8ãããïŒã¯ãçŽ1.25ÎŒsã®åšæã§PWMä¿¡å·ïŒå³2ãåç §ïŒã«ãã£ãŠãšã³ã³ãŒããããŸãã WS2812 LEDã¯ãã€ã³ã¿ãŒãã§ã€ã¹ããã°ããç°¡åã«ã§ããLEDã®æ°ãç°¡åã«å¢ããããšãã§ãããããå¶åŸ¡ãããLEDã¹ããªãããšã¹ã¯ãªãŒã³ã§ãã䜿çšãããŸãã ãããã£ãŠãããšãã°ãæ¯ç§25ãã¬ãŒã ã®åšæ³¢æ°ã§ã¯ããããªç»é¢ã«ïŒ40ms-50µsïŒ/ïŒ0.125µs x 24ïŒã= 1300 RGB LEDã®1è¡ãå«ããããšãã§ããŸãã ããã¯ããã»ã©ã§ã¯ãããŸããããåºåçæ¿ã®å Žåããã©ã«ãŒããŸãã¯ã©ã³ãã³ã°ã©ã€ã³ã§ååã§ãã

å³ 1.ããžã¿ã«ã·ãªã¢ã«ã€ã³ã¿ãŒãã§ã€ã¹ãåããLEDã¹ããªãã

å³ 2.ãããã³ãŒãã£ã³ã°ãã©ã¡ãŒã¿
ãã®ãããªçãä¿¡å·ã圢æããããã«å®äŸ¡ãªãã€ã¯ãã³ã³ãããŒã©ãŒã䜿çšããããšïŒå³2ãåç §ïŒã¯ãç¹å®ã®å°é£ããããããŸãã ãã®ãããããšãã°ãã¯ããã¯åšæ³¢æ°ã16 MHzã®PIC16ã³ã³ãããŒã©ãŒã®å Žåã250 nsã§1ã€ã®ã³ãã³ããå®è¡ãããŸãã ãããã£ãŠãWS2812ãã©ã€ããŒãããã°ã©ã ã§å¶åŸ¡ããã«ã¯ãã«ãŒãã«é床ã®ã»ãŒ100ïŒ ãè²»ããå¿ èŠããããŸãã
ã€ã³ã¿ãŒãã§ã€ã¹åæ
ãã®åé¡ã解決ããããã«ãããšãã°SPIã€ã³ã¿ãŒãã§ãŒã¹ãªã©ããã€ã¯ãã³ã³ãããŒã©ãŒã®ããŒããŠã§ã¢æ©èœã䜿çšããããšãã§ããŸãã ãã®ãããªããªãã¯ã¯ãã·ãŒã±ã³ã¹ã11100000ããããŒããã®éä¿¡ã®ããã«éä¿¡ãããã11111000ããããŠããããã®ããã«éä¿¡ãããå Žåã«ãã䜿çšãããŸãã 1ãããã¯ãšã³ã³ãŒãããããã€ãïŒãŸãã¯ããã«ïŒã§ãã
ãã1ã€ã®æ¹æ³ã¯ãSPIã€ã³ã¿ãŒãã§ã€ã¹ãšããžãã¯èŠçŽ ã䜿çšããããšã§ãã ã¢ããªã±ãŒã·ã§ã³ããŒã[1]ããã³[2]ã«ã¯ã説æããå®è£ ãäž»ã«åºã¥ããŠããäŸãå«ãŸããŠããŸãã
ãããã£ãŠãSPIã€ã³ã¿ãŒãã§ã€ã¹ã®ä¿¡å·ãååŸããSCKä¿¡å·ïŒåæä¿¡å·ïŒãå転ããSDOïŒåºåããŒã¿ïŒãšè«çé¢æ°ANDãçµã¿åããããšããšã³ã³ãŒããããããŠãããããåŸãããŸãïŒå³3ïŒã

å³ 3.ããŠããããã®ã³ãŒãã£ã³ã°
ããŒããããšã³ã³ãŒãããã«ã¯ãæéã®çãå¥ã®ä¿¡å·ãå¿ èŠã§ãã ãããè¡ãã«ã¯ãPWMãã€ã¯ãã³ã³ãããŒã©ãŒã䜿çšã§ããŸãã ãŒãã¯ãè«çåŒnïŒSDOïŒ* nïŒSCKïŒ* PWMïŒnã¯éæ°ïŒã§èšè¿°ãããä¿¡å·ã«ãã£ãŠãšã³ã³ãŒããããŸãã ãã®ãããªåŒã¯[1]ããã³[2]ã§äžããããŸãããæçµå³ïŒå³5ïŒãããããããã«ããŸãã¯ççå€è¡šãšã«ã«ããŒãããã䜿çšããè«çåè·¯ã®åæäžã«æšå®ãããããã«ãåŒã¯nSCK * PWMãšããŠèšè¿°ã§ããŸãã

å³ 4.ããŒããã®ã³ãŒãã£ã³ã°
ããŒãããšããŠããããã®ãããŒãORæ©èœãšçµã¿åãããŠãç®çã®PWMãã©ã€ããŒå¶åŸ¡ã·ãŒã±ã³ã¹WS2811 / WS2812ãååŸããããšã¯æ®ããŸãã

å³ 5.ã¹ããªãŒã ã®ã³ãŒãã£ã³ã°çµæ
è«çåŒã®åœ¢åŒã§ã¯ãå¶åŸ¡ä¿¡å·ã¯æ¬¡ã®ããã«èšè¿°ãããŸãã
ïŒnSCK * SDOïŒ+ïŒnSDO * nSCK * PWMïŒ {1}
ããŒã«ä»£æ°ã®å®çãé©çšãããšïŒããšãã°ãçŽ æŽãããæç§æž[3]ãåç §ïŒãåŒ{1}ãåçã®åŒã«å€æãããããšãããããŸãã
nïŒSCK + nSDOïŒ+ nïŒSDO + SCK + nPWMïŒ {2}
ïŒnSCK * PWMïŒ+ïŒnSCK * SDOïŒ {3}
nïŒSCK + nPWMïŒ+ nïŒSCK + nSDOïŒ {4}
nSCK *ïŒPWM + SDOïŒ {5}
PIC16F1508ãPIC16F1509ãªã©ãå€ãã®ãžã¥ãã¢Microchipãã€ã¯ãã³ã³ãããŒã©ãŒã«ã¯ãæ§æå¯èœãªããžãã¯ã»ã«ïŒCLCïŒãçµã¿èŸŒãŸããŠããŸãã
æ§æå¯èœãªããžãã¯ã»ã«ã¯ãã³ã¢ã«äŸåããªãåšèŸºæ©åšã§ããããã€ã¯ãã³ã³ãããŒã©ãŒåšèŸºæ©åšãšå€éšä¿¡å·ã®è«ççã«æ¥ç¶ãããåäœã®å®è£ ã«åœ¹ç«ã¡ãŸãã ã«ãŒãã«ããã®éåææ§ãšããã°ã©ã ããã®ç¬ç«æ§ã«ãããããã°ã©ã ã§ã®ã¿å®è£ ããã®ãé£ããæ©èœãå®è£ ã§ããŸãã
CLCã®å ¥åä¿¡å·ã¯ããã€ã¯ãã³ã³ãããŒã©ãŒå ¥åãCLCåºåããã®ä»ã®çµ±åãããåšèŸºã¢ãžã¥ãŒã«ãããã³å éšãžã§ãã¬ãŒã¿ãŒã§ãã CLCåºåã¯ããŒãã«åºåããä»ã®ã³ã³ãããŒã©ãŒåšèŸºæ©åšãšå ±æã§ããŸãã
äžèšãèæ ®ãããšãSPIã€ã³ã¿ãŒãã§ãŒã¹ãšCLCã®çµã¿åããã¯ãWS2812 LEDãã©ã€ããŒïŒWS2811ïŒã®å¶åŸ¡ä¿¡å·ãçæããåé¡ã解決ããããã®çæ³çãªãªãã·ã§ã³ã®ããã«èŠããŸãã
CLC DesignerãŠãŒãã£ãªãã£ã¯ãCLCã®èŠèŠçæ§æãšã³ãŒãçæãç®çãšããŠããããã€ã¯ãã³ã³ãããŒã©ãŒã®åšèŸºæ§æã¯ãMPLAB Xéçºç°å¢ãžã®Mplab Code ConfiguratorïŒMCCïŒãã©ã°ã€ã³ãä»ããŠæ§æã§ããŸãã
å ¥åä¿¡å·ã®ãã¹ãŠã®çµã¿åãããè«çã»ã«ã®å ¥åã«ååšããããã§ã¯ãããŸããã ãããã£ãŠãç¹å®ã®ã¿ã¹ã¯ãå®è¡ããããã«å¿ èŠãªä¿¡å·ãšã»ã«ã®çµã¿åãããèŠã€ããå¿ èŠããããŸãã CLCã»ã«ã§ããŒã¿ããšã³ã³ãŒãããã«ã¯ãSCKãSDOãããã³PWMä¿¡å·ãå¿ èŠã§ãã ããžãã¯ã»ã«CLC4ã®å ¥åã«ã¯SCKãSDOããã®ä¿¡å·ãå«ãŸããŸãããPWMããã®ä¿¡å·ã¯å«ãŸãããCLC2ã¯å ¥åã«PWMãå«ãŸããŸãã CLC2åºåã¯CLC4å ¥åã«æ¥ç¶ã§ããŸãã ãããã£ãŠãCLC2ã¯ãªããŒã¿ãšããŠæ©èœããPWMãCLC4ã®å ¥åã«å€æããCLC4ã¯åŒ{1}ã{2}ã... {5}ã®è«çæ©èœãå®è¡ããŸãã

å³6 CLC2ã¯PWMãåºåã«å€æããŸãã Gate2-4ã«ã¯log.1åºåããããæçµçµæã«ã¯åœ±é¿ããŸãã
å®éãæ瀺ããããã©ãŒã ã®é¢æ°{1}ã¯1ã€ã®CLCã»ã«ã«å®è£ ã§ããŸããããåçã®ãã©ãŒã {2} ... {5}ã¯ç°¡åã§ãã ïŒå³7ãåç §ïŒã

å³ 7. CLC4ã¯ãé¢æ°nïŒSCK + SDA + nPWMïŒ+ nïŒSCK + SDAïŒãä»ããŠSPIä¿¡å·ã®PWMãšã³ã³ãŒããçæããŸã
ãã®å Žåãè¿œå ã®Dããªã¬ãŒã䜿çšãããŸããããã«ãããã³ã³ãããŒã©ãŒã®ã¯ããã¯åšæ³¢æ°ã«å¯ŸããŠå ¥åä¿¡å·ã®åæãåããªããªããåºåã®èª€ã£ãåãæ¿ããåé¿ãããŸãã äžè¬ã«ãç¹å®ã®ã±ãŒã¹ã§ã¯ãDããªã¬ãŒã¯å¿ èŠãªãå ŽåããããŸããããã®æ§æã¯åºåã§ããäºæž¬å¯èœãªã¿ã€ãã³ã°ãæäŸããŸãïŒFOSCã¯ããã¯åšæ³¢æ°ããã®åæïŒã
äœè«ïŒ1ã 1ã€ã®åé¡ã解決ãã5ã€ã®æ¹æ³
è«çé¢æ°{2} ... {5}ã®å®è£
ãå³ã«ç€ºããŸãã 7a ... 7g ãã¹ãŠã®åŒã¯åçã§ãããæåŸ
ãããçµæããããããŸãïŒå³5ãåç
§ïŒã
å³ 7aã ïŒnSCK * PWMïŒ+ïŒnSCK * SDOïŒ
å³ 7bã nïŒSCK + nPWMïŒ+ nïŒSCK + nSDOïŒ
å³ 7cã nSCK *ïŒPWM + SDOïŒ
å³ 7g nïŒSCK + SDA + nPWMïŒ+ nïŒSCK + SDAïŒ
å³ 7aã ïŒnSCK * PWMïŒ+ïŒnSCK * SDOïŒ
å³ 7bã nïŒSCK + nPWMïŒ+ nïŒSCK + nSDOïŒ
å³ 7cã nSCK *ïŒPWM + SDOïŒ
å³ 7g nïŒSCK + SDA + nPWMïŒ+ nïŒSCK + SDAïŒ
äœè«ïŒ2ã çµã¿åããè«çåè·¯ã®ã¹ããªã¢ã¹ãã«ã¹
å
¥åä¿¡å·ã®å€åãåºåã®ããã€ãã®å€åã«ã€ãªããå Žåãããããã®çµæãã¹ããªã¢ã¹ãã«ã¹ïŒã°ãªããïŒã圢æãããŸãã ããã¯ãå€åããå
¥åä¿¡å·ãããã€ãã®æ¹æ³ã§åºåã«æž¡ãããç°ãªãæ¹æ³ã§ééããè«çã²ãŒãã®æ°ãç°ãªãå Žåã«çºçããå¯èœæ§ããããŸãã 次ã«ãåè«çèŠçŽ ã®é
延ãããã³ãæçããã¹ãšãã¯ãªãã£ã«ã«ããã¹ã«æ²¿ã£ã移åæéã®å·®ã«ãããã¹ããªã¢ã¹ã€ã³ãã«ã¹ã圢æãããå¯èœæ§ããããŸãã ãã®ããã»ã¹ã¯[3]ã§è©³ãã説æãããŠããŸãã
ç¹å®ã®äŸã§ã¯ãé¢æ°{1} ... {5}ãå®è£ ãããšããã®ãããªç¶æ³ã¯çºçããŸããããçºçããå Žåã§ããæ§æãããã»ã«ã®OR-Dæ§æã䜿çšããŠåé¡ã解決ã§ããŸãã 次ã«ãå³7dã®å³ãå³8ã®ããã«åæç»ã§ããŸãã 7ïŒeïŒãè¿œå ã®Dããªã¬ãŒããFOSCã³ã³ãããŒã©ãŒã®ã¯ããã¯ä¿¡å·ã®ãšããžã«æ²¿ã£ãåºåã§å€ããã£ããã£ããŸãã
å³ 7d å³ãšåãæ©èœ 7gãããããåºå£ã©ããä»ã
ç¹å®ã®äŸã§ã¯ãé¢æ°{1} ... {5}ãå®è£ ãããšããã®ãããªç¶æ³ã¯çºçããŸããããçºçããå Žåã§ããæ§æãããã»ã«ã®OR-Dæ§æã䜿çšããŠåé¡ã解決ã§ããŸãã 次ã«ãå³7dã®å³ãå³8ã®ããã«åæç»ã§ããŸãã 7ïŒeïŒãè¿œå ã®Dããªã¬ãŒããFOSCã³ã³ãããŒã©ãŒã®ã¯ããã¯ä¿¡å·ã®ãšããžã«æ²¿ã£ãåºåã§å€ããã£ããã£ããŸãã

å³ 7d å³ãšåãæ©èœ 7gãããããåºå£ã©ããä»ã
ãããã£ãŠãCLCãPWMãããã³SPIã®æ§æåŸãæºåéšåã¯çµäºããŸãã SSP1BUFã¬ãžã¹ã¿ã«ãã€ããæžã蟌ããšãCLC4ã®åºåã§ãWS2812圢åŒã«åŸã£ãŠãšã³ã³ãŒããããPWMä¿¡å·ãååŸããŸãã SPIã¢ãžã¥ãŒã«ãããŒã¿ãéä¿¡ããŠããéããã€ã¯ãã³ã³ãããŒã©ãŒã¯ä»ã®ããã€ãã®ã¿ã¹ã¯ãå®è¡ã§ããŸãã åLEDã«ã€ããŠã3ãã€ããéä¿¡ããå¿ èŠããããŸãã æ¥ç¶å³ãå³ã«ç€ºããŸãã 8ã

å³ 8. WS2812bããŒãããã€ã¯ãã³ã³ãããŒã©ãŒã«æ¥ç¶ãã
ããŒãã¹ïŒ1ã ã¡ã¢ãªå¢å
説æããæ¹æ³ã§ã¯ãæ§æå¯èœãªããžãã¯ãšãã€ã¯ãã³ã³ãããŒã©ãŒã®åšèŸºãšã®å ±åäœæ¥ã«ãããWS2812圢åŒã®äžæçãªãããã³ã«ãã©ã¡ãŒã¿ãŒã圢æãããããã°ã©ã ã¯ãã€ããSPIãããã¡ãŒã«æžã蟌ãã ãã§æžã¿ãæ§æå¯èœãªããžãã¯ã»ã«ãããã«ãéæ³ããåŒãç¶ããŸãã 説æããäŸã§ã¯ãSPIã¯èšé²ã«ã®ã¿äœ¿çšãããSDIå ¥åã©ã€ã³ã¯ç©ºããŠãããããLEDã®å¶åŸ¡ã ãã§ãªããå€éšããŒã¿ã®åä¿¡ã«ãSPIã䜿çšãã絶奜ã®æ©äŒãæäŸãããŸãã LEDã®å¶åŸ¡ãšåæã«SPIã€ã³ã¿ãŒãã§ãŒã¹ã§ã¡ã¢ãªãããããããŒã¿ãèªã¿åãæ¹æ³ãèããŠã¿ãŸãããã
ãã€ã¯ãã³ã³ãããŒã©ã®SPIããŒãã«ã¯ã1ã€ã®ã¢ãã¬ã¹ãæã€2ã€ã®ã·ããã¬ãžã¹ã¿ïŒéä¿¡çšãåä¿¡çšïŒããããŸãã SSPBUFãžã®æžã蟌ã¿ã¯ãã€ã転éãéå§ããããããSDOã©ã€ã³ã«ã·ããããŸãããåæã«SDIå ¥åã©ã€ã³ããã®ããŒã¿ã¯åãã¬ãžã¹ã¿ã«ã·ãããããŸãã ã€ãŸãã1ãã€ããSPIïŒSDOïŒã«éä¿¡ãããšåæã«ãSPIïŒSDIïŒããããŒã¿ãåä¿¡ããŸãã

ãããã£ãŠãWS2812 LEDããã€ã¯ãã³ã³ãããŒã©ãŒã®SPIã¢ãžã¥ãŒã«ãšãããšãã°SPIã¡ã¢ãªãŒïŒSRAM 23LC512ãŸãã¯EEPROM 25LCxxxïŒã«æ¥ç¶ããå€éšã¡ã¢ãªãŒããLEDã¹ããªããã«ããŒã¿ã転éããå Žåãããã°ã©ã ã¯SSPBUFããSSPBUFã«ããŒã¿ã転éããã ãã§ãã å€éšã¡ã¢ãªãããã€ããèªã¿åãã次ã®ã³ãã³ãã§ããŒã¿ãSPIïŒLEDïŒã«éãè¿ããšåæã«ã次ã®ãã€ããèªã¿åããŸãã


å³ 9.å€éšã¡ã¢ãªã®æ¥ç¶
ããŒã¿ã®é åãå€éšSPIã¡ã¢ãªã«æžã蟌ãå ŽåããŸãã¯ã¡ã¢ãªããæåã®ãã€ããèªã¿åãå ŽåãLEDã«ãã¬ãŒãããžããäžããªãããã«CLC4åºåãç¡å¹ã«ããå¿ èŠããããŸãã
LEDã®é åãæŽæ°ããå¿ èŠãããé »åºŠã«å¿ããŠãLEDã®æ°ã¯éåžžã«å€ããªãå¯èœæ§ããããŸããæŽæ°é床ãšå€éšã¡ã¢ãªã®ãµã€ãºã«ãã£ãŠå¶éãããŸãã LEDã®ã©ã€ã³ãããLEDã¹ã¯ãªãŒã³ãšãã£ã¹ãã¬ã€ãäœæã§ããŸãã 衚瀺ãããã¡å ã®ããŒã¿ã¯ãç»åãæŽæ°ãããŠããªãéã«å€æŽã§ããŸããããã«ããã衚瀺ãããç»åãäœæããããã«å¿ èŠãªãããè€éãªèšç®ãããŒãã«å ã®æ€çŽ¢ãªã©ã®æéãäžããããŸãã
å€éšã¡ã¢ãªã«ãããã¡ãªã³ã°ãããã€ã¡ãŒãžãååšãããããèªã¿åãã¡ã¢ãªã®éå§ã¢ãã¬ã¹ãã·ããããããšã§åç»ã衚瀺ã§ããŸãã SPI EEPROMã¡ã¢ãªã䜿çšãããšãäºåã«èšé²ãããç»åã衚瀺ã§ããŸãã SPIã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšãããšãè€æ°ã®ã¡ã¢ãªããããæ¥ç¶ã§ããŸããããšãã°ããã£ã©ã¯ã¿ãŒãžã§ãã¬ãŒã¿ãŒãéæ¢ç»åãä¿åããããã®1ã€ã®EEPROMãæ¥ç¶ãã2çªç®ã®SRAMã§LEDã¹ã¯ãªãŒã³ã«è¡šç€ºããããã®ãã£ã¹ãã¬ã€ãããã¡ãŒãäœæããŸãã
ããŒãã¹ïŒ2ã èªåã§ãã
ãœãŒã¹ã調ã¹ãã«ã¯ããã€ã¯ãããã瀟ã®Webãµã€ãã«ã¢ã¯ã»ã¹ã§ããŸãïŒ AN1890ãµã³ãã«ã®ãœãŒã¹ã³ãŒãã¯Webãµã€ãã§å ¥æã§ããŸãïŒ
ããããçããããªãã芧ã«ãªãããšããå§ãããŸãã5åã§ãäžèšã®ãã¹ãŠã®éæ³ãèªåã®æã§è¡ãæ¹æ³ã瀺ããŸãã
ãœãŒã¹
1. AN1606ã æ§æå¯èœããžãã¯ã»ã«ïŒCLCïŒã䜿çšããŠPIC16F1509ãšWS2811ãã€ã³ã¿ãŒãã§ã€ã¹ããŸãã LEDãã©ã€ããŒwww.microchip.com
2. AN1890ã 倧åLEDã¢ã¬ã€çšã®ã·ã³ãã«ãªSRAMãããã¡ãªã³ã°ã www.microchip.com
3. D.ããªã¹ãSãããªã¹ã ãããžã¿ã«åè·¯ãšã³ã³ãã¥ãŒã¿ãŒã¢ãŒããã¯ãã£ãïŒhttp://habrahabr.ru/post/259505/ïŒ