ãããã¯ãŒã¯ã«ã¯ããšãã«ã®ãŒå¹çã®é«ãããã€ã¹ïŒéåžžã¯ããããªãŒé§åã®ããã€ã¹ïŒã§ã®STM32ãã€ã¯ãã³ã³ãããŒã©ãŒã®åäœã«é¢ããèšäºãéåžžã«å€ããããŸããããããã®äžã§ããããããå«ãçãšãã¢ãŒããšSPL / HALã³ãã³ãã®ãªã¹ããè¶ ããŠãã®ãããã¯ãç解ããŠããªãã®ã¯æ®å¿µã§ãïŒãã ããåã䞻匵ãé©çšãããŸãïŒ STM32ã§ã®äœæ¥ã«é¢ããèšäºã®å€§éšåã«ïŒã
äžæ¹ãã¹ããŒãããŒã ãšããããçš®é¡ã®IoTã®æ¥éãªçºå±ã«ããããããã¯ã¯ãŸããŸãéèŠã«ãªã£ãŠããŸã-ãã®ãããªã·ã¹ãã ã§ã¯ãå€ãã®ã³ã³ããŒãã³ããããããªãŒé§åã§ããããããããäœå¹Žãã®é£ç¶åäœãæåŸ ãããŸãã
ãã®ã®ã£ãããSTM32L1ã®äŸã§åããŸã-éåžžã«äººæ°ã®ããã³ã³ãããŒã©ãŒã§ãéåžžã«çµæžçã§ãããšåæã«ããã®ã·ãªãŒãºã«ç¹æã®ããã€ãã®åé¡ããããŸãã è¿°ã¹ãããŠããã»ãšãã©ãã¹ãŠã¯ãSTM32L0ããã³STM32L4ã«é©çšãããäžè¬çãªåé¡ãšã¢ãããŒãã®èŠ³ç¹ãããCortex-Mã³ã¢ã«åºã¥ãä»ã®ã³ã³ãããŒã©ãŒã«ãé©çšãããŸãã
å®éã®çµæã¯äžã®åçã®ããã«ãªããŸãïŒãããŠãã¯ãããã«ãã¡ãŒã¿ãŒãä»ã®æž¬å®åšã®åæ§ã®ã¿ã¹ã¯ãžã®é©çšæ§ã«ã€ããŠã説æããŸãïŒã
STM32L1ã®çé»åã¢ãŒã
ããããªãŒç¯çŽã®åºæ¬ã¯ãããã»ããµã®äž»èŠãªçé»åã¢ãŒãã§ãã åã¡ãŒã«ãŒãšã³ã³ãããŒã©ãŒã®åã·ãªãŒãºã«ã¯ç¬èªã®ãã®ããããŸãïŒç¹å®ã®ã»ããã¯ãåšèŸºæ©åšãé»æºé»å§ãªã©ã«é¢ããããŸããŸãªãã¥ã¢ã³ã¹ãæã€æšæºã®Cortex-Mã³ã¢ã¢ãŒãã®ãã³ããŒæ¡åŒµã§ãïŒã
å ·äœçã«ã¯ãçµæžçãªäžé£ã®ã³ã³ãããŒã©ãŒã«å±ããSTM32L1ã¯ãããã«é¢é£ããŠãæ¡åŒµãããäžé£ã®é»åèšå®ãåãåããŸããã
- å®è¡ -éåžžã¢ãŒãã å æ¬çãå©çšå¯èœãªãã¹ãŠã®åšèŸºæ©åšãæ倧32 MHzã®åšæ³¢æ°ã
- äœé»åé転ïŒLPé転ïŒã¯ã åšèŸºå šäœã 200ÎŒAã§ããããšãèæ ®ã㊠ã131 kHz以å ã®åäœåšæ³¢æ°ãšæ倧æ¶è²»éãæã€ç¹å¥ãªã¢ãŒãã§ãã LPå®è¡ã¢ãŒãã§ã¯ãããã»ããµãŒé»æºã¬ã®ã¥ã¬ãŒã¿ãŒã¯ç¹å¥ãªçµæžçãªã¢ãŒãã«å ¥ããå®è¡ã¢ãŒãã§åãåšæ³¢æ°ã§åäœããã®ã«æ¯ã¹ãŠæ倧50ãã€ã¯ãã¢ã³ãã¢ãç¯çŽããŸãã
- ã¹ãªãŒã -ã«ãŒãã«ãäžæåæ¢ããŸããããã¹ãŠã®ã¯ããã¯åšæ³¢æ°ãä¿æããŸãã ã«ãŒãã«ãå¿ èŠãšããªãå Žåãããã»ããµåšèŸºæ©åšã¯åŒãç¶ãåäœããŸãããèªåçã«ãªãã«ããããšãã§ããŸãã
- äœé»åã¹ãªãŒãïŒLPã¹ãªãŒãïŒ -ã¹ãªãŒããšã¹ã¿ãã©ã€ã¶ãŒã®ãšã³ãããŒã¢ãŒããžã®ç§»è¡ã®çµã¿åããã ã¯ããã¯åšæ³¢æ°ã¯131 kHz以äžã§ãç·æ¶è²»éã¯200ÎŒA以äžã§ãã
- åæ¢ -å€éšãŸãã¯å éšã®ãã¯ããã¯ããžã§ãã¬ãŒã¿ãŒ32768 Hzãé€ãããã¹ãŠã®ã¯ããã¯åšæ³¢æ°ã®å®å šãªåæ¢ã STM32L1ã®å Žåããªã¢ã«ã¿ã€ã ã¯ããã¯ã®ã¿ããã®ã¢ãŒãã§åäœãç¶ããä»ã®ãã¹ãŠã¯å®å šã«åæ¢ããŸãã ããæ°ããããã»ããµã§ã¯ãäžéšã®åšèŸºæ©åšãäœåšæ³¢æ°ããã¯ããã¯ããå ŽåããããŸãã ã»ãšãã©ãã¹ãŠã®ããã»ããµã¬ãã°ãç¶æ ãä¿æããŸãã RAMã®å 容ã¯ä¿åãããå€éšå²ã蟌ã¿ã¯åŒãç¶ãæ©èœããŸãã
- ã¹ã¿ã³ã〠-ãªã¢ã«ã¿ã€ã ã¯ããã¯ãé€ããããã»ããµã³ã¢ãRAMãããã³ãã¹ãŠã®åšèŸºæ©åšã®å®å šãªã·ã£ããããŠã³ã RAMã¯ä¿åãããŸããïŒã€ãŸãããœãããŠã§ã¢ã®èŠ³ç¹ããã¯ãã¹ã¿ã³ãã€ç¶æ ã¯é»æºã®æªã¿ãšã»ãŒåãã§ã-æåããéå§ïŒãRTCã¯ãã§ãã¯ãç¶ããŸãã 3ã€ã®ç¹å¥ãªWKUPxã¬ãã°ãé€ããå€éšå²ã蟌ã¿ã¯æ©èœããŸãããã¬ãã°ã®0ãã1ãžã®åãæ¿ãã«ãããããã»ããµãèµ·åããŸãã
åã¢ãŒãã«å ¥ãã®ã¯éåžžã«ç°¡åã§ã-3ã5åã®ã¬ãžã¹ã¿ã«ãã©ã°ãèšå®ãããã®åŸïŒã¹ãªãŒãã¢ãŒãã®å ŽåïŒWFIãŸãã¯WFEåœä»€ãåŒã³åºãå¿ èŠããããŸããããã¯æšæºã®Cortex-Måœä»€ã§ããå²ã蟌ã¿åŸ ã¡ãããã³ãã€ãã³ãåŸ ã¡ããæå³ããŸãã ãã©ã°ã«å¿ããŠïŒããã»ããµã®ãªãã¡ã¬ã³ã¹ããã¥ã¢ã«ã«èšèŒãããŠããŸããSTM32L1ã®å Žåã¯RM0038ã§ã ïŒãããã»ããµèªäœã¯ãã®ã³ãã³ãã§ãã®ã¢ãŒãã«ãªããŸãã
ããã«ãå²ã蟌ã¿ãçŠæ¢ããŠïŒããã«ãããå€éšããã³å éšã€ãã³ããããã»ããµãã¹ãªãŒããã埩垰ãããèœåã«åœ±é¿ãäžããŸããïŒãDSBã³ãã³ãã䜿çšããŠãã¬ãžã¹ã¿ããã¡ã¢ãªãžã®ããŒã¿ã®ä¿åã®å®äºãåŸ ã¡ãŸãã
ããšãã°ãåæ¢ã¢ãŒããžã®ç§»è¡ã¯æ¬¡ã®ããã«ãªããŸãã
/* PDDS Stop Standby, */ PWR->CR &= ~(PWR_CR_PDDS); /* Wakeup , */ PWR->CR |= PWR_CR_CWUF; /* low-power , Stop - */ PWR->CR |= PWR_CR_LPSDSR; /* Vref */ PWR->CR |= PWR_CR_ULP; /* Cortex-M, Stop, Standby - Deep Sleep */ /* Deep Sleep */ SCB->SCR |= (SCB_SCR_SLEEPDEEP_Msk); /* ; */ unsigned state = irq_disable(); /* */ __DSB(); /* */ __WFI(); /* */ init_clk(); /* */ irq_restore(state);
WFIã¯ããããã³ã°åœä»€ã§ããããã®äžã§ããã»ããµãŒã¯ãã£ãŒãã¹ãªãŒãã«å ¥ããäœããã®å²ã蟌ã¿ãçºçãããŸã§çµäºããŸããã ã¯ããç¹°ãè¿ããŸãããå²ã蟌ã¿ãæ瀺çã«ãªãã«ããã«ãããããããããã»ããµã¯å²ã蟌ã¿ã«å¿çããŠèµ·åããŸãããå²ã蟌ã¿ããªã³ã«æ»ããåŸã«ã®ã¿åŠçãéå§ããŸãã ãããŠãããã«ã¯æ·±ãæå³ããããŸãã
äžèšã®ã³ãŒãã§ã¯ãWFIã®åŸãåäœåšæ³¢æ°ã®ããçš®ã®ååæåãè¡ãããŠããã ãã§ã¯ãããŸãã-äºå®ãL1ã¯4.2 MHzã®åšæ³¢æ°ã§ããã®åšæ³¢æ°ã®ãœãŒã¹ãšããŠå éšMSIãžã§ãã¬ãŒã¿ãŒã§åžžã«ãã£ãŒãã¹ãªãŒããçµäºããŸãã å€ãã®å Žåãããã»ããµããŠã§ã€ã¯ã¢ããããå²ã蟌ã¿ãã³ãã©ãŒããã®åšæ³¢æ°ã§å®è¡ãéå§ããã®ã¯æãŸãããããŸãããããšãã°ããã¹ãŠã®ã¿ã€ããŒãUARTãããã³ãã®ä»ã®ãã¹ã®åšæ³¢æ°ããªãã«ãªãããã§ãã ãã®ãããæåã«åäœåšæ³¢æ°ã埩å ããŸãïŒãŸãã¯ãMSIã®ãŸãŸã«ããå Žåã¯ã4.2 MHzæªæºã®å¿ èŠãªãã¹ãåèšç®ããŸãïŒã次ã«ãå²ã蟌ã¿ã«é£ã³èŸŒã¿ãŸãã
å®éã«ã¯ãæãäžè¬çã«äœ¿çšããã2ã€ã®ã¢ãŒãã¯å®è¡ãšåæ¢ã§ãã å®éã®ãšãããLP Runã¯éåžžã«é ããããã»ããµãå€éšã€ãã³ããåŸ ã€ã ãã§ãªããäœããã®èšç®ãå®è¡ããå¿ èŠãããå Žåã«ã¯æå³ããããŸããããŸããSleepããã³LP Sleepã¯ããŸãçµæžçã§ã¯ãªãïŒæ倧2 mAã®æ¶è²»ïŒãå¿ èŠãªå Žåã«å¿ èŠã§ãå°ãªããšãããã€ããä¿åããŸãããåæã«åäœããŠããåšèŸºæ©åšãé¢ãããããã³/ãŸãã¯ã€ãã³ãã«å¯Ÿããããã»ããµã®å¯èœãªéãéãåå¿ãæäŸããŸãã ãã®ãããªèŠä»¶ã¯ååšããŸãããäžè¬çã«ã¯ããã»ã©é »ç¹ã§ã¯ãããŸããã
éåžžãã¹ã¿ã³ãã€ã¢ãŒãã¯äœ¿çšãããŸãããããã¯ãRAMã®ãŒãåã«ãããäžæãããšããããç¶è¡ããããšãäžå¯èœã§ããããã§ãããŸããããŒããŠã§ã¢ãœãªã¥ãŒã·ã§ã³ãå¿ èŠãšããå€éšããã€ã¹ã«ãåé¡ããããŸãã ãã ããããã€ã¹ãããã念é ã«çœ®ããŠèšèšãããŠããå Žåããã®ããã€ã¹ã®é·æä¿ç®¡äžãªã©ã«ãã¹ã¿ã³ãã€ãããªããã¢ãŒããšããŠäœ¿çšã§ããŸãã
å®éããã®ãã¬ãŒã³ããŒã·ã§ã³ã§ã¯ãã»ãšãã©ã®ããã¥ã¢ã«ã¯éåžžåæã«éåããŠããŸãã
åé¡ã¯ããããã«ç¶ããŠãåŽåæéã®åæ¢ã§çŽæããã1.4ÎŒAã§ã¯ãªããå®éã®æ¶è²»éã100-200ÎŒAã«ãªãããšã§ã-å€éšããããã»ã³ãµãŒãªã©ãæããªãNucleoãªãã¡ã¬ã³ã¹ãããã°ã§ãã§ããããã«èµ·å ããå¯èœæ§ããããŸãã
ããããããã»ããµã¯åäœããŠããŸãããšã©ãã¿ã«ã¯äœããããŸããããããªãã¯ãã¹ãŠãæ£ããè¡ããŸããã
çµããã§ã¯ãããŸããã
ããããèçå矀
STM32L1ã®æåã®åé¡ã¯ã ããã€ãã®èšäºã§èšåãããŠããŸãããã»ãšãã©ã®å Žåãã©ãŒã©ã ã§ã®ã¿æãåºãããŸããè°è«ã®3æ¥ç®ã«ãéåžžã«100-200ÎŒAãçºçããå Žæ㧠ã誰ããAN3430ã®ååšãèŠããŠããããã®äžã®19ããŒãžã«å°éããŠããŸã-ããã©ã«ãã§ã¯èã®ç¶æ ã
STMicroèªäœã§ããã¹ãªãŒããä»ããŠåé¡ã«èšåããŠããããšã«æ³šæããŠãã ããããšãã«ã®ãŒæ¶è²»ã®æé©åãèæ ®ãããã»ãšãã©ã®ææžã§ã¯ãçç±ã説æããã«ãæªäœ¿çšã®èãå°é¢ã«åŒã£åŒµã£ãããã¢ããã°å ¥åã¢ãŒãã«ãããããã¢ããã€ã¹ããã1ã€ãŸãã¯2ã€ã®ãã¬ãŒãºã«å¶éãããŠããŸãã
æ²ããããšã«ãããã©ã«ãã§ã¯ããã¹ãŠã®ã¬ãã°ãããžã¿ã«å ¥åïŒGPIOx_MODERã¬ãžã¹ã¿ã®0x00ïŒãšããŠæ§æãããŠããŸãã ã·ã¥ãããããªã¬ãŒã¯åžžã«ããžã¿ã«å ¥åã«ããããã®å ¥åã®ãã€ãºèæ§ãæ¹åããŸãããå®å šã«ç¬ç«ããŠããŸã-ããã¯åçŽãªããžãã¯ãšã¬ã¡ã³ãã§ãããå€éšã¯ããã¯ãå¿ èŠãšããªããã¹ããªã·ã¹ãåãããããã¡ãŒã§ãã
ãã®å Žåãããã¯ãã¹ãããã¢ãŒãã§ã¯ããã¯ããªãã«ããã·ã¥ãããããªã¬ãŒãäœãèµ·ãããªãã£ãããã«åäœãç¶ããããšãæå³ããŸããå ¥åä¿¡å·ã®ã¬ãã«ã«å¿ããŠãåºåã0ãš1ã«åãæ¿ããŸãã
åæã«ãå žåçãªåè·¯ã®ããã»ããµã¬ãã°ã®äžéšãå®ã«æµ®ããŠããŸããã€ãŸãããããã«æçãªä¿¡å·ã¯ãããŸããã ããããããä¿¡å·ããªããšããããšã¯ããããã®ã¬ãã°ã«é«ãå ¥åã€ã³ããŒãã³ã¹ãåå ã§ãããã®ã¬ãã°ã«0ãååšããªãããšãæå³ãããšèããã®ã¯ééã£ãŠããã§ããããããã¯ã¢ãããšé£æ¥ãããã©ãã¯ããæåã®ãã¬ããã£ã³ãã«ã«æµããé»æµãããäžå®å€ã®ã©ã³ãã ãã€ãºããããŸãã足ãã¢ã³ãããšããŠæ©èœããã®ã«ååãªé·ãã§ããå ŽåïŒãã ãããã·ã¢ã®ã¢ããã°ãã¬ãã¯ããã«ãªãã«ãªãã誀ã£ãŠæ§æããããã€ã¯ãã³ã³ãããŒã©ãŒã®é»åæ¶è²»ãããããåæžãããã¯ãã§ãïŒã
ãããã®å€åã«å¿ããŠãã¬ãã°ã¯äœããã®ã©ã³ãã ãªæ¹æ³ã§0ãš1ã®éã§åãæ¿ãããŸããCMOSããžãã¯ã¯ã¹ã€ããã³ã°æã«é»æµãæ¶è²»ããŸãã ã€ãŸããããžã¿ã«å ¥åã¢ãŒãã§æ§æããã空äžã«ã¶ãäžãã£ãŠããããã»ããµèã¯ã ããèªäœã§é¡èãªé»æµãæ¶è²»ããŸã ã
ãã®æ¹æ³ã¯ç°¡åã§ã-ããã°ã©ã ãèµ·åãããšãããã¹ãŠã®ã¬ãã°ãã¢ããã°å ¥åã®ç¶æ ã«èšå®ããå¿ èŠããããŸãã STM32ã¯ãADCã«æ¥ç¶ãããŠãããã©ããã«é¢ä¿ãªããäŸå€ãªããã¹ãŠã®ã¬ãã°ã«å¯ŸããŠæ£åŒã«èšå®ãããŠãããå ¥åã«ã·ã¥ãããããªã¬ãŒããªãå Žåã®ã¿ããžã¿ã«å ¥åãšç°ãªããŸãã
ãããè¡ãã«ã¯ãå€0xFF ... FFããã¹ãŠã®GPIOx_MODERã¬ãžã¹ã¿ã«æžã蟌ãã ãã§ååã§ããäžèšã®ããã«ãéå§æã«ããã«ãããè¡ãã®ãæãç°¡åã§ãã次ã«ããã¬ã€äžã«ããã®ããã€ã¹ã§å¿ èŠã«å¿ããŠåã ã®ã¬ãã°ãåæ§æããŸãã
ãã ããããã§ã¯2次ã®åé¡ãçºçããŸãããã¡ãŒã ãŠã§ã¢ã1ã€ã®ç¹å®ã®ã³ã³ãããŒã©ãŒã§åäœããã®ã§ãGPIOxã§xãäœã§ããããåžžã«ææ¡ããŠãããšäŸ¿å©ã§ãã ããã«æªãããšã«ããã¡ãŒã ãŠã§ã¢ããŠãããŒãµã«ãªå Žå-STM32ã¯æ倧 8ã€ã®ããŒããæã€ããšãã§ããŸãããããããå°ããããããšãã§ããŸãã ã³ã³ãããŒã©ã®ãã®ã¢ãã«ã«ååšããªãããŒãã«æžã蟌ãããšãããšãããŒããã©ãŒã«ããçºçããŸãã ã«ãŒãã«ã¯ã©ãã·ã¥ã
ãã ãããã®å Žåã§ãåé¿ããããšãã§ããŸã-Cortex-Mã§ã¯ãã¢ãã¬ã¹ã®æå¹æ§ã確èªã§ããŸããããã«ãM3ããã³M4ã®å Žåã確èªã¯äžè¬ã«ç°¡åã§ãããM0ã§ã¯å€å°ã®éæ³ãå¿ èŠã§ãããå®çŸå¯èœã§ãïŒ è©³çŽ°ã«ã€ããŠã¯ ããã¡ãã®èšäºãåç §ããŠãã ããã ïŒ
ã€ãŸããäžè¬ã«ãããã»ããµãèµ·åããåšæ³¢æ°ã調æŽããããã«å©çšå¯èœãªãã¹ãŠã®GPIOããŒããééããŠãããããMODERããŒãã«æžã蟌ã¿ãŸãïŒä»¥äžã®ã³ãŒãã¯RIOT OSåãã«èšè¿°ãããŠããŸãããäžè¬çã«ã¯ã³ã¡ã³ããªãã§3åã«è»¢éã§ããŸãïŒãã®ä»ã®ãã©ãããã©ãŒã ïŒã
#if defined(CPU_FAM_STM32L1) /* switch all GPIOs to AIN mode to minimize power consumption */ GPIO_TypeDef *port; /* enable GPIO clock */ uint32_t ahb_gpio_clocks = RCC->AHBENR & 0xFF; periph_clk_en(AHB, 0xFF); for (uint8_t i = 0; i < 8; i++) { port = (GPIO_TypeDef *)(GPIOA_BASE + i*(GPIOB_BASE - GPIOA_BASE)); if (cpu_check_address((char *)port)) { port->MODER = 0xffffffff; } else { break; } } /* restore GPIO clock */ uint32_t tmpreg = RCC->AHBENR; tmpreg &= ~((uint32_t)0xFF); tmpreg |= ahb_gpio_clocks; periph_clk_en(AHB, tmpreg); #endif
ããã¯L1ã·ãªãŒãºã«ã®ã¿é©çšãããL0ããã³L4ã§ã¯ãšã¯ã¹ããªãšã³ã¹ãèæ ®ãããããã©ã«ãã§ã¯ãèµ·åæã«ãã¹ãŠã®ããŒããã¢ããã°å ¥åãšããŠèšå®ãããããšã«æ³šæããŠãã ããã
ãããã®ãã¹ãŠã®æé ã泚ææ·±ãè¡ã£ãŠãå®æããããã€ã¹ã«ãã¡ãŒã ãŠã§ã¢ãå ¥åããŸã...ãããŠãããŒãã§ã¯ãã ä»ããããã¹ãŠã®ããŒã¿ã·ãŒãããæšå®å€ãæãæ²èŠ³çã§ãããšããäºå®ã«ãããããããããã»ããµãšãã¹ãŠã®å€éšãããã§åæ¢ã¢ãŒãã§150 uAãååŸããŸã10ÎŒAãè¶ ããªãããã«ããŠãã ããã
ããã«ãããã»ããµãåæ¢ã§ã¯ãªãã¹ã¿ã³ãã€ã«ããããšããŸãã ã»ãŒå®å šã«ãªãã«ããã ãã§ãé»åæ¶è²»ã¯äœäžãã代ããã«3åã«å¢å ããçŽ0.5ããªã¢ã³ãã¢ã«è¿ã¥ããŸãïŒ
ãããã¯ããå¿ èŠã¯ãããŸããã ãæ³åã®ãšããããã¹ãŠãæ£ããè¡ããŸããã ããããæåŸãŸã§ã§ã¯ãããŸããã
ããããèçå矀-2
次ã®åé¡ã«ã¯2ã€ã®éšåããããŸãã
æåã®ãã®ã¯éåžžã«æçœã§ãïŒããã€ã¹ã1ã€ã®ãã€ã¯ãã³ã³ãããŒã©ãŒã§æ§æãããŠããªãå Žåãã·ã¥ãããããªã¬ãŒããã³ã°ããããã«ãããã®å éšããžãã¯ãåŒã³èµ·ããããšãã§ããå ¥åä¿¡å·ãå€éšãããã«ãããããšãå¿ããªãããšãéèŠã§ãã ããšãã°ãUARTããŒã ã«ãã£ãŠã¹ãªãŒãããåãäžããããã¹ãªãŒããã解é€ããããããã¯ããã¹ã®åãã«å¿ããŠããã¹äžã®ããŒã¿ãèªã¿åãããšããŸãã
ãããã£ãŠããããã®èããã¹ãŠç©ºäžã«ã¶ãäžãã£ãŠãããšãäœãåŸãããŸããã
ã©ã®ãããªæ¡ä»¶äžã§ã圌ãã¯ç©ºäžã§çµããã®ã§ããããïŒ
ãŸããã³ã³ãããŒã©ãŒãã¹ã¿ã³ãã€ã¢ãŒãã«ãªããšããã¹ãŠã®GPIOã¯é«æµæç¶æ ã§High-Zç¶æ ã«ç§»è¡ããŸããã€ãŸããå®éã«ã¯ããããã«æ¥ç¶ãããå€éšãããã¯ç©ºäžã«ãããŸãã ãããSTM32L1ã§ããã°ã©ã ã§ä¿®æ£ããããšã¯äžå¯èœã§ãïŒä»ã®ã·ãªãŒãºããã³ä»ã®ã³ã³ãããŒã©ãŒã§ã¯ç°ãªãæ¹æ³ã§çºçããŸãïŒããã®ãããå¯äžã®æ¹æ³ã¯ã¹ã¿ã³ãã€ã¢ãŒãã䜿çšããã·ã¹ãã ã§ãå€éšãããã®å ¥åã¯ã°ã©ã³ãã«ãã«ããããå€éšæµæã«ãã£ãŠçµŠé»ããå¿ èŠããããŸãã
ç¹å®ã®ã¬ãã«ã¯ããããã®èŠ³ç¹ããã©ã€ã³ãéã¢ã¯ãã£ãã«ãªãããã«éžæãããŸãã
- UART TXã®å Žåã¯1
- SPI MOSIã®å Žåã¯0
- SPIã¢ãŒã0ãŸãã¯1ã®SPI CLKã®å Žåã¯0
- SPIã¢ãŒã2ãŸãã¯3ã®SPI CLKã®å Žåã¯1
- SPI CSã®å Žåã¯1
第äºã«ã STOP ïŒsicïŒïŒ ã¢ãŒãã䜿çšããSTM32ã§ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã®å éšããŒããŠã§ã¢ãããã¯ã«æ¥ç¶ãããŠããGPIO ã®ç¶æ ãç°ãªãå ŽåããããŸãã ã€ãŸããåãSPIã€ã³ã¿ãŒãã§ã€ã¹ãæ§æãããŠããå ŽåãStopã§çªç¶ãããžã¿ã«å ¥åããŸãã¯äžè¬ã«High-Zã®ããããã«ãªãããšãå€æããããã«å¯Ÿå¿ããçµæãšããŠãå€éšãããããã³ã°ããŸãã ããã¥ã¡ã³ãã«ã¯èãè¯å¥œãªç¶æ ã«ãããšèšèŒãããŠããŸãããèãéåžžã®GPIOãšããŠäœ¿çšããå Žåã«ã®ã¿äºåã«ä¿¡é Œã§ããŸãã
ç解ããŠèš±ãããšã¯ã§ããŸããããèŠããŠä¿®æ£ããããšã¯ã§ããŸãããã®ããã«åäœããã€ã³ã¿ãŒãã§ã€ã¹ã®å Žåããã®ã€ã³ã¿ãŒãã§ã€ã¹ã®éã¢ã¯ãã£ãã¬ãã«ã«å¯Ÿå¿ããã¬ãã«ã§ãéåžžã®GPIOãžã®åŒ·å¶åãæ¿ããè¿œå ããå¿ èŠããããŸãã ã¹ãªãŒãç¶æ ããæããåŸãã€ã³ã¿ãŒãã§ã€ã¹ã埩å ã§ããŸãã
ããšãã°ãã¹ãªãŒãããåã®åãSPIïŒåçŽã«ããããã«ãRIOT OSããã³ãŒããååŸããŸãããåãããšãã¬ãžã¹ã¿ã«å®è£ ããã®ãç°¡åã§ããããšã¯æããã§ãïŒã
/* specifically set GPIOs used for external SPI devices */ /* MOSI = 0, SCK = 0, MISO = AIN for SPI Mode 0 & 1 (CPOL = 0) */ /* MOSI = 0, SCK = 1, MISO = AIN for SPI Mode 2 & 3 (CPOL = 1) */ for (i = 0; i < SPI_NUMOF; i++) { /* check if SPI is in use */ if (is_periph_clk(spi_config[i].apbbus, spi_config[i].rccmask) == 1) { /* SPI CLK polarity */ if (spi_config[i].dev->CR1 & (1<<1)) { gpio_init(spi_config[i].sclk_pin, GPIO_IN_PU); } else { gpio_init(spi_config[i].sclk_pin, GPIO_IN_PD); } gpio_init(spi_config[i].mosi_pin, GPIO_IN_PD); gpio_init(spi_config[i].miso_pin, GPIO_AIN); } }
ããã§ã®åºåã¯ãã¬ãã«0ãŸãã¯1ã®GPIO_OUTãšããŠã§ã¯ãªãã0ãŸãã¯1ãžã®ãã«ã¢ãããæã€å ¥åãšããŠæ§æãããŠããããšã«æ³šæããŠãã ãã-ããã¯åºæ¬çãªãã€ã³ãã§ã¯ãããŸããããééããŠäœããã®çš®é¡ã®ãã«ããã·ã¥ãããããšãããšãè¿œå ã®ã»ãã¥ãªãã£ãæäŸãããŸããã®ããããå察æ¹åã«åŒã£åŒµãå€éšãããã GPIO_OUTã䜿çšãããšããã«ã¢ããä»ãã®GPIO_INã䜿çšããŠãç絡ã調æŽã§ããŸãã
ããã«ãSPI CSä¿¡å·ã¯åœ±é¿ãåããŸããããã®å Žåãããã°ã©ã ã«ãã£ãŠãã€ãŸãéåžžã®GPIOã«ãã£ãŠçæããã倢ã®äžã§èªä¿¡ãæã£ãŠãã®ç¶æ ãç¶æããŸãã
ã¹ãªãŒããçµäºãããšãã«èã®ç¶æ ã埩å ããã«ã¯ãå€æŽãããã¬ãžã¹ã¿ïŒMODERãPUPDRãOTYPERãOSPEEDR-ç¹å®ã®ã±ãŒã¹ã®ç¶æ³ãåç §ïŒã®å€ãå ¥ãå£ã§å€æ°ã«æžã蟌ã¿ãå€æ°ããã¹ãªãŒãã解é€ãããšãã«ã¬ãžã¹ã¿ã«ããŒã«ããã¯ããã ãã§ååã§ãã
ãããŠä»... ta daaamïŒ ã¿ã€ãã«ç»åã 1.5ãã€ã¯ãã¢ã³ãã¢ã
ããããç¥ãã«ã¯ææå°æ©ã§ãã ããã§ããšãã«ã®ãŒæ¶è²»ã®éçãªæé©åãçµäºããŸããããããŠãç§ãã¡ã®å ã«ã¯åçãªãã®ããããŸã ã
ã¢ãã¬ã¹vsã¿ãŒãã«
ã©ã¡ããè¯ãã§ãã-ããå€ãé£ã¹ãŠããéãèµ°ãããããå°ãªãé£ã¹ãŸãããããé ãèµ°ããŸããïŒ ãã€ã¯ãã³ã³ãããŒã©ãŒã®å Žåããã®è³ªåã«å¯Ÿããçãã¯èªæã§ã¯ãããŸããã
ãŸããåäœåšæ³¢æ°ã¯ã65 kHzïŒLPå®è¡ïŒããéåžžã¢ãŒãã§32 MHzãŸã§ã®éåžžã«åºãç¯å²ã§å€æŽã§ããŸãã ä»ã®CMOSããããšåæ§ã«ãSTM32ã«ã¯æ¶è²»é»åã«éçãšåçã®2ã€ã®ã³ã³ããŒãã³ãããããŸãã 2çªç®ã¯åšæ³¢æ°ã«äŸåãã1çªç®ã¯äžå®ã§ãã ãã®çµæããšãã«ã®ãŒæ¶è²»ã¯åäœåšæ³¢æ°ãçç£æ§ã»ã©éãäœäžãããã¿ã¹ã¯ã«ãã£ãŠã¯ããšãã«ã®ãŒå¹çã®èŠ³ç¹ããæé©ãªåšæ³¢æ°ãç°ãªãå ŽåããããŸã-äœããã®ã€ãã³ããåŸ ã€å¿ èŠãããããäœããã®çç±ã§ç ãããšãã§ããªãå Žåãäœåšæ³¢æ°ã¯å¹æçã§ãæ°åãè±ç©ããã ãã§ãã å žåçãªãç é¢å¹³åãã¿ã¹ã¯ã§ã¯ãéåžžã2ã4 MHzæªæºã«ãããšæå³ããããŸããã
第äºã«ãããã¯ããããªããšã§ã¯ãããŸããããç¡ç ããæãåºãå²åã¯ãåäœåšæ³¢æ°ãšåä¿¡æ¹æ³ã«äŸåããŸãã
ææªã®å Žåã¯ãå€éšã¯ãªãŒããã32 MHzã®åšæ³¢æ°ã§ã¹ãªãŒãç¶æ ããæãåºãããšã§ãïŒSTM32L1ã¯å éš4 MHzãªã·ã¬ãŒã¿ãŒã§èµ·åããããšãæãåºãããŠãã ããïŒã
- å®éã«ããã»ããµã¯ã¹ãªãŒããã埩垰ããŸã
- ã¯ã©ãŒãäžä»£å®å®åïŒ1-24 MHzïŒ
- PLLçæã®å®å®åïŒ32 MHzïŒ
å®éã«ããã§ããã»ããµãã¹ãªãŒãç¶æ ãã解é€ããããšã¯ã4.2 MHzã®åšæ³¢æ°ã§ã¯çŽ10ÎŒsããããŸãããæå°ã®åé¡ã§ãã ãã ããã¯ã©ãŒãã®å®å®åã«ã¯æ倧1 msããããŸãïŒéåžžãé«éå ±æ¯åšã®å Žåã¯æ°çŸãã€ã¯ãç§ã®ãªãŒããŒã§ããã«é«éã§ããïŒãPLLã¢ãŒããžã®ã¢ã¯ã»ã¹ã¯ããã«160ÎŒsã§ãã
ãããã®é 延ã¯ããã£ãã«èµ·åããªãã·ã¹ãã ïŒ1ç§ã«1å以äžïŒã®ãšãã«ã®ãŒæ¶è²»ã®èŠ³ç¹ããã¯éèŠã§ã¯ãªããããããŸããããèµ·åééãæ°åããªç§ä»¥äžã§ãèµ·åèªäœãçãå ŽåããªãŒããŒãããã¯æ¢ã«æž¬å®å¯èœãªè¿œå ãéå§ããŸãããã»ããµã®èµ·åäžã«æ¶è²»ãããé»æµã¯æ¯èŒçå°ããããšãèæ ®ããŠãã ããã
ããã§äœãã§ããŸããïŒ äžè¬çã«ãçãã¯æããã§ããå€éšã¯ãªãŒãã®äœ¿çšãé¿ããããã«ããŠãã ããã ããšãã°ãæ£ç¢ºãªã¿ã€ãã³ã°ïŒããšãã°ãããããªãã®-UARTããŒã¿äº€æïŒãå¿ èŠãšãããŸããªéããµãã¿ã¹ã¯ããé »ç¹ãªåçŽãªãµãã¿ã¹ã¯ãããããã°ã©ã ã¯ãç®èŠãããã³ã«ãä»ã®ãŸãŸã«ããå¿ èŠããããã©ãããå€æã§ããŸãããŸãã¯ãããã»ããµãåšæ³¢æ°ã®åæåã«å€ãã®æéãè²»ããããšãªãæ¢ã«èµ·åããŠããMSIãžã§ãã¬ãŒã¿ã§çŸåšã®ã¿ã¹ã¯ãå®è¡ããã®ãç°¡åïŒãã€é«éïŒïŒã«ãªããŸãã
ãã ãããã®å ŽåãåšèŸºã¯ããã¯åšæ³¢æ°ã®èª¿æŽããã©ãã·ã¥ã¡ã¢ãªã¢ã¯ã»ã¹ã¢ãŒãïŒé 延ãµã€ã¯ã«æ°ïŒãããã»ããµã³ã¢é»å§ïŒSTM32L1ã§ã¯3ã€ã®å¯èœãªå€ããéžæïŒãªã©ã®èª¿æŽãå¿ èŠã«ãªãå ŽåããããŸãã ãã ããã«ãŒãã«ãââãã³ã¡ã¢ãªã®åäœã¢ãŒãã«é¢ããŠã¯ã䜿çšãããæ倧åšæ³¢æ°ã«æšå¥šãããã¢ãŒããéžæããããšã«ããããããã埮調æŽããããšãå¯èœã§ããããã¯ããããã®åšæ³¢æ°ã§ã®ã¿ã¹ã¯éãå°ãªããããäœåšæ³¢æ°ã§ã®ã³ã¢ã®éæé©ãªåäœãå®éã®ããã©ãŒãã³ã¹ãšæ¶è²»é»åã«å€§ããªå€åãäžããªãããã§ãå®è¡ãããŸããã
ãã®ãããªæ段ã¯ãã¹ãŠãã¢ãŒãã®åŸ®èª¿æŽã«ãã§ã«é©çšãããŠããŸããïŒããšãã°ãã»ãšãã©ã®OSãã©ã€ãã©ãªã¯ãããã¯ã¹ã«è¿ããã®ããç¥ããŸããïŒãå Žåã«ãã£ãŠã¯ãããŒã»ã³ãåäœã®ã¹ã±ãŒã«ã§ãæã«ã¯ãã以äžã§å¹³åæ¶è²»éãæžããããšãã§ããŸãã ããšãã°ã50 msããšã«ãªãŒãã¹ã€ããã®æ¥ç¹ãããŒãªã³ã°ããæ°Žéã¡ãŒã¿ãŒãæ³åããŠãã ãããå®éã®èª¿æ»ã«ã¯æ°åãã€ã¯ãç§ããããŸãããã®æéãŸã§ã«ã³ã³ãããŒã©ãŒãèµ·åãããŸã§ã«500ÎŒsãè¿œå ããŸããïŒ
èããããªãã»ã©é·ãç§
ãšãã«ã®ãŒä¿åã«çŽæ¥é¢ä¿ããªãããããã«é¢é£ããŠå¿ ç¶çã«çºçããå¥ã®åé¡-1ç§æªæºã®æéééãã«ãŠã³ãããæ¹æ³ã¯ïŒ
äºå®ãSTM32L1ã«ã¯åæ¢ã¢ãŒãã§åäœããã¿ã€ããŒã1ã€ãããããŸãããããã¯RTCã§ãããæšæºã®æéåäœã¯1ç§ã§ãã åæã«ãããã°ã©ã ã§ã¯ãå°ãªããšãåãæ°Žéã¡ãŒã¿ãŒãååŸããããã«ãæ°åããªç§ããæ°çŸããªç§ã®åäœã®æéééãåžžã«ãããŸãã
ã«ãªãæ¹æ³ 32768 Hzããã¯ããã¯ã§ããLPTIMã¿ã€ããŒãåããããã»ããµãŒã§å®è¡ããŸããïŒ å®éã«ã¯è¯ããªãã·ã§ã³ã§ãããå¿ ãããå¿ èŠãªããã§ã¯ãããŸããã ãããªãã§ãå¯èœã§ãã
ãã¹ãŠã®STM32L1ã§ã¯ãããŸããããCatã§å§ãŸããŸãã 2ïŒãããã¯ããã»ããµSTM32L151CB-AãSTM32L151CC以éïŒãRTCãããã¯ã«æ°ããã¬ãžã¹ã¿ïŒSSRãSubSeconds RegisterïŒãè¿œå ãããŸããã ããæ£ç¢ºã«ã¯ããŠãŒã¶ãŒã«èŠããã»ã©è£è¶³ãããŠããŸããã§ãããããã«ããµãç§ã¢ã©ãŒã ALRMASSRãšALRMBSSRãè¿œå ãããŸããã
ãã®ã¬ãžã¹ã¿ã«ã¯ãç解ã§ããæéåäœã¯å«ãŸããŠããŸããããæè¡çãªå éšã«ãŠã³ã¿ãŒããåéãããŸããã STM32L1ã§ã¯ã32768 Hzã§å»ã ãšé²ãã¯ããã¯ã¯ãéåæãšåæã®2ã€ã®ååšåšã«ãŠã³ã¿ãŒãééããéåžžåèš32768ã§ååšããŠã¯ããã¯ã®1ç§ã®å»ã¿ãååŸããŸãã ãããã£ãŠãSSRã¯2çªç®ã®ã«ãŠã³ã¿ãŒã®çŸåšã®å€ã«ãããŸããã
SSRã¯ããªç§åäœã§ã¯ãªãåäœã§ã«ãŠã³ãããŸããããããã®åäœã®æ¬¡å ã¯ãRTCå ¥åã§æšæºã®1ç§ãååŸããããã«32768ã«çããåèšä¿æ°ãç¶æããªãããåæããã³éåæã«ãŠã³ã¿ãŒã®é€æ°ã®æ¯çãå€æŽããããšã§å€æŽã§ããŸãã ãããã®ä¿æ°ããããã°ãSSRã®1åºåã®äŸ¡æ Œãããªç§åäœã§èšç®ã§ãããããã1ç§æªæºã®ã¢ã©ãŒã ã®ããã°ã©ãã³ã°ã«é²ãããšãã§ããŸãã
éåæäºåã«ãŠã³ã¿ãŒã¯åæSSRãããçµæžçã§ããããã1ã«èšå®ããå ¥ååšæ³¢æ°ãSSRã«32768ã§é€ç®ããããã30ÎŒsã®ã«ãŠã³ããåãåã£ãŠããããããšãã«ã®ãŒçã«äžå©ãªããšã«æ³šæããŠãã ããã ç§ãã¡èªèº«ã¯ãåæ-4095ïŒïŒ7 + 1ïŒ*ïŒ4095 + 1ïŒ= 32768ïŒã®äºåé€ç®åš7ã®æé©å€ã決å®ããŸããã äºåååšåšãããã«æžå°ãããšãRTCã®ãšãã«ã®ãŒæ¶è²»éã¯ããããªãã€ã¯ãã¢ã³ãã¢ã§æž¬å®å¯èœã«å¢å ãå§ããŸããããããåæ¢ã¢ãŒãã®ãåºæºã1.4ÎŒAãšæ¯èŒããããããã©ã¯ã·ã§ã³ãéèŠã§ãã ããã©ã«ãã§ã¯ãSTM32L1ã®å Žåããããã®å€ã¯127ãš255ã§ãã åºæºäŸ¡æ Œã¯çŽ4ããªç§ã§ãããã¯å°ã倧éæã§ãã
ã³ãŒããããã«æ·±ãæãäžãããå Žåã¯ããããŠRIOT OSã®æšæºRTCãã©ã€ããŒãå®æããã RTC_SSRãšããªç§ééããµããŒãããŸãã ãã以æ¥ãç§ãã¡ã¯æåéããã¹ãŠã®ã¹ãããã§ããã䜿çšããŠããŸããïŒãããŠãOSã§äœæ¥ããŠããããããµãŒãã¹ããã®äžã§ãã³ã°ã¢ããããæéŠãæ¯ãã ãã§1ã€ã®ããŒããŠã§ã¢ã¿ã€ããŒã§ä»»æã®æéã®ã»ãŒãã¹ãŠã®ã¿ã¹ã¯ããã³ã°ã¢ããã§ããŸãïŒã
åãã¢ãããŒããSTM32L0ããã³STM32L4ã³ã³ãããŒã©ãŒã«è»¢éããããã®ãã¹ãŠã®ã¢ãã«ã«RTC_SSRã¬ãžã¹ã¿ããããŸãã ããã«ãããLPTIMã¿ã€ããŒãäžèŠã«ãªããç°ãªããã©ãããã©ãŒã ã®ã³ãŒããçµ±äžãããŸãã
ãã«ãã¡ãŒã¿ãŒãåãã€ããŠããããšãç解ããæ¹æ³
ãã¡ããããã¹ãŠã®æé©åã®åŸãæ£åœãªçåãçããŸããå®éãç§ãã¡ã¯äœãéæããŸãããïŒããã«å¯Ÿããçããç¥ããªããŠããæ£ããèšå®ããããã©ã°ãæã€1ã€ã®WFEã«å®å šã«å¶éããã¹ãªãŒãç¶æ ã«å ¥ãã200ã500ÎŒAãååŸã§ããŸãã
é»æµã枬å®ããæãäŒçµ±çãªæ¹æ³ã¯ããã¡ããããã«ãã¡ãŒã¿ãŒã§ããåçæ¶è²»ã®ãããã€ã¯ãã³ã³ãããŒã©ãŒã®ããã«è² è·ã®äžã«ããããšãç解ããã®ã¯éåžžã«ç°¡åã§ã-ãªã³ã«ãããšã暪ã«ãªããŸãã
ãã ããããã¯ãã«ãã¡ãŒã¿ãŒããã®åé¡ã§åœ¹ã«ç«ããªããšããæå³ã§ã¯ãããŸãããããªãã¯ãããé©çšã§ããå¿ èŠããããŸãã
ãŸãããã«ãã¡ãŒã¿ãŒã¯éåžžã«é ããã®ã§ããã1ã«ãŠã³ãã®å žåçãªæéã¯2çªç®ã®ã¹ã±ãŒã«ã§ããããã€ã¯ãã³ã³ãããŒã©ãŒãç¶æ ãå€æŽããå žåçãªæéã¯ãã€ã¯ãç§ã®ã¹ã±ãŒã«ã§ãããã®ããŒã¹ã§æ¶è²»éãå€æŽããã·ã¹ãã ã§ã¯ããã«ãã¡ãŒã¿ãŒã¯åã«ã©ã³ãã ãªå€ã衚瀺ããŸãã
ãã ããç§ãã¡ã«ãšã£ãŠèå³æ·±ãéã©ã³ãã å€æ°ã®1ã€ã¯ãã¹ãªãŒãã¢ãŒãã§ã®ãã€ã¯ãã³ã³ãããŒã©ãŒã®æ¶è²»ã§ããããŒã¿ã·ãŒãã§æšå®ããå€ãå€§å¹ ã«è¶ ããå Žåãæããã«äœããééã£ãŠããŸããããã¯éçã·ã¹ãã ã®æ¶è²»éã§ããã€ãŸãããã«ãã¡ãŒã¿ãŒã§æž¬å®ã§ããŸãã
ã¿ã€ãã«åçã«ç€ºãããŠããæãç°¡åãªæ¹æ³ã¯ããã€ã¯ãã¢ã³ã¡ãŒã¿ã¢ãŒãã®ãã«ãã¡ãŒã¿ã§ããããã¯çŸåšãã»ãšãã©ã®ãããã¬ã³ãžã¢ãã«ã«ããã粟床ãšå解èœãåªããŠããŸãã UT120Cã®å解èœã¯0.1ÎŒAã§ã粟床ã¯Â±1ïŒ Â±3æŸé»ã§ããããã§ååã§ãã
ãã®ã¢ãŒãã«ã¯åé¡ã1ã€ãããããŸããããã«ãã¡ãŒã¿ã®çŽåæµæã倧ãããæ°çŸãªãŒã ã®ã¹ã±ãŒã«ããããããéåžžã¢ãŒãã§ã¯ãé»æºåè·¯ã«ãã®ãããªãã«ãã¡ãŒã¿ããããã€ã¯ãã³ã³ãããŒã©ã¯èµ·åããŸããã幞ããªããšã«ãã¹ã±ãŒã«äžã®ã»ãšãã©ãã¹ãŠã®æ©åšã®ãmAããšãuAãã®äœçœ®ã¯è¿ããäž¡æ¹ã®ç¯å²ã§æž¬å®ãããœã±ããã¯åãã§ãããããã£ãŠãã³ã³ãããŒã©ãŒããmAãã®å¶éã§å®å šã«å®è¡ããã¹ãªãŒãç¶æ ã«ãªã£ãããuAããã¯ãªãã¯ããŸãã-ããã¯ååã«éãè¡ããããããã³ã³ãããŒã©ãé»åã倱ã£ãŠåèµ·åããæéããããŸããã
ã³ã³ãããŒã©ã®ã¢ã¯ãã£ããã£ãæ¥äžæããå Žåããã®æ¹æ³ã¯é©çšã§ããªãããšã«æ³šæããŠãã ãããããšãã°ãããã€ã¹ã®ãã¡ãŒã ãŠã§ã¢ã§ã¯ãŠã©ããããã°ã¿ã€ããŒã15ç§ããšã«ãªã»ãããããŸãããããã®ç¬éã«ããã«ãã¡ãŒã¿ãŒã¯27ÎŒAã®é åã§äœãã衚瀺ããŸãããããã¯ãã¡ããç«æã®å€©æ°ãšã¯é¢ä¿ãããŸããã 5-10ç§ã«1å以äžãã·ã¹ãã äžã§åæã«çãäœããçºçããå Žåããã«ãã¡ãŒã¿ãŒã¯åçŽã«åãã€ããŸããéç
ã枬å®ããå¥ã®æ¹æ³ïŒç§ã¯ãã®èšèãçŽæ¥åŒ·èª¿ããŠããŸãïŒãã«ãã¡ãŒã¿ãŒã«ããæ¶è²»ã¯ãå€éšã·ã£ã³ãã§ã®èœäžã®æž¬å®å€ã§ããæ°åãã€ã¯ãã¢ã³ãã¢ã®ã¹ã±ãŒã«ã®è¶ 埮å°é»æµã枬å®ããå Žåã倧ããªã·ã£ã³ãïŒããšãã°ã1 kOhmïŒã䞊åã«æ¥ç¶ããå¿ èŠããããŸã-çŽæ¥æ¥ç¶ã®ã·ã§ããããŒãã€ãªãŒããã·ã£ã³ãã0.3 Vãè¶ ãããšããã€ãªãŒããéããé»å§éäžãå¶éãããŸããæ倧0.3 Vã®å Žåã1 mV = 1ÎŒAã®ç¯å²ã§ãã«ãã¡ãŒã¿ã䜿çšããŠå®å šã«éäžã枬å®ã§ããŸãã
æ®å¿µãªãããå žåçãªãã«ãã¡ãŒã¿ãŒã§äœã€ã³ããŒãã³ã¹ã®ã·ã£ã³ãã®ããããã枬å®ããããšã¯ã§ããŸãããäžçŽã¯ã©ã¹ã®ããã€ã¹ã¯ã100ÎŒVæªæºã®å€ã瀺ããŠãããã®ç¯å²ã§ã¯æ®å¿µã§ãã 1ÎŒVã衚瀺ã§ããåªãããã¹ã¯ãããããã€ã¹ãããã°ãç§ã®ã¢ããã€ã¹ã¯ããå¿ èŠãããŸããã
ããããéååŠã¯è¯ãã®ã§ãããååŠã¯ã©ãã§ããïŒå¹³åé»åæ¶è²»ã«å¯Ÿããç°ãªãåšæ³¢æ°ã®åãå¹æãè©äŸ¡ããæ¹æ³ã¯ïŒ
ããã§ã¯ãã¹ãŠãè€éã§ãã
åºæ¬çãªèŠä»¶ãæžãçããŸãããã
- å°ãªããšã1ÎŒA-100 mAïŒ10 ^ 5ïŒã®é»æµç¯å²
- 枬å®æéã¯10ÎŒs以äž
- 100 mV以äžã®é»å§éäž
- 枬å®æé-ç¡å¶é
åçŽã«æ°å€ã«å€æãããšãå ¥åãã€ã¢ã¹ã30ÎŒVæªæºã®æ¯èŒçé«éã§18ããã以äžã®ADCã1ÎŒVããã®é»å§ã枬å®ã§ããã¢ããã°ããã³ããšã³ããããã³ããããã¹ãŠã転éã§ããã³ã³ãã¥ãŒã¿ãŒãžã®ã¯ã€ãã¯ã€ã³ã¿ãŒãã§ã€ã¹ãåŸãããŸãä¿åããŸãã
ãããŠããããã¯ãã¹ãŠ1åã®äœ¿çšã§æžã¿ãŸãã
ããªãã¯ãã¯ãããªããã®ãããªãã®ã10ãã«ã®é ã ã«æšªããã£ãŠããªãã®ã§ããïŒ Keysight N6705Cã¯æåã®è¿äŒŒå€ã§èŠä»¶ãæºãããŠããŸãããäŸ¡æ Œã¯7960ãã«ã§ãã
ããšãã°ãäºç®ãœãªã¥ãŒã·ã§ã³ãããSiLabsã¯çŸåšã®æž¬å®ããã®ãããã°ã«çµ±åããŸã-Advanced Energy MonitoringïŒAEMïŒã·ã¹ãã ã®ç¹æ§ã¯ç¹å®ã®ãããã°ã¢ãã«ã«äŸåããæ倧ã®åé¡ã¯æž¬å®é床ã«ãããŸããå€ããã¹ã¿ãŒã¿ãŒããããã§ã¯ãSTK3300 / 3400ã¯100 Hzã®ã¿ã§ãæ°ãããããã°ã§ã¯STK3700 / 3800ïŒé»ããããœã©ã€ãã§ç°¡åã«èªèå¯èœïŒ-6.25 kHzãDKã·ãªãŒãºã®å€ãã¢ãã«ã§ã¯æ倧10 kHzã«éããŸãããã³ã¹ããããããŸã圌ãã¯ãã§ã«300ãã«ä»¥äžã§ããæ·±å»ãªã¿ã¹ã¯ã«ã€ããŠã¯ãSiLabsã¯åè¿°ã®Keysightãå ¬åŒã«æšå¥šããŠããŸãã
ååãšããŠããã®ãããªããã€ã¹ã¯èªåã§èšèšããããšãã§ããŸã-ãŸããOPA2335ã®ãããªæå°éã®å ¥åãã€ã¢ã¹ã§éåžžã«åªãããªãã¢ã³ããå¿ èŠã§ãããã®ãããªãªãã¢ã³ãã¯ãç°ãªãå¢å¹ ä¿æ°ãæã€2ã3åã®åãã·ã£ã³ãã«é 眮ããããããã¯ãã¹ãŠç°ãªãADCå ¥åã«å·»ãããŸãïŒãã®ã¢ãããŒãã§ã¯ãå èµã®ãã€ã¯ãã³ã³ãããŒã©ã䜿çšããããšã¯å¯èœã§ãïŒãç¬éã¯éè² è·ã§ã¯ãªããããããã®æž¬å®å€ãã«ãŠã³ããããŸãã
ã³ã³ãã¥ãŒã¿ãŒãžã®ããŒã¿è»¢éé床ã®åé¡ã¯éåžžã«ç°¡åã«è§£æ±ºãããŸã-å®éã®ç®çã§ã¯ãå®éã®ã·ã¹ãã ã®å¹³åæ¶è²»ã«äž»ã«é¢å¿ããããããã¡ãŒã¿ãŒã®ãªã³ããŒããã€ã¯ãã³ã³ãããŒã©ãŒã§ãã€ã¯ãç§ã®èªã¿åãå€ãåéããåççãªããªç§ã¹ã±ãŒã«ã®ç®è¡å¹³åãéä¿¡ããããšãã§ããŸã
ããã«ãå®è·µã瀺ãããã«ãã¡ãŒã¿ãŒãã¬ãŒã¯éåžžã«äŸ¿å©ã§ãããã·ã³ãã«ã§ããŸãæ£ç¢ºã§ã¯ãããŸããããåžžã«æå ã«ãããŸã-çãšãã«ãã£ãŠç Žå£ãããäœããã®ãã¡ãŒã ãŠã§ã¢ã®å€æŽã«é©ããªãããã«ããããã§ãã
ããšãã°ãæšæºã®USBã¢ããã¿ãŒUMDK-RFã«çµã¿èŸŒã¿ãŸãããããã¯ããã¡ãŒã ãŠã§ã¢ã®ãããã°æã«åžžã«äœ¿çšãããŸããæ¢ã«DAPLinkãããã³ã«ãUSB-UARTããªããžãããã³é»æºç®¡çããžãã¯ããããããµããŒãããSWDããã°ã©ããŒããããæ¶è²»ã¡ãŒã¿ãŒããããŸãã»ãšãã©ç¡æã§ããã¡ãŒã¿ãŒèªäœã¯1ãªãŒã ã·ã£ã³ãããã³INA213ã¢ã³ãïŒã²ã€ã³50åãæšæºçãªãŒããªãã»ãã5ÎŒVïŒïŒ
ã¢ã³ãã¯ãã€ã¯ãã³ã³ãããŒã©ãŒã®ADCïŒSTM32F042F6P6ïŒã®å ¥åã«çŽæ¥æ¥ç¶ãããADCã¯ããŒããŠã§ã¢ã¿ã€ããŒã䜿çšããŠ10ÎŒsã®åšæã§åŠçããUSBçµç±ã§èµ·åããŸã100ããªç§ééã®å¹³åããŒã¿ãåºåãããŸãããã®çµæããã¡ãŒã ãŠã§ã¢ããžãã¯ã§äœããå€æŽãããšãç ãåºãããã³ãŒããŒã飲ãã ãããŠãããã€ã¹ãããŒãã«ã«çœ®ãããŸãŸæ»ãã次ã®ãããªã¹ã±ãžã¥ãŒã«ãèŠãããšãã§ããŸãã
ãã¡ããããã®ãããªãç¡æãããã€ã¹ã®ç²ŸåºŠã¯é«ããããŸãã-12ãããADCãš1ã€ã®ã¢ã³ãã䜿çšãããšãæå°éåã¯16ÎŒAã«ãªããŸããããšãã«ã®ãŒæ¶è²»ã®èŠ³ç¹ãããããã°ãããããã€ã¹ã®åäœãè¿ éãã€å®æçã«è©äŸ¡ããã®ã«éåžžã«åœ¹ç«ã¡ãŸããçµå±ããã¡ãŒã ãŠã§ã¢ãŸãã¯ããã€ã¹ã§äœãééã£ãããšãããå Žåãéåžžã«é«ãä¿èšŒãããã°ããã€ã¯ãã¢ã³ãã®ãŠãããããå°ãªããšãæ°çŸãåŒãåºãããšãã§ããããã¯ã¯ã£ãããšèŠããŸãã
å¥ã®çŽ æŽãããããŒãã¹ã¯ãããŒã¿ãããã¹ã圢åŒïŒãã€ã¯ãã¢ã³ãã¢åäœã®å€ïŒã§ä»®æ³COMããŒãã«éä¿¡ããããããããã€ã¹ã®ã³ã³ãœãŒã«ã衚瀺ãããŠã£ã³ããŠã®é£ã«ç«¯æ«ãŠã£ã³ããŠãé 眮ãããããã°ã¡ãã»ãŒãžãšåæã«é»åæ¶è²»ã確èªã§ããããšã§ãã
ããã«ã¯çç±ãããããšãèªæ ¢ãããã®æå°éã®ïŒãããŠéåžžã«å®äŸ¡ãªïŒãããã¬ããã°ã©ããèªåã®ãããžã§ã¯ãã§äœ¿çšããããã¹ãŠã®äººã«æäŸããŸããããã§
å³ãæãããšãã§ããŸãïŒDipTraceã®ãœãŒã¹ïŒãããã§ãã¡ãŒã ãŠã§ã¢ããã©ãã°ã¢ãŠãã§ããŸãïŒã¿ãŒã²ãããæ§ç¯ãããšãã®umdk-rfãã©ã³ããdap42ãããžã§ã¯ãã«åºã¥ãUMDK-RF ïŒããã€ã¢ã°ã©ã ã¯ä¹±éã«æãããŠããŸãããèŠç¹ãæ確ã§ããããšãé¡ã£ãŠããŸããããã¡ãŒã ãŠã§ã¢ã¯libopencm3ã䜿çšããŠCã§èšè¿°ãããéåžžã®arm-none-eabi-gccã§ã¢ã»ã³ãã«ãããŸããè¿œå æ©èœãšããŠããã¡ãŒã ãŠã§ã¢ã«ã¯é»æºç®¡çæ©èœããããã³ã³ãããŒã«ããŒããéè² è·ä¿¡å·ããã£ãããããã¿ã³ãé·æŒãããŠãã€ãã£ãããŒãããŒããŒã«æ¥ç¶ãããã³ã³ãããŒã©ãŒãå ¥åããŸãã
NBïŒããã°ã©ããŒèªèº«ã®ã³ã³ãããŒã©ãŒãéåžžã®æ¹æ³ã§ããŒãããŒããŒã«å ¥ããããã®ããŒããã¿ã³ãå¿ èŠãªå Žåãæ¥ç¶ã®æ¥µæ§ãå€æŽããæåã®ããŒãæã®ã³ã³ãããŒã©ãŒã®ãªãã·ã§ã³ãã€ãç·šéãšããŒãããŒããŒãžã®ããã°ã©ã å ¥åãåé€ããéåžžã®å²ã蟌ã¿æ¥µæ§ãæãããå¿ èŠããããŸããã®ãã¿ã³ã®æ©èœã
ã²ã€ã³ä¿æ°ãç°ãªããªãã¢ã³ãã®ãã¢ã§é»æµãã©ã®ããã«æž¬å®ãããããèŠãããšãã§ããŸãïŒããšãã°ãã¿ã¹ã¯ã®äžèšã®ãããã¬ãŒãæ¹åããããïŒãããïŒpã9ïŒã1ã€ã®ãªãã¢ã³ããšé«äŸ¡ãª24ãããADC - TIã®æã£ãŠããïŒ5ããŒãžã®EnergyTraceãïŒã
PSæ¥ç¶ãããUARTãŸãã¯JTAG / SWDã䜿çšãããããã°äžã«ã足ããå°ããªé»æµãæŒããå ŽåããããŸãããããã¯ããã€ã¹ã®å®éã®åäœäžã«ã¯ååšããŸããããããã£ãŠãSWDã«UMDK-RFã¯ã15ãã€ã¯ãã¢ã³ãã¢ïŒããã³SWDããšãªããåºæ¿ã®å€ãããŒãžã§ã³ã§è¡ããããã£ãŠè³æ¬ãã«ã枬å®ç»åïŒã«ã€ããŠæŒæŽ©ããSTM32ãã¯ã¬ãªã«SWDã«ãã£ãŠå¯çæ¶è²»ã®ã±ãŒã¹ããã£ã200ãã€ã¯ãã¢ã³ãã¢ã«é¢ããã枬å®ã«äœ¿çšããããããã°ããŒãã¯ããã®ãããªæ©èœããããã©ããã確èªããå¿ èŠããããŸã-ãã®ãããªå¯èœæ§ãããå Žåã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã©ã€ã³ãåæãããããããã°çšã«ã€ã³ã¹ããŒã«ããã«æž¬å®ããããã€ã¹ã®æ¶è²»éãšçµæãæ¯èŒããŸãïŒããšãã°ãéçã¢ãŒãã®ãã«ãã¡ãŒã¿ãŒïŒ
çµè«ã®ä»£ããã«
ãã€ã¯ãã³ã³ãããŒã©ã®ããã°ã©ãã³ã°ãããªãã®äž»ãªå°éåéãšããŠéžæããããšã«ãã£ãŠãããªããç¯ããééãããã§ã«ç解ããŠããããšãé¡ã£ãŠããŸãã