|
|
![]() STM32F103C ARM32 ºñÆ® M3 °è¿ °³¹ß±âÆÇÀ¸·Î 128x64 SSD1306 OLED¸¦ ±¸µ¿ÇÑ´Ù. UNO¿¡¼ OLED SSD1306À» ¸¹ÀÌ »ç¿ëÇϰí ÀÖÁö¸¸, STM32 ARM ±âÆÇµµ Àß µÇÁö´ÂÁö ±Ã±ÝÇß´Ù. Bootloader¸¦ °³Á¶ÇÑ ARM ±âÆÇ°ú ¾ÆµÎÀ̳ë IDEÀÇ STM32F1XX ÄÄÆÄÀÏ·¯°¡ ÀÛµ¿ÇÏ´ÂÁö Á¡°ËÇÑ´Ù. ![]() ÀÌ ±âÆÇÀº °¡°ÝÀÌ Àú·ÅÇÏÁö¸¸, ¸î°¡Áö ¼öÁ¤ÇØ¾ß ÇÑ´Ù. 1. ¹Ø¸éÀÇ ÀúÇ× R10À» 103 (10K)¿¡¼ 152 (1.5K)·Î ±³Ã¼ÇÑ´Ù 2. ¾Æ´Ï¸é A12 ÇÉ¿¡ 1.8K ÀúÇ×À» 3.3V·Î ¿¬°áÇØµµ µÈ´Ù. 3. Bootloader¸¦ maple-mini 2.0 pc13 À¸·Î °³Á¶ÇÑ´Ù. (÷ºÎÆÄÀÏ #2) °³Á¶¹æ¹ýÀº j-Link (USD 5.60)¿Í JFlash.exe·Î Æß¿þ¾î¸¦ ±Á´Â´Ù. ¿ìÃøÀÇ 4ÇÉ ¹é»ö Ä¿³ØÅ͸¦ °³¹ß±âÆÇ(À§ÂÊ »çÁø)ÀÇ ÁÂÃø 4Çɰú ¿¬°áÇÑ´Ù. (ÀÌÀü ±ÛÀÎ ºÎÆ®·Î´õ °³Á¶¹æ¹ý ÂüÁ¶) ![]() 4. ¾ÆµÎÀ̳ë IDEÀÇ º¸µå°ü¸®¿¡¼ ARM32 DUE¿Í STM32F1XX º¸µå¸¦ Ãß°¡ÇØ¾ß ÇÑ´Ù. ARM32 DUE º¸µåÀÇ Ãß°¡´Â 32ºñÆ® ARM post compiler°¡ Ãß°¡µÇ°í ARM Core ÄÄÆÄÀÏÀÌ µÈ´Ù, STM32F1XX º¸µåÀÇ Ãß°¡´Â STM32F103Cµî F1XX CPU¸¦ »ç¿ëÇÏ´Â º¸µåµéÀÇ hardware°¡ Ãß°¡µÈ´Ù. 5. ¸ðµç º¯°æÀ» ³¡³»°í USB Æ÷Æ®¿¡ STM32F103C ±âÆÇÀÇ USB¸¦ PC¿¡ Á÷Á¢ ¿¬°áÇϸé, Windows¿¡¼ DFU µå¶óÀ̹ö°¡ ÀÚµ¿À¸·Î ¼³Ä¡µÈ´Ù. <- °³Á¶ ¹× ¼³Ä¡ ³¡. ![]() aliexpress.com¿¡¼ 128x64 SSD1306 OLED ¸ðµâÀ» ±¸ÀÔÇß´Ù. (10°³ USD 26.00 ¹è¼Û·á ¹«·á) ![]() ![]() OLED 1¹ø GND(GND) --- STM32 GND Á¢Áö¼±¿¡ ¿¬°áÇÑ´Ù OLED 2¹ø VCC(VDD) --- STM32 3.3V Àü¿ø¿¡ ¿¬°áÇÑ´Ù OLED 3¹ø DO(SCK) --- STM32 PB13 =Serial colock OLED 3¹ø DI(SDI) --- STM32 PB13 =Serial data OLED 5¹ø RES(RST) --- STM32 3.3V Àü¿ø¿¡ ¿¬°áÇÑ´Ù OLED 7¹ø CS(CS) --- STM32 PB12 =Chip selector OLED 8¹ø DC(DC) --- STM32 PB14 = Data/Command ![]() ![]() ![]() ´ÙÀ½°ú °°ÀÌ ¿¬°áµÈ ±âÆÇÀÇ Æß¿þ¾îÀÎ ºÎÆ®·Î´õÀÇ Á¤º¸°¡ ³ª¿Í¾ß ÇÑ´Ù ![]() IDE ¡æ ÆÄÀÏ ¡æ ¿¹Á¦ ¡æ »ç¿ëÀÚ ¿¹Á¦ ¡æ Adafruit SSD1306 ¡æ SSD1306 128x64¸¦ ¼±ÅÃÇÏ¸é ¼Ò½º°¡ µé¾î¿Â´Ù. IDE ¡æ ÆÄÀÏ ¡æ »õÀ̸§À¸·Î ÀúÀåÀ» ´·¯ ³» ÆÄÀÏ·Î ÀúÀåÇÑ´Ù. ![]() Àü¿ø 2°³¿Í 1°³ÀÇ RESET ±×¸®°í 4°³ÀÇ ½ÅÈ£¼±ÀÌ Àִµ¥, RESET¸¦ Àü¿ø¿¡ ¿¬°áÇϸé 4¼±ÀÌ Á¦¾î¿ëÀÌ´Ù. ¾Æ·¡ ¼Ò½º ¼öÁ¤¿¡¼ #defineÀÇ hardware Á¤ÀÇ¿Í °°ÀÌ, RESET´Â Àü¿ø¿¡ ¿¬°áÇϰí, 4°³´Â Æ÷Æ®¿¡ ¿¬°áÇÑ´Ù. ![]() #include <Adafruit_SSD1306_STM32.h> ¹Ù·Î À§¿¡ û»ö Äڵ带 Ãß°¡ÇÑ´Ù Àû»ö°ú °°Àº ³»¿ëÀÇ Äڵ带 ã¾Æ¼ //·Î ¸·´Â´Ù. Áö¿öµµ µÈ´Ù. // #define OLED_RESET 4 //Adafruit_SSD1306 display(OLED_RESET); ±× ¾Æ·¡¿¡ ´ÙÀ½ û»ö Äڵ带 Ãß°¡ÇÑ´Ù #define OLED_SCK PB13 // SCK #define OLED_SDI PB15 // MOSI #define OLED_RST 255 // VCC #define OLED_CS PB12 // CS #define OLED_DC PB14 // DC #include <Adafruit_SSD1306_STM32.h> Adafruit_SSD1306 display(OLED_SDI, OLED_SCK, OLED_DC, OLED_RST,OLED_CS); Ãß°¡ÇÑ ´ÙÀ½ÀÇ ¾Æ·¡ÀÇ ¸ðµç ¼Ò½º´Â ±×´ë·Î µÐ´Ù. #include <Adafruit_GFX.h> #define NUMFLAKES 10 #define XPOS 0 #define YPOS 1 #define DELTAY 2 ![]() C:¡¬Documents¡¬¹®¼¡¬Arduino¡¬hardware¡¬¸¦ ã´Â´Ù. ÀÌÀü¿¡ Ãß°¡ÇÑ STM32 Æú´õ°¡ ÀÖ¾î¾ß ÇÑ´Ù. Ãß°¡ÇÑ Æú´õ Arduino_STM32-master¡¬STM32F1¡¬libraries¡¬Adafruit_SSD1306¡¬¸¦ ¿¬´Ù. Adafruit_SSD1306_STM32.h¸¦ ã¾Æ¼ ¸Þ¸ðÀåÀ̳ª ÆíÁý±â·Î ´ÙÀ½ ³»¿ëÀ» ã¾Æ¼ ¼öÁ¤ÇÑ´Ù #define SSD1306_128_64 °¡ ¾ÕºÎºÐ¿¡ //°¡ ¾øÀ¸¸é µÈ´Ù. ´ÙÀ½°ú °°ÀÌ ¸¸µé°í ÀúÀåÇÑ´Ù. /--------------------------------------------------------------------------*/ #define SSD1306_128_64 // #define SSD1306_128_32 // #define SSD1306_96_16 /*=========================================================================*/ ![]() Æß¿þ¾î ±Á±â(upload)°¡ ¿Ï·áµÇ°í ÀÌ»óÀÌ ¾øÀ¸¸é, SSD1306 OLED¿¡ ±×·¡ÇÈÀÌ Ç¥½ÃµÈ´Ù. ![]() ±×¸²ÀÌ ÃµÃµÈ÷ ¿òÁ÷ÀÌ´Â °ÍÀº CPU°¡ ´À¸°°Ô ¾Æ´Ï°í, ¼Ò½ºÄڵ忡 Áö¿¬½Ã°£ÀÌ µé¾îÀֱ⠶§¹®ÀÌ´Ù. OLEDÀÇ ±×·¡ÇÈ ÀÛµ¿ÀÌ Àß µÈ´Ù¸é, ÀÌÁ¦ ºÎÅÍ´Â ¼Ò½ºÄڵ带 ¼öÁ¤ÇÏ¿© ÀÚ½ÅÀÇ ÄÚµå·Î ¸¸µé¸é µÈ´Ù. ¼Ò½º¿¡¼ setup() ¾ÈÀÇ test_ssd1306();¸¦ //·Î ¸·À¸¸é ±×·¡ÇÈ µ¥¸ð°¡ ÁßÁöµÈ´Ù. ÁÖÇÔ¼ö loop() ÇÔ¼ö ¾Æ·¡ÀÇ º¸Á¶ÇÔ¼ö(subroutine)µéÀº ¸ðµÎ ±×·¡ÇÈ µ¥¸ð¿ëÀÌ´Ù. ¾î¶»°Ô ±×·¡ÇÈÀ» ¸¸µå´ÂÁö È®ÀÎÇÏ°í ³ª¼, ÇÊ¿ä ¾ø´Ù¸é ³ªÁß¿¡ Áö¿öµµ µÈ´Ù. ÁÖÇÔ¼öÀÎ loop()´Â ºñ¾îÀÖ´Ù. ¿©±â¿¡ ÀÚ½ÅÀÌ ¸¸µå·Á´Â ¼Ò½º¸¦ ³Ö´Â´Ù. ÷ºÎ ÆÄÀÏ #1 : STM32F103C-SSD1306-Test.ino ÷ºÎ ÆÄÀÏ #2 : generic_boot20_pc13.bin (STM32F103C8 ±âÆÇÀÇ ºÎÆ®·Î´õ °³Á¶¿ë) ![]() ![]() ÀÌ ÇÁ·Î±×·¥Àº ¹«·á ¼ÒÇÁÆ®¿þ¾î·Î, ½Åü¿Í Àç»ê »óÀÇ ¾î¶² À§Çè°ú ¼ÕÇØ¸¦ º¸»óÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ÇÁ·Î±×·¥Àº GNU ¹«·á ¼ÒÇÁÆ®¿þ¾î ¹èÆ÷±ÔÁ¤À» µû¸¨´Ï´Ù. ![]() |
![]() ![]() ![]() ![]() | ![]() |
![]() |
![]() |