ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

ะ’ ื“ืขืจ ืขืจืฉื˜ืขืจ ื˜ื™ื™ืœ ืื™ืš ื’ืขืคืจื•ืื•ื•ื˜ ืฆื• ื–ืึธื’ืŸ ืคืขืจื“ืœ ืขืœืขืงื˜ืจืึธื ื™ืง ืขื ื“ื–ืฉืึทื ื™ืจื– ื•ื•ืึธืก ื’ืขื•ื•ืืงืกืŸ ืคึฟื•ืŸ ืึทืจื“ื•ื™ื ืึธ ื”ื•ื™ื–ืŸ ื•ื•ื™ ืื•ืŸ ื•ื•ืึธืก ื–ื™ื™ ื–ืึธืœ ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืึทืฉื™ืฅ ืื•ืŸ ืื ื“ืขืจืข ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืคึฟืึทืจ ืžื™ืงืจืึธืงืึธื ื˜ืจืึธืœืœืขืจืก. ื“ืขืจ ื˜ืขืงืกื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืจื•ื™ืก, ืึทื–ื•ื™ ืื™ืš ืฆื•ื’ืขื–ืื’ื˜ ืฆื• ื•ื•ื™ื™ึทื–ืŸ ืคึผืจืึทืงื˜ื™ืฉ ื‘ื™ื™ืฉืคื™ืœืŸ ืื™ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืึทืจื˜ื™ืงืœ. ื ื•, ืขืจ ื”ืื˜ ื–ื™ืš ื’ืขืจื•ืคืŸ ื ืžื™ืœืšึพืฉืฐืื...

ื”ื™ื™ึทื ื˜ ืื™ืš ื•ื•ืขื˜ ื•ื•ื™ื™ึทื–ืŸ ืื™ืจ ื•ื•ื™ ืฆื• ื ื•ืฆืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ ืฆื• ืกืึธืœื•ื•ืข ื’ืึทื ืฅ ืคึผืฉื•ื˜, ืึธื‘ืขืจ ื ื™ื™ื˜ื™ืง ืคึฟืึทืจ ืคื™ืœืข ืคึผืจืึทื“ื–ืฉืขืงืก, ื˜ืึทืกืงืก ืื•ื™ืฃ STM32 (ื‘ืœื•ื™ ืคึผื™ืœ) ืื•ืŸ STM8 ืงืึทื ื˜ืจืึธื•ืœืขืจื–. ืึทืœืข ื“ืขืžืึธ ืคึผืจืึทื“ื–ืฉืขืงืก ื–ืขื ืขืŸ ื“ืขื“ืึทืงื™ื™ื˜ืึทื“ ืฆื• ืžื™ื™ืŸ ื‘ืึทืœื™ื‘ืกื˜ืข ืœืขื“ืก, ืžื™ืจ ื•ื•ืขืœืŸ ืœื™ื›ื˜ ื–ื™ื™ ืื™ืŸ ื’ืจื•ื™ืก ืงื•ื•ืึทื ื˜ืึทื˜ื™ื–, ืคึฟืึทืจ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื”ืึธื‘ืŸ ืฆื• ื ื•ืฆืŸ ืึทืœืข ืกืึธืจืฅ ืคื•ืŸ ื˜ืฉื™ืงืึทื•ื•ืข ืคึผืขืจื™ืคืขืจืึทืœืก.

ื“ืขืจ ื˜ืขืงืกื˜ ื•ื•ื™ื“ืขืจ ืื™ื– ื’ืขื•ื•ืขืŸ ืจื™ื–ื™ืง, ืึทื–ื•ื™ ืคึฟืึทืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ืก ืื™ืš ืžืึทื›ืŸ ื“ืขื ืื™ื ื”ืึทืœื˜:

STM32 ื‘ืœื•ื™ ืคึผื™ืœ: 16 ืœืขื“ืก ืžื™ื˜ DM634 ืฉืึธืคืขืจ
STM8: ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื–ืขืงืก PWM ืคึผื™ื ืก
STM8: 8 RGB ืœืขื“ืก ืื•ื™ืฃ ื“ืจื™ื™ ืคึผื™ื ืก, ื™ื ื˜ืขืจืึทืคึผืฅ

ืึธืคึผืœื™ื™ืงืขื ื•ื ื’: ืื™ืš ื‘ื™ืŸ ื ื™ืฉื˜ ืึท ื™ื ื–ืฉืขื ื™ืจ, ืื™ืš ื˜ืึธืŸ ื ื™ื˜ ืคืึทืจื”ื™ื˜ืŸ ืฆื• ื”ืึธื‘ืŸ ื˜ื™ืฃ ื•ื•ื™ืกืŸ ืื™ืŸ ืขืœืขืงื˜ืจืึธื ื™ืง, ื“ืขืจ ืึทืจื˜ื™ืงืœ ืื™ื– ื‘ื“ืขื” ืคึฟืึทืจ ืึทืžืึทื˜ืฉืขืจื– ื•ื•ื™ ืžื™ืจ. ืื™ืŸ ืคืึทืงื˜, ืื™ืš ื’ืขื”ืืœื˜ืŸ ื–ื™ืš ืžื™ื˜ ืฆื•ื•ื™ื™ ื™ืึธืจ ืฆื•ืจื™ืง ื•ื•ื™ ื“ืขืจ ืฆื™ืœ ื•ื™ืœืขื. ืื•ื™ื‘ ืขืžืขืฆืขืจ ื•ื•ืึธืœื˜ ื–ืึธื’ืŸ ืžื™ืจ ืึทื– ื“ืึทื˜ืึทืฉื™ืฅ ืื•ื™ืฃ ืึท ืึทื ืคืึทืžื™ืœื™ืขืจ ืฉืคึผืึธืŸ ื–ืขื ืขืŸ ื ื™ืฉื˜ ืกืงืขืจื™ ืฆื• ืœื™ื™ืขื ืขืŸ, ืื™ืš ื•ื•ืึธืœื˜ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืคืืจื‘ืจืื›ื˜ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืฆื™ื™ื˜ ืฆื• ื–ื•ื›ืŸ ืขื˜ืœืขื›ืข ืงืึธื“ ื‘ืจืขืงืœืขืš ืื•ื™ืฃ ื“ื™ ืื™ื ื˜ืขืจื ืขื˜ ืื•ืŸ ื™ื ื•ื•ืขื ื˜ื™ื ื’ ืงืจืึทื˜ืฉื™ื– ืžื™ื˜ ืฉืขืจ ืื•ืŸ ืงืœืขืคึผื™ืง ื˜ื™ื™ืคึผ.

ื“ืขืจ ืคืึธืงื•ืก ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ื– ืื•ื™ืฃ ื“ืึทื˜ืึทืฉื™ืฅ, ื ื™ืฉื˜ ืคึผืจืึทื“ื–ืฉืขืงืก, ืึทื–ื•ื™ ื“ืขืจ ืงืึธื“ ืงืขืŸ ื ื™ืฉื˜ ื–ื™ื™ืŸ ื–ื™ื™ืขืจ ืฆื™ื›ื˜ื™ืง ืื•ืŸ ืึธืคื˜ ืขื ื’. ื“ื™ ืคึผืจืึทื“ื–ืฉืขืงืก ื–ื™ืš ื–ืขื ืขืŸ ื–ื™ื™ืขืจ ืคึผืฉื•ื˜, ื›ืึธื˜ืฉ ืคึผืึทืกื™ืง ืคึฟืึทืจ ืึท ืขืจืฉื˜ืขืจ ื‘ืึทืงืึทื ื˜ืขืจ ืžื™ื˜ ื“ื™ ื ื™ื™ึท ืฉืคึผืึธืŸ.

ืื™ืš ื”ืึธืคึฟืŸ ืึทื– ืžื™ื™ืŸ ืึทืจื˜ื™ืงืœ ื•ื•ืขื˜ ื”ืขืœืคืŸ ืขืžืขืฆืขืจ ืื™ืŸ ืึท ืขื ืœืขืš ื‘ื™ื ืข ืคื•ืŸ โ€‹โ€‹ื˜ื‘ื™ืœื” ืื™ืŸ ื“ื™ ืคืขืจื“ืœ.

STM32

16 ืœืขื“ืก ืžื™ื˜ DM634 ืื•ืŸ SPI

ื ืงืœื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜ ื ื™ืฆืŸ ื‘ืœื• ืคึผื™ืœ (STM32F103C8T6) ืื•ืŸ DM634 ื’ืขืคื™ืจื˜ ืฉืึธืคืขืจ. ื ื™ืฆืŸ ื“ืึทื˜ืึทืฉื™ืฅ, ืžื™ืจ ื•ื•ืขืœืŸ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืฉืึธืคืขืจ, STM IO ืคึผืึธืจืฅ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจ SPI.

ื“ืžืงืกื ื•ืžืงืก

ื˜ื™ื™ื•ื•ืึทืŸ ืฉืคึผืึธืŸ ืžื™ื˜ 16 16-ื‘ื™ืกืœ ืคึผื•ื•ื ืึทื•ื˜ืคึผื•ืฅ, ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึธื ื ืขืงื˜ืขื“ ืื™ืŸ ืงื™ื™ื˜ืŸ. ื“ื™ ื ื™ื“ืขืจื™ืง-ืกื•ืฃ 12-ื‘ื™ืกืœ ืžืึธื“ืขืœ ืื™ื– ื‘ืึทื•ื•ื•ืกื˜ ืคื•ืŸ ืึท ื“ื™ื ืขืจ ืคึผืจื•ื™ืขืงื˜ ืœื™ื™ื˜ืคึผืึทืง. ืื™ืŸ ืื™ื™ืŸ ืžืึธืœ, ื˜ืฉื•ื–ื™ื ื’ ืฆื•ื•ื™ืฉืŸ ื“ื™ DM63x ืื•ืŸ ื“ื™ ื‘ืึทื•ื•ื•ืกื˜ TLC5940, ืื™ืš ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ DM ืคึฟืึทืจ ืขื˜ืœืขื›ืข ืกื™ื‘ื•ืช: 1) TLC ืื•ื™ืฃ Aliexpress ืื™ื– ื‘ืืฉื˜ื™ืžื˜ ืฉื•ื•ื™ื ื“ืœ, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ื ื™ืฉื˜; 2) DM ื”ืื˜ ืึทืŸ ืึธื˜ืึทื ืึทืžืึทืก ืคึผื•ื•ื ืžื™ื˜ ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืึธืคื˜ืงื™ื™ึทื˜ ื’ืขื ืขืจืึทื˜ืึธืจ; 3) ืขืก ืงืขืŸ ื–ื™ื™ืŸ ื’ืขืงื•ื™ืคื˜ ื‘ื™ืœื™ืง ืื™ืŸ ืžืึธืกืงื•ื•ืข, ืืœื ื•ื•ื™ ื•ื•ืืจื˜ืŸ ืคึฟืึทืจ ืึท ืคึผืขืงืœ ืคื•ืŸ ืขืœื™. ืื•ืŸ, ืคื•ืŸ ืงื•ืจืก, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื˜ืฉื™ืงืึทื•ื•ืข ืฆื• ืœืขืจื ืขืŸ ื•ื•ื™ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ืฉืคึผืึธืŸ ื–ื™ืš, ืืœื ื•ื•ื™ ืฆื• ื ื•ืฆืŸ ืึท ืคืึทืจื˜ื™ืง ื‘ื™ื‘ืœื™ืึธื˜ืขืง. ื˜ืฉื™ืคึผืก ื–ืขื ืขืŸ ืื™ืฆื˜ ื“ืขืจ ื”ื•ื™ืคึผื˜ ื“ืขืจืœืื ื’ื˜ ืื™ืŸ ื“ื™ SSOP24 ืคึผืขืงืœ; ื–ื™ื™ ื–ืขื ืขืŸ ื’ืจื™ื ื’ ืฆื• ืกืึทื“ืขืจืŸ ืฆื• ืึท ืึทื“ืึทืคึผื˜ืขืจ.

ื–ื™ื ื˜ ื“ืขืจ ืคืึทื‘ืจื™ืงืึทื ื˜ ืื™ื– ื˜ื™ื™ื•ื•ืึทืŸ, ื“ืึทื˜ืึทืฉื™ื˜ ื“ืขืจ ืฉืคึผืึธืŸ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ื›ื™ื ืขื–ื™ืฉ ืขื ื’ืœื™ืฉ, ื•ื•ืึธืก ืžื™ื˜ืœ ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืฉืคึผืึทืก. ืขืจืฉื˜ืขืจ ืžื™ืจ ืงื•ืงืŸ ืื™ืŸ ื“ื™ ืคึผื™ื ืึธื•ื˜ (ืฉื˜ื™ืคื˜ ืงืฉืจ) ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ืึธืก ืคื•ืก ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ื•ื•ืึธืก ืฆื•, ืื•ืŸ ืึท ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ื“ื™ ืคึผื™ื ืก (ืฉืคึผื™ืœืงืข ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’). 16 ืคึผื™ื ืก:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
DC ืกื™ื ืง ืงื•ื•ืืœืŸ (ืขืคึฟืŸ ืคืœื™ืกืŸ)

ื–ื™ื ืงืขืŸ / ืขืคืขื ืขืŸ-ืคืœื™ืกืŸ ืจืขื–ื•ืœื˜ืึทื˜ - ืึธืคึผืจื™ืŸ; ืžืงื•ืจ ืคื•ืŸ ื™ื ืคืœืึธื•ื™ื ื’ ืงืจืึทื ื˜; ืจืขื–ื•ืœื˜ืึทื˜, ืื™ืŸ ื“ื™ ืึทืงื˜ื™ื•ื• ืฉื˜ืึทื˜, ืงืึธื ื ืขืงื˜ืขื“ ืฆื• ืขืจื“ - ืœืขื“ืก ื–ืขื ืขืŸ ืคืืจื‘ื•ื ื“ืŸ ืฆื• ื“ื™ ืฉืึธืคืขืจ ื“ื•ืจืš ืงืึทื˜ืึธื•ื“ื–. ืขืœืขืงื˜ืจื™ืง, ื“ืึธืก ืื™ื–, ืคื•ืŸ ืงื•ืจืก, ื ื™ืฉื˜ ืึท "ืขืคืขื ืขืŸ ืคืœื™ืกืŸ" (ืขืคืขื ืขืŸ ืคืœื™ืกืŸ), ืึธื‘ืขืจ ืื™ืŸ ื“ืึทื˜ืึทืฉื™ืฅ ื“ืขื ื‘ืึทืฆื™ื™ื›ืขื ื•ื ื’ ืคึฟืึทืจ ืคึผื™ื ืก ืื™ืŸ ืคืœื™ืกืŸ ืžืึธื“ืข ืื™ื– ืึธืคื˜ ื’ืขืคึฟื•ื ืขืŸ.

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืจืขืกื™ืกื˜ืึธืจืก ืฆื•ื•ื™ืฉืŸ REXT ืื•ืŸ GND ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืงืจืึทื ื˜ ื•ื•ืขืจื˜

ื ืจืขืคึฟืขืจืขื ืฅ ืจืขืกื™ืกื˜ืึธืจ ืื™ื– ืื™ื ืกื˜ืึทืœื™ืจืŸ ืฆื•ื•ื™ืฉืŸ ื“ื™ REXT ืฉื˜ื™ืคื˜ ืื•ืŸ ืขืจื“, ื•ื•ืึธืก ืงืึธื ื˜ืจืึธืœืก ื“ื™ ื™ื ืขืจืœืขืš ืงืขื’ื ืฉื˜ืขืœ ืคื•ืŸ ื“ื™ ืึทื•ื˜ืคึผื•ืฅ, ื–ืขืŸ ื“ื™ ื’ืจืึทืคื™ืง ืื•ื™ืฃ ื‘ืœืึทื˜ 9 ืคื•ืŸ ื“ื™ ื“ืึทื˜ืึทืฉื™ื˜. ืื™ืŸ ื“ื™ DM634, ื“ืขื ืงืขื’ื ืฉื˜ืขืœ ืงืขื ืขืŸ ืื•ื™ืš ื–ื™ื™ืŸ ืงืึทื ื˜ืจืึธื•ืœื“ ื“ื•ืจืš ื•ื•ื™ื™ื›ื•ื•ืืจื’, ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ื™ ืงื•ื™ืœืขืœื“ื™ืง ื‘ืจื™ื™ื˜ื ืึทืก (ื’ืœืื‘ืืœืข ื‘ืจื™ื™ื˜ื ืึทืก); ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ื’ื™ื™ืŸ ืื™ืŸ ื“ืขื˜ืึทื™ืœืก ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืื™ืš ื•ื•ืขื˜ ื ืึธืจ ืฉื˜ืขืœืŸ ืึท ืจืขืกื™ืกื˜ืึธืจ ืคื•ืŸ 2.2 - 3 ื›ืึธื•ื ื“ืึธ.

ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ื™ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ืฉืคึผืึธืŸ, ืœืึธืžื™ืจ ืงื•ืงืŸ ืื™ืŸ ื“ื™ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ื“ื™ ืžื™ื˜ืœ ืฆื•ื‘ื™ื ื“:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

ื™ืึธ, ื“ืึธ ืขืก ืื™ื– ื›ื™ื ืขื–ื™ืฉ ืขื ื’ืœื™ืฉ ืื™ืŸ ืึทืœืข ื–ื™ื™ึทืŸ ื›ื‘ื•ื“. ืื™ื‘ืขืจื–ืขืฆืŸ ื“ืขื ืื™ื– ืคึผืจืึธื‘ืœืขืžืึทื˜ื™ืง, ืื™ืจ ืงืขื ืขืŸ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืขืก ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœื˜, ืึธื‘ืขืจ ืขืก ืื™ื– ืืŸ ืื ื“ืขืจ ื•ื•ืขื’ - ืงื•ืง ื•ื•ื™ ื“ื™ ืงืฉืจ ืฆื• ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ ืขื ืœืขืš TLC5940 ืื™ื– ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทืฉื™ื˜:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
... ื‘ืœื•ื™ื– ื“ืจื™ื™ ืคึผื™ื ืก ื–ืขื ืขืŸ ืคืืจืœืื ื’ื˜ ืฆื• ืึทืจื™ื™ึทืŸ ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ ืžื™ื˜ืœ. ื“ื™ ืจื™ื™ื–ื™ื ื’ ื‘ืจืขื’ ืคื•ืŸ ื“ื™ SCLK ืกื™ื’ื ืึทืœ ืฉื™ืคืฅ ื“ื™ ื“ืึทื˜ืŸ ืคื•ืŸ ื“ื™ SIN ืฉื˜ื™ืคื˜ ืฆื• ื“ื™ ื™ื ืขืจืœืขืš ืจืขื’ื™ืกื˜ืจื™ืจืŸ. ื ืึธืš ืึทืœืข ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ืœืึธื•ื“ื™ื“, ืึท ืงื•ืจืฅ ื”ื•ื™ืš XLAT ืกื™ื’ื ืึทืœ ืœืึทื˜ืฉืึทื– ื“ื™ ืกืึทืงื•ื•ืขื ื˜ืฉืึทืœื™ ื˜ืจืึทื ืกืคืขืจื“ ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ ื™ื ืขืจืœืขืš ืจืขื“ื–ืฉื™ืกื˜ืขืจื–. ื™ื ืขืจืœืขืš ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื–ืขื ืขืŸ ื˜ื•ื™ืขืจืŸ ื˜ืจื™ื’ืขืจื“ ื“ื•ืจืš ื“ื™ XLAT ืกื™ื’ื ืึทืœ ืžื“ืจื’ื”. ืึทืœืข ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื˜ืจืึทื ืกืžื™ื˜ื˜ืขื“ ืจื•ื‘ึฟ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ื‘ื™ืกืœ ืขืจืฉื˜ืขืจ.

ืœืึทื˜ืฉ - ืœืึทื˜ืฉ / ืœืึทื˜ืฉ / ืฉืœืึธืก.
ืจื™ื™ื–ื™ื ื’ ื‘ืจืขื’ - ืœื™ื“ื™ื ื’ ื‘ืจืขื’ ืคื•ืŸ ื“ื™ ื“ื•ื™ืคืขืง
MSB ืขืจืฉื˜ืขืจ - ืจื•ื‘ึฟ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง (ืœื™ื ืงืกืžืึธื•ืกื˜) ื‘ื™ืกืœ ืคืึธืจื•ื™ืก.
ืฆื• ื–ื™ื™ื’ืขืจ ื“ืึทื˜ืŸ - ื™ื‘ืขืจืฉื™ืงืŸ ื“ืึทื˜ืŸ ืกืึทืงื•ื•ืขื ื˜ืฉืึทืœื™ (ื‘ื™ืกืœ ื‘ื™ื™ ื‘ื™ืกืœ).

ื•ื•ืึธืจื˜ ืœืึทื˜ืฉ ืื™ื– ืึธืคื˜ ื’ืขืคื•ื ืขืŸ ืื™ืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืคึฟืึทืจ ื˜ืฉื™ืคึผืก ืื•ืŸ ืื™ื– ืื™ื‘ืขืจื’ืขื–ืขืฆื˜ ืื™ืŸ ืคืึทืจืฉื™ื“ืŸ ื•ื•ืขื’ืŸ, ืึทื–ื•ื™ ืคึฟืึทืจ ื“ื™ ืฆื•ืœื™ื‘ ืคื•ืŸ ืคืืจืฉื˜ืื ื“ ืื™ืš ื•ื•ืขื˜ ืœืึธื–ืŸ ื–ื™ืš

ืึท ืงืœื™ื™ืŸ ื‘ื™ืœื“ื•ื ื’ืงืจื™ื™ื– ืคึผืจืึธื’ืจืึทืื“ื™ ื’ืขืคื™ืจื˜ ืฉืึธืคืขืจ ืื™ื– ื™ืกืขื ืฉืึทืœื™ ืึท ื™ื‘ืขืจืจื•ืง ืจืขื’ื™ืกื˜ืจื™ืจืŸ. "ืฉื™ืคื˜" (ื™ื‘ืขืจืจื•ืง) ืื™ืŸ ื“ืขื ื ืึธืžืขืŸ - ื‘ื™ื˜ื•ื•ื™ื™ื– ื‘ืึทื•ื•ืขื’ื•ื ื’ ืคื•ืŸ ื“ืึทื˜ืŸ ื™ืŸ ื“ื™ ืžื™ื˜ืœ: ื™ืขื“ืขืจ ื ื™ื™ึท ื‘ื™ืกืœ ืฉื˜ื•ืคึผืŸ ื™ืŸ ืคึผื•ืฉื™ื– ื“ื™ ื’ืื ืฆืข ืงื™ื™ื˜ ืคืึธืจื•ื™ืก ืื™ืŸ ืคืจืึธื ื˜ ืคื•ืŸ ืขืก. ื–ื™ื ื˜ ืงื™ื™ืŸ ืื™ื™ื ืขืจ ื•ื•ื™ืœ ืฆื• ืึธื‘ืกืขืจื•ื•ื™ืจืŸ ื›ืึทืึธื˜ื™ืฉ ื‘ืœื™ื ืงื™ื ื’ ืคื•ืŸ ื“ื™ ืœืขื“ืก ื‘ืขืฉืึทืก ื“ื™ ื™ื‘ืขืจืจื•ืง, ื“ืขืจ ืคึผืจืึธืฆืขืก ื ืขืžื˜ ืึธืจื˜ ืื™ืŸ ื‘ืึทืคืขืจ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ืืคื’ืขืฉื™ื™ื“ื˜ ืคื•ืŸ ื“ื™ ืึทืจื‘ืขื˜ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื“ื•ืจืš ืึท ื“ืึทืžืคึผืขืจ (ืœืึทื˜ืฉ) ืื™ื– ืึท ืžื™ืŸ ืคื•ืŸ ื•ื•ืืจื˜ืŸ ืฆื™ืžืขืจ ื•ื•ื• ื“ื™ ื‘ื™ื˜ืŸ ื–ืขื ืขืŸ ืขืจื™ื™ื ื“ื–ืฉื“ ืื™ืŸ ื“ืขืจ ื’ืขื•ื•ืืœื˜ ืกื™ืงื•ื•ืึทื ืก. ื•ื•ืขืŸ ืึทืœืฅ ืื™ื– ื’ืจื™ื™ื˜, ื“ื™ ืœืึธื“ืŸ ืขืคืขื ืขืŸ ืื•ืŸ ื“ื™ ื‘ื™ื˜ืŸ ื’ื™ื™ืŸ ืฆื• ืึทืจื‘ืขื˜ืŸ, ืจื™ืคึผืœื™ื™ืกื™ื ื’ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืคึผืขืงืœ. ื•ื•ืึธืจื˜ ืœืึทื˜ืฉ ืื™ืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืคึฟืึทืจ ืžื™ืงืจืึธืกื™ืจืงื•ื™ืฅ ื›ึผืžืขื˜ ืฉื˜ืขื ื“ื™ืง ื™ืžืคึผืœื™ื™ื– ืึทื–ืึท ืึท ื“ืึทืžืคึผืขืจ, ืงื™ื™ืŸ ืขื ื™ืŸ ืื™ืŸ ื•ื•ืึธืก ืงืึทืžื‘ืึทื ื™ื™ืฉืึทื ื– ืขืก ืื™ื– ื’ืขื ื™ืฆื˜.

ืึทื–ื•ื™, ื“ืึทื˜ืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืฆื• ื“ื™ DM634 ืื™ื– ื’ืขืคื™ืจื˜ ืื•ื™ืก ื•ื•ื™ ื“ืึธืก: ืฉื˜ืขืœืŸ ื“ื™ ื“ืึทื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืฆื• ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ื™ ืžืขืจืกื˜ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ื‘ื™ืกืœ ืคื•ืŸ ื“ื™ ื•ื•ื™ื™ึทื˜ ื’ืขืคื™ืจื˜, ืฆื™ืขืŸ ื“ื™ DCK ืึทืจื•ื™ืฃ ืื•ืŸ ืึทืจืึธืคึผ; ืฉื˜ืขืœืŸ ื“ื™ ื“ืึทื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืฆื• ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ื™ ื•ื•ื™ื™ึทื˜ืขืจ ื‘ื™ืกืœ, ืฆื™ืขืŸ DCK; ืื•ืŸ ืึทื–ื•ื™ ืื•ื™ืฃ ื‘ื™ื– ืึทืœืข ื‘ื™ื˜ืŸ ื–ืขื ืขืŸ ื˜ืจืึทื ืกืžื™ื˜ื˜ืขื“ (ืื™ื™ื ื’ืขืงืœืืคื˜), ื ืึธืš ื•ื•ืึธืก ืžื™ืจ ืฆื™ืขืŸ LAT. ื“ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืžืึทื ื™ื•ืึทืœื™ (ื‘ื™ืกืœ-ืงืœืึทืคึผ), ืึธื‘ืขืจ ืขืก ืื™ื– ื‘ืขืกืขืจ ืฆื• ื ื•ืฆืŸ ืึท SPI ืฆื•ื‘ื™ื ื“ ื•ื•ืึธืก ืื™ื– ืกืคึผืขืฆื™ืขืœ ื˜ื™ื™ืœืขืจื“ ืคึฟืึทืจ ื“ืขื, ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ื“ืขืจืœืื ื’ื˜ ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ STM32 ืื™ืŸ ืฆื•ื•ื™ื™ ืขืงื–ืขืžืคืœืืจืŸ.

ื‘ืœื•ื™ ืคึผื™ืœ STM32F103

ื™ื ื˜ืจืึทื“ืึทืงื˜ืขืจื™: STM32 ืงืึทื ื˜ืจืึธื•ืœืขืจื– ื–ืขื ืขืŸ ืคื™ืœ ืžืขืจ ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ื•ื•ื™ Atmega328 ื•ื•ื™ ื–ื™ื™ ืงืขืŸ ื•ื™ืกืงื•ืžืขืŸ ืกืงืขืจื™. ื“ืขืจืฆื•, ืคึฟืึทืจ ืขื ืขืจื’ื™ืข ืฉืคึผืึธืจืŸ ืกื™ื‘ื•ืช, ื›ึผืžืขื˜ ืึทืœืข ืคึผืขืจื™ืคืขืจืึทืœืก ื–ืขื ืขืŸ ืื•ื™ืกื’ืขื“ืจื™ื™ื˜ ืึทื•ื•ืขืง ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘, ืื•ืŸ ื“ื™ ื–ื™ื™ื’ืขืจ ืึธืคื˜ืงื™ื™ึทื˜ ืื™ื– 8 ืžื”ื– ืคึฟื•ืŸ ื“ื™ ื™ื ืขืจืœืขืš ืžืงื•ืจ. ืฆื•ืž ื’ืœื™ืง, STM ืคึผืจืึธื•ื’ืจืึทืžืขืจื– ื’ืขืฉืจื™ื‘ืŸ ืงืึธื“ ื•ื•ืึธืก ื‘ืจืขื ื’ื˜ ื“ื™ ืฉืคึผืึธืŸ ืฆื• ื“ื™ "ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื“" 72 MHz, ืื•ืŸ ื“ื™ ืžื—ื‘ืจื™ื ืคื•ืŸ ืึทืœืข ื“ื™ IDEs ื•ื•ืึธืก ืื™ืš ื•ื•ื™ืกืŸ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืขืก ืื™ืŸ ื“ื™ ื™ื ื™ื˜ื™ืึทืœื™ื–ืึทื˜ื™ืึธืŸ ืคึผืจืึธืฆืขื“ื•ืจ, ืึทื–ื•ื™ ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ื’ืขืจ (ืึธื‘ืขืจ ืื™ืจ ืงืขื ืขืŸ ืื•ื™ื‘ ืื™ืจ ื˜ืึทืงืข ื•ื•ื™ืœืŸ). ืื‘ืขืจ ืื™ืจ ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืฆื• ืงืขืจ ืื•ื™ืฃ ื“ื™ ืคึผืขืจื™ืคืขืจืึทืœืก.

ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ: ื‘ืœื•ื™ ืคึผื™ืœ ืื™ื– ื™ืงื•ื•ื™ืคึผื˜ ืžื™ื˜ ื“ื™ ืคืึธืœืงืก STM32F103C8T6 ืฉืคึผืึธืŸ, ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ื ื•ืฆื™ืง ื“ืึธืงื•ืžืขื ื˜ืŸ ืคึฟืึทืจ ืขืก:

ืื™ืŸ ื“ื™ ื“ืึทื˜ืŸ ื‘ืœืึทื˜ ืžื™ืจ ืงืขืŸ ื–ื™ื™ืŸ ืื™ื ื˜ืขืจืขืกื™ืจื˜ ืื™ืŸ:

  • ืคึผื™ื ืึธื•ืฅ - ืฉืคึผืึธืŸ ืคึผื™ื ืึธื•ืฅ - ืื™ืŸ ืคืึทืœ ืžื™ืจ ื‘ืึทืฉืœื™ืกืŸ ืฆื• ืžืึทื›ืŸ ื“ื™ ื‘ืึธืจื“ื– ื–ื™ืš;
  • ื–ื›ึผืจื•ืŸ ืžืึทืคึผืข - ื–ื›ึผืจื•ืŸ ืžืึทืคึผืข ืคึฟืึทืจ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืฉืคึผืึธืŸ. ื“ื™ ืจืขืคืขืจืขื ืฅ ืžืึทื ื•ืึทืœ ื”ืื˜ ืึท ืžืึทืคึผืข ืคึฟืึทืจ ื“ื™ ื’ืื ืฆืข ืฉื•ืจื”, ืื•ืŸ ืขืก ื“ืขืจืžืื ื˜ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื•ื•ืึธืก ืื•ื ื“ื–ืขืจ ื˜ื•ื˜ ื ื™ืฉื˜ ื”ืึธื‘ืŸ.
  • ืฉื˜ื™ืคื˜ ื“ืขืคึฟื™ื ื™ืฆื™ืข ื˜ื™ืฉ - ืœื™ืกื˜ื™ื ื’ ื“ื™ ื”ื•ื™ืคึผื˜ ืื•ืŸ ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ืคืึทื ื’ืงืฉืึทื ื– ืคื•ืŸ ืคึผื™ื ืก; ืคึฟืึทืจ ื“ื™ "ื‘ืœื•ื™ ืคึผื™ืœ" ืื™ืจ ืงืขื ืขืŸ ื’ืขืคึฟื™ื ืขืŸ ืžืขืจ ื‘ืึทืงื•ื•ืขื ื‘ื™ืœื“ืขืจ ืื•ื™ืฃ ื“ื™ ืื™ื ื˜ืขืจื ืขื˜ ืžื™ื˜ ืึท ืจืฉื™ืžื” ืคื•ืŸ ืคึผื™ื ืก ืื•ืŸ ื–ื™ื™ืขืจ ืคืึทื ื’ืงืฉืึทื ื–. ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ืžื™ื“ Google ื‘ืœื• ืคึผื™ืœ ืคึผื™ื ืึธื•ื˜ ืื•ืŸ ื”ืึทืœื˜ืŸ ื“ืขื ื‘ื™ืœื“ ืื™ืŸ ื”ืึทื ื˜:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ื .ื‘.: ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื˜ืขื•ืช ืื™ืŸ ื“ื™ ื‘ื™ืœื“ ืคื•ืŸ ื“ื™ ืื™ื ื˜ืขืจื ืขื˜, ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ืืžืขืจืงื˜ ืื™ืŸ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ, ื“ืึทื ืงืขืŸ ื“ื™ืจ ืคึฟืึทืจ ื“ืขื. ื“ื™ ื‘ื™ืœื“ ืื™ื– ืจื™ืคึผืœื™ื™ืกื˜, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ืึท ืœืขืงืฆื™ืข - ืขืก ืื™ื– ื‘ืขืกืขืจ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื ื™ืฉื˜ ืคึฟื•ืŸ ื“ืึทื˜ืึทืฉื™ืฅ.

ืžื™ืจ ื‘ืึทื–ื™ื™ึทื˜ื™ืงืŸ ื“ื™ ื“ืึทื˜ืึทืฉื™ื˜, ืขืคืขื ืขืŸ ื“ื™ ืจืขืคืขืจืขื ืฅ ืžืึทื ื•ืึทืœ, ืื•ืŸ ืคึฟื•ืŸ ืื™ืฆื˜ ืื•ื™ืฃ ืžื™ืจ ื ื•ืฆืŸ ืขืก ื‘ืœื•ื™ื–.
ืคึผืจืึธืฆืขื“ื•ืจ: ืžื™ืจ ื”ืึทื ื“ืœืขืŸ ืžื™ื˜ ื ืึธืจืžืึทืœ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ / ืจืขื–ื•ืœื˜ืึทื˜, ืงืึทื ืคื™ื’ื™ืขืจ ืกืคึผื™, ืงืขืจ ืื•ื™ืฃ ื“ื™ ื ื™ื™ื˜ื™ืง ืคึผืขืจื™ืคืขืจืึทืœืก.

ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืจืขื–ื•ืœื˜ืึทื˜

ืื•ื™ืฃ ื“ื™ Atmega328, ืื™ืš / ืึธ ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“ ื’ืึธืจ ืคึผืฉื•ื˜, ื•ื•ืึธืก ืื™ื– ื•ื•ืึธืก ื“ื™ ื–ืขื˜ ืคื•ืŸ STM32 ืึธืคึผืฆื™ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึทื ืคื™ื•ื–ื™ื ื’. ืื™ืฆื˜ ืžื™ืจ ื ืึธืจ ื“ืึทืจืคึฟืŸ ืงืึทื ืงืœื•ื–ืฉืึทื ื–, ืึธื‘ืขืจ ืืคื™ืœื• ื“ื™ ื”ืึธื‘ืŸ ืคื™ืจ ืึธืคึผืฆื™ืขืก:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ืขืคืขื ืขืŸ ืคืœื™ืกืŸ, ืฉื˜ื•ืคึผืŸ-ืฆื™ืขืŸ, ืื ื“ืขืจ ื‘ืจื™ืจื” ืฉื˜ื•ืคึผืŸ-ืฆื™ืขืŸ, ืื ื“ืขืจ ื‘ืจื™ืจื” ืขืคืขื ืขืŸ ืคืœื™ืกืŸ

"ืฉื˜ื•ืคึผืŸ" (ืฉื˜ื•ืคึผืŸ-ืฆื™ืขืŸ) ืื™ื– ื“ื™ ื’ืขื•ื•ื™ื™ื ื˜ืœืขืš ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ื“ื™ Arduino, ื“ื™ ืฉื˜ื™ืคื˜ ืงืขื ืขืŸ ื ืขืžืขืŸ ื“ื™ ื•ื•ืขืจื˜ ืึธื“ืขืจ ื”ื•ื™ืš ืึธื“ืขืจ ื ื™ื“ืขืจื™ืง. ืื‘ืขืจ ืžื™ื˜ "ืขืคืขื ืขืŸ ืคืœื™ืกืŸ" ืขืก ื–ืขื ืขืŸ ืฉื•ื•ืขืจื™ืงื™ื™ื˜ืŸ, ื›ืึธื˜ืฉ ืื™ืŸ ืคืึทืงื˜ ืึทืœืฅ ืื™ื– ืคึผืฉื•ื˜ ื“ืึธ:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ืจืขื–ื•ืœื˜ืึทื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ / ื•ื•ืขืŸ ื“ื™ ืคึผืึธืจื˜ ืื™ื– ืึทืกื™ื™ื ื“ ืฆื• ืจืขื–ื•ืœื˜ืึทื˜: / ืจืขื–ื•ืœื˜ืึทื˜ ื‘ืึทืคืขืจ ืขื ื™ื™ื‘ืึทืœื“: / - ืขืคืขื ืขืŸ ืคืœื™ืกืŸ ืžืึธื“ืข: "0" ืื™ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ื™ื ื™ื™ื‘ืึทืœื– N-MOS, "1" ืื™ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืœืึธื–ืŸ ื“ื™ ืคึผืึธืจื˜ ืื™ืŸ Hi-Z ืžืึธื“ืข ( P-MOS ืื™ื– ื ื™ืฉื˜ ืึทืงื˜ื™ื•ื•ื™ื™ื˜ื™ื“) / - ืฉื˜ื•ืคึผืŸ-ืฆื™ืขืŸ ืžืึธื“ืข: "0" ืื™ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืึทืงื˜ืึทื•ื•ื™ื™ืฅ N-MOS, "1" ืื™ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืึทืงื˜ืึทื•ื•ื™ื™ืฅ P-MOS.

ืึทืœืข ื“ื™ ื—ื™ืœื•ืง ืฆื•ื•ื™ืฉืŸ ืขืคืขื ืขืŸ ืคืœื™ืกืŸ (ืขืคืขื ืขืŸ ืคืœื™ืกืŸ) ืคื•ืŸ "ืฉื˜ื•ืคึผืŸ-ืฆื™ืขืŸ" (ืฉื˜ื•ืคึผืŸ-ืฆื™ืขืŸ) ืื™ื– ืึทื– ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืฉื˜ื™ืคื˜ ืงืขื ืขืŸ ื ื™ืฉื˜ ืึธื ื ืขืžืขืŸ ื“ื™ HIGH ืฉื˜ืึทื˜: ื•ื•ืขืŸ ืฉืจื™ื™ื‘ืŸ ืื™ื™ื ืขืจ ืฆื• ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืจืขื’ื™ืกื˜ืจื™ืจืŸ, ืขืก ื’ื™ื™ื˜ ืื™ืŸ ื”ื•ื™ืš ืงืขื’ื ืฉื˜ืขืœ ืžืึธื“ืข (ื”ื•ื™ืš ื™ืžืคึผื™ื“ืึทื ืก, ื”ื™-ื–). ื•ื•ืขืŸ ืฉืจื™ื™ื‘ืŸ ื ื•ืœ, ื“ื™ ืฉื˜ื™ืคื˜ ื‘ื™ื›ื™ื™ื•ื•ื– ื“ื™ ื–ืขืœื‘ืข ืื™ืŸ ื‘ื™ื™ื“ืข ืžืึธื“ืขืก, ืกื™ื™ ืœืึทื“ื–ืฉื™ืงืœื™ ืื•ืŸ ืขืœืขืงื˜ืจื™ืง.

ืื™ืŸ ื ืึธืจืžืึทืœ ืจืขื–ื•ืœื˜ืึทื˜ ืžืึธื“ืข, ื“ื™ ืฉื˜ื™ืคื˜ ืคืฉื•ื˜ ื‘ืจืึธื“ืงืึทืกืฅ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืจืขื’ื™ืกื˜ืจื™ืจืŸ. ืื™ืŸ ื“ื™ "ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื•" ืขืก ืื™ื– ืงืึทื ื˜ืจืึธื•ืœื“ ื“ื•ืจืš ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืคึผืขืจื™ืคืขืจืึทืœืก (ื–ืขืŸ 9.1.4):

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ืื•ื™ื‘ ืึท ืคึผืึธืจื˜ ื‘ื™ืกืœ ืื™ื– ืงืึทื ืคื™ื’ื™ืขืจื“ ื•ื•ื™ ืึท ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ืคื•ื ืงืฆื™ืข ืฉื˜ื™ืคื˜, ื“ื™ ืฉื˜ื™ืคื˜ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืื™ื– ืคืึทืจืงืจื™ืคึผืœื˜ ืื•ืŸ ื“ื™ ืฉื˜ื™ืคื˜ ืื™ื– ืงืึธื ื ืขืงื˜ืขื“ ืฆื• ื“ื™ ืคึผืขืจื™ืคืขืจืึทืœ ืฉื˜ื™ืคื˜.

ืึทืœื˜ืขืจื ืึทื˜ื™ื•ื•ืข ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคื•ืŸ ื™ืขื“ืขืจ ืฉืคึผื™ืœืงืข ืื™ื– ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ ืฉืคึผื™ืœืงืข ื“ืขืคื™ื ื™ื˜ื™ืึธื ืก ื“ื™ ื“ืึทื˜ืึทืฉื™ื˜ ืื™ื– ืื•ื™ืฃ ื“ื™ ื“ืึทื•ื ืœืึธื•ื“ื™ื“ ื‘ื™ืœื“. ืฆื• ื“ื™ ืงืฉื™ื ืคื•ืŸ ื•ื•ืึธืก ืฆื• ื˜ืึธืŸ ืื•ื™ื‘ ืึท ืฉื˜ื™ืคื˜ ื”ืื˜ ืขื˜ืœืขื›ืข ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ืคืึทื ื’ืงืฉืึทื ื–, ื“ื™ ืขื ื˜ืคืขืจ ืื™ื– ื’ืขื’ืขื‘ืŸ ื“ื•ืจืš ืึท ืคืึธืึธื˜ื ืึธื˜ืข ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทืฉื™ื˜:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ืื•ื™ื‘ ืงื™ื™ืคืœ ืคึผืขืจื™ืคืขืจืึทืœืก ื ื•ืฆืŸ ื“ื™ ื–ืขืœื‘ืข ืฉื˜ื™ืคื˜, ืฆื• ื•ื™ืกืžื™ื™ื“ืŸ ืงืึธื ืคืœื™ืงื˜ ืฆื•ื•ื™ืฉืŸ ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ืคืึทื ื’ืงืฉืึทื ื–, ื‘ืœื•ื™ื– ืื™ื™ืŸ ืคึผืขืจื™ืคืขืจืึทืœ ื–ืึธืœ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืื™ืŸ ืึท ืฆื™ื™ื˜, ื˜ืึทื’ืึทืœื“ ืžื™ื˜ ื“ื™ ืคึผืขืจื™ืคืขืจืึทืœ ื–ื™ื™ื’ืขืจ ื’ืขื‘ืŸ ื‘ื™ืกืœ (ืื™ืŸ ื“ื™ ืฆื•ื ืขืžืขืŸ RCC ืจืขื’ื™ืกื˜ืจื™ืจืŸ).

ืฆื•ื ืกื•ืฃ, ืคึผื™ื ืก ืื™ืŸ ืจืขื–ื•ืœื˜ืึทื˜ ืžืึธื“ืข ืื•ื™ืš ื”ืึธื‘ืŸ ืึท ื–ื™ื™ื’ืขืจ ื’ื™ื›ืงื™ื™ึทื˜. ื“ืึธืก ืื™ื– ืืŸ ืื ื“ืขืจ ืขื ืขืจื’ื™ืข ืฉืคึผืึธืจืŸ ืฉื˜ืจื™ืš; ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ืžื™ืจ ื ืึธืจ ืฉื˜ืขืœืŸ ืขืก ืฆื• ืžืึทืงืกื™ืžื•ื ืื•ืŸ ืคืึทืจื’ืขืกืŸ ืขืก.

ืึทื–ื•ื™: ืžื™ืจ ื ื•ืฆืŸ SPI, ื•ื•ืึธืก ืžื™ื˜ืœ ืึทื– ืฆื•ื•ื™ื™ ืคึผื™ื ืก (ืžื™ื˜ ื“ืึทื˜ืŸ ืื•ืŸ ืžื™ื˜ ืึท ื–ื™ื™ื’ืขืจ ืกื™ื’ื ืึทืœ) ื–ืึธืœ ื–ื™ื™ืŸ "ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ืฉื˜ื•ืคึผ-ืฆื™ืขืŸ ืคื•ื ืงืฆื™ืข", ืื•ืŸ ืืŸ ืื ื“ืขืจ ืื™ื™ื ืขืจ (LAT) ื–ืึธืœ ื–ื™ื™ืŸ "ืจืขื’ื•ืœืขืจ ืฉื˜ื•ืคึผ-ืฆื™ืขืŸ". ืึธื‘ืขืจ ืื™ื™ื“ืขืจ ื–ื™ื™ ื‘ืึทืฉื˜ื™ืžืขืŸ, ืœืึธื–ืŸ ืื•ื ื“ื– ื”ืึทื ื“ืœืขืŸ ืžื™ื˜ SPI.

ืกืคึผื™

ืืŸ ืื ื“ืขืจ ืงืœื™ื™ืŸ ื‘ื™ืœื“ื•ื ื’ืงืจื™ื™ื– ืคึผืจืึธื’ืจืึทื

SPI ืึธื“ืขืจ Serial Peripheral Interface (ืกื™ืจื™ืึทืœ ืคึผืขืจื™ืคืขืจืึทืœ ืฆื•ื‘ื™ื ื“) ืื™ื– ืึท ืคึผืฉื•ื˜ ืื•ืŸ ื–ื™ื™ืขืจ ืขืคืขืงื˜ื™ื•ื• ืฆื•ื‘ื™ื ื“ ืคึฟืึทืจ ืงืึทื ืขืงื˜ื™ื ื’ ืึท MK ืžื™ื˜ ืื ื“ืขืจืข MKs ืื•ืŸ ื“ื™ ืึทืจื•ื™ืก ื•ื•ืขืœื˜ ื‘ื›ืœืœ. ื“ืขืจ ืคึผืจื™ื ืฆื™ืคึผ ืคื•ืŸ ื–ื™ื™ึทืŸ ืึธืคึผืขืจืึทืฆื™ืข ืื™ื– ืฉื•ื™ืŸ ื“ื™ืกืงืจื™ื™ื‘ื“ ืื•ื™ื‘ืŸ, ื•ื•ื• ื•ื•ืขื’ืŸ ื“ื™ ื›ื™ื ืขื–ื™ืฉ ื’ืขืคื™ืจื˜ ืฉืึธืคืขืจ (ืื™ืŸ ื“ืขืจ ื“ืขืจืžืึธื ืขืŸ ืžืึทื ื•ืึทืœ, ื–ืขืŸ ืึธืคึผื˜ื™ื™ืœื•ื ื’ 25). SPI ืงืขื ืขืŸ ืึทืจื‘ืขื˜ืŸ ืื™ืŸ ื‘ืขืœ ("ื‘ืขืœ") ืื•ืŸ ืฉืงืœืึทืฃ ("ืฉืงืœืึทืฃ") ืžืึธื“ืข. SPI ื”ืื˜ ืคื™ืจ ื™ืงืขืจื“ื™ืง ื˜ืฉืึทื ืึทืœื–, ืคื•ืŸ ื•ื•ืึธืก ื ื™ื˜ ืึทืœืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜:

  • MOSI, ื‘ืขืœ ืจืขื–ื•ืœื˜ืึทื˜ / ืฉืงืœืึทืฃ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘: ื“ืขื ืฉื˜ื™ืคื˜ ื˜ืจืึทื ืกืžื™ื˜ื˜ ื“ืึทื˜ืŸ ืื™ืŸ ื‘ืขืœ ืžืึธื“ืข ืื•ืŸ ื ืขืžื˜ ื“ืึทื˜ืŸ ืื™ืŸ ืฉืงืœืึทืฃ ืžืึธื“ืข;
  • ืžื™ืกืึธ, ื‘ืขืœ ื™ื ืคึผื•ื˜ / ืฉืงืœืึทืฃ ืจืขื–ื•ืœื˜ืึทื˜: ืื•ื™ืฃ ื“ื™ ืคืึทืจืงืขืจื˜, ืขืก ื ืขืžื˜ ืื™ืŸ ื“ื™ ื‘ืขืœ, ืื•ืŸ ื˜ืจืึทื ืกืžื™ื˜ื˜ ืื™ืŸ ื“ื™ ืฉืงืœืึทืฃ;
  • SCK, ืกื™ืจื™ืึทืœ ื–ื™ื™ื’ืขืจ: ืฉื˜ืขืœื˜ ื“ื™ ืึธืคื˜ืงื™ื™ึทื˜ ืคื•ืŸ ื“ืึทื˜ืŸ ื˜ืจืึทื ืกืžื™ืกื™ืข ืื™ืŸ ื“ื™ ื‘ืขืœ ืึธื“ืขืจ ื ืขืžื˜ ืึท ื–ื™ื™ื’ืขืจ ืกื™ื’ื ืึทืœ ืื™ืŸ ื“ื™ ืฉืงืœืึทืฃ. ื™ืกืขื ืฉืึทืœื™ ื”ื™ื˜ื˜ื™ื ื’ ื‘ื™ืฅ;
  • ืกืก, ืฉืงืœืึทืฃ ืกืขืœืขืงื˜: ืžื™ื˜ ื“ื™ ื”ื™ืœืฃ ืคื•ืŸ ื“ืขื ืงืึทื ืึทืœ, ื“ืขืจ ืฉืงืœืึทืฃ ื•ื•ื™ื™ืกื˜ ืึทื– ืขืคึผืขืก ืื™ื– ื’ืขื•ื•ืืœื˜ ืคื•ืŸ ืื™ื. ืื•ื™ืฃ STM32 ืขืก ืื™ื– ื’ืขืจื•ืคืŸ NSS, ื•ื•ื• N = ื ืขื’ืึทื˜ื™ื•ื•, ื“.ื”. ื“ืขืจ ืงืึธื ื˜ืจืึธืœืœืขืจ ื•ื•ืขืจื˜ ืึท ืฉืงืœืึทืฃ ืื•ื™ื‘ ืขืก ืื™ื– ืขืจื“ ืื™ืŸ ื“ืขื ืงืึทื ืึทืœ. ืขืก ืงืึทืžื‘ื™ื™ื ื– ื’ืขื–ื•ื ื˜ ืžื™ื˜ ื“ื™ Open Drain Output ืžืึธื“ืข, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ืืŸ ืื ื“ืขืจ ื’ืขืฉื™ื›ื˜ืข.

ื•ื•ื™ ืึทืœืฅ ืึทื ื“ืขืจืฉ, SPI ืื•ื™ืฃ STM32 ืื™ื– ืจื™ื™ึทืš ืื™ืŸ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™, ื•ื•ืึธืก ืžืื›ื˜ ืขืก ืขืคึผืขืก ืฉื•ื•ืขืจ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืขืก ืงืขื ืขืŸ ืึทืจื‘ืขื˜ืŸ ื ื™ื˜ ื‘ืœื•ื™ื– ืžื™ื˜ SPI, ืึธื‘ืขืจ ืื•ื™ืš ืžื™ื˜ ืึท I2S ืฆื•ื‘ื™ื ื“, ืื•ืŸ ืื™ืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ, ื–ื™ื™ืขืจ ื“ื™ืกืงืจื™ืคึผืฉืึทื ื– ื–ืขื ืขืŸ ื’ืขืžื™ืฉื˜, ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ืฉื ื™ื™ึทื“ืŸ ืึทื•ื•ืขืง ื“ื™ ื•ื™ื“ืขืคื“ื™ืง ืื™ืŸ ืึท ื‘ื™ื™ึทืฆื™ื™ึทื˜ื™ืง ืฉื˜ื™ื™ื’ืขืจ. ืื•ื ื“ื–ืขืจ ืึทืจื‘ืขื˜ ืื™ื– ื’ืึธืจ ืคึผืฉื•ื˜: ืžื™ืจ ื ืึธืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉื™ืงืŸ ื“ืึทื˜ืŸ ื‘ืœื•ื™ื– ืžื™ื˜ MOSI ืื•ืŸ SCK. ืžื™ืจ ื’ื™ื™ืŸ ืฆื• ืึธืคึผื˜ื™ื™ืœื•ื ื’ 25.3.4 (ื”ืึทืœื‘-ื“ื•ืคึผืœืขืงืก ืงืึธืžื•ื ื™ืงืึทืฆื™ืข, ื”ืึทืœื‘-ื“ื•ืคึผืœืขืงืก ืงืึธืžื•ื ื™ืงืึทืฆื™ืข), ื•ื•ื• ืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ 1 ื–ื™ื™ื’ืขืจ ืื•ืŸ 1 ื•ื ื™ื“ื™ืจืขืงื˜ื™ืึธื ืึทืœ ื“ืึทื˜ืŸ ื“ืจืึธื˜ (1 ื–ื™ื™ื’ืขืจ ืกื™ื’ื ืึทืœ ืื•ืŸ 1 ื•ื ื™ื“ื™ืจืขืงื˜ื™ืึธื ืึทืœ ื“ืึทื˜ืŸ ื˜ื™ื™ึทืš):

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ืื™ืŸ ื“ืขื ืžืึธื“ืข, ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื ื™ืฆื˜ SPI ืื™ืŸ ื˜ืจืึทื ืกืžื™ืกื™ืข-ื‘ืœื•ื™ื– ืึธื“ืขืจ ื‘ืึทืงื•ืžืขืŸ-ื‘ืœื•ื™ื– ืžืึธื“ืข. / ื˜ืจืึทื ืกืžื™ื˜-ื‘ืœื•ื™ื– ืžืึธื“ืข ืื™ื– ืขื ืœืขืš ืฆื• ื“ื•ืคึผืœืขืงืก ืžืึธื“ืข: ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื˜ืจืึทื ืกืžื™ื˜ื˜ืขื“ ืื•ื™ืฃ ื“ื™ ื˜ืจืึทื ืกืžื™ืกื™ืข ืฉื˜ื™ืคื˜ (MOSI ืื™ืŸ ื‘ืขืœ ืžืึธื“ืข ืึธื“ืขืจ ืžื™ืกืึธ ืื™ืŸ ืฉืงืœืึทืฃ ืžืึธื“ืข), ืื•ืŸ ื“ื™ ื‘ืึทืงื•ืžืขืŸ ืฉื˜ื™ืคื˜ (MISO ืึธื“ืขืจ MOSI ืจื™ืกืคึผืขืงื˜ื™ื•ื•ืœื™) ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื•ื•ื™ ืึท ืจืขื’ื•ืœืขืจ ื™ / ืึธ ืฉื˜ื™ืคื˜ . ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื ืึธืจ ื“ืึทืจืฃ ืฆื• ืื™ื’ื ืึธืจื™ืจืŸ ื“ื™ Rx ื‘ืึทืคืขืจ (ืื•ื™ื‘ ืขืก ืื™ื– ืœื™ื™ืขื ืขืŸ, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืงื™ื™ืŸ ื˜ืจืึทื ืกืคืขืจื“ ื“ืึทื˜ืŸ ื“ืึธืจื˜).

ื’ืจื•ื™ืก, ื“ื™ MISO ืฉื˜ื™ืคื˜ ืื™ื– ืคืจื™ื™, ืœืึธื–ืŸ ืื•ื ื“ื– ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ LAT ืกื™ื’ื ืึทืœ ืฆื• ืื™ื. ืœืึธืžื™ืจ ืงื•ืงืŸ ืื™ืŸ Slave Select, ื•ื•ืึธืก ืื•ื™ืฃ ื“ื™ STM32 ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึทื ื˜ืจืึธื•ืœื“ ืคึผืจืึธื’ืจืึทืžืžืึทื˜ื™ืง, ื•ื•ืึธืก ืื™ื– ื’ืึธืจ ื‘ืึทืงื•ื•ืขื. ืžื™ืจ ืœื™ื™ืขื ืขืŸ ื“ืขื ืคึผืึทืจืึทื’ืจืึทืฃ ืคื•ืŸ ื“ื™ ื–ืขืœื‘ืข ื ืึธืžืขืŸ ืื™ืŸ ืึธืคึผื˜ื™ื™ืœื•ื ื’ 25.3.1 SPI ืึทืœื’ืขืžื™ื™ื ืข ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืงืึธื ื˜ืจืึธืœ NSS (SSM = 1) / ืกืœืึทื•ื• ืกืขืœืขืงืฆื™ืข ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื™ื– ืงืึทื ื˜ื™ื™ื ื“ ืื™ืŸ ื“ื™ SSI ื‘ื™ืกืœ ืคื•ืŸ ื“ื™ SPI_CR1 ืจืขื’ื™ืกื˜ืจื™ืจืŸ. ื“ื™ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง NSS ืฉื˜ื™ืคื˜ ื‘ืœื™ื™ื‘ื˜ ืคืจื™ื™ ืคึฟืึทืจ ืื ื“ืขืจืข ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–.

ืขืก ืื™ื– ืฆื™ื™ื˜ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืฆื• ื“ื™ ืจืขื“ื–ืฉื™ืกื˜ืขืจื–. ืื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ื ื•ืฆืŸ SPI2, ืงื•ืง ืคึฟืึทืจ ื–ื™ื™ืŸ ื‘ืึทื–ืข ืึทื“ืจืขืก ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทืฉื™ื˜ - ืื™ืŸ ืึธืคึผื˜ื™ื™ืœื•ื ื’ 3.3 ื–ื›ึผืจื•ืŸ ืžืึทืคึผืข:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

ื ื•, ืœืืžื™ืจ ืื ื”ื™ื™ื‘ืŸ:

#define _SPI2_(mem_offset) (*(volatile uint32_t *)(0x40003800 + (mem_offset)))

ืขืคึฟืขื ืขืŸ ืึธืคึผื˜ื™ื™ืœื•ื ื’ 25.3.3 ืžื™ื˜ ื“ื™ ื–ื™ืš-ื™ืงืกืคึผืœืึทื ืึทื˜ืึธืจื™ ื˜ื™ื˜ืœ "ืงืึทื ืคื™ื’ื™ืขืจื™ื ื’ SPI ืื™ืŸ ื”ืืจ ืžืึธื“ืข":

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

1. ืฉื˜ืขืœืŸ ื“ื™ ืกื™ืจื™ืึทืœ ื–ื™ื™ื’ืขืจ ืึธืคื˜ืงื™ื™ึทื˜ ืžื™ื˜ ื‘ื™ื˜ืŸ ื‘ืจ[2:0] ืื™ืŸ ื“ื™ SPI_CR1 ืจืขื’ื™ืกื˜ืจื™ืจืŸ.

ื“ื™ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื–ืขื ืขืŸ ื’ืขื–ืืžืœื˜ ืื™ืŸ ื“ืขืจ ืจืขืคึฟืขืจืขื ืฅ ืžืึทื ื•ืึทืœ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืžื™ื˜ ื“ื™ ื–ืขืœื‘ืข ื ืึธืžืขืŸ. ืึทื“ืจืขืก ื™ื‘ืขืจืจื•ืง (ืึทื“ืจืขืก ืคืึธื˜ืึธ) ืคึฟืึทืจ CR1 - 0x00, ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ ืึทืœืข ื‘ื™ื˜ืŸ ื–ืขื ืขืŸ ืงืœื™ืจื“ (ื‘ืึทืฉื˜ืขื˜ื™ืง ื•ื•ืขืจื˜ 0x0000):

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

ื“ื™ BR ื‘ื™ื˜ืŸ ืฉื˜ืขืœืŸ ื“ื™ ืงืึธื ื˜ืจืึธืœืœืขืจ ื–ื™ื™ื’ืขืจ ื“ื™ื•ื•ื™ื“ืขืจ, ืึทื–ื•ื™ ื“ื™ื˜ืขืจืžืึทื ื™ื ื’ ื“ื™ ืึธืคื˜ืงื™ื™ึทื˜ ืื™ืŸ ื•ื•ืึธืก ื“ื™ SPI ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ. ืื•ื ื“ื–ืขืจ STM32 ืึธืคื˜ืงื™ื™ึทื˜ ื•ื•ืขื˜ ื–ื™ื™ืŸ 72 ืžื”ื–, ื“ื™ ื’ืขืคื™ืจื˜ ืฉืึธืคืขืจ, ืœื•ื™ื˜ ื–ื™ื™ืŸ ื“ืึทื˜ืึทืฉื™ื˜, ืึทืคึผืขืจื™ื™ืฅ ืžื™ื˜ ืึท ืึธืคื˜ืงื™ื™ึทื˜ ืคื•ืŸ ืึทืจื•ื™ืฃ ืฆื• 25 ืžื”ื–, ืึทื–ื•ื™ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื˜ื™ื™ืœืŸ ืžื™ื˜ ืคื™ืจ (ื‘ืจ[2:0] = 001).

#define _SPI_CR1 0x00

#define BR_0        0x0008
#define BR_1        0x0010
#define BR_2        0x0020

_SPI2_ (_SPI_CR1) |= BR_0;// pclk/4

2. ืฉื˜ืขืœืŸ ื“ื™ CPOL ืื•ืŸ CPHA ื‘ื™ื˜ืŸ ืฆื• ื“ืขืคื™ื ื™ืจืŸ ื“ื™ ืฉื™ื™ื›ื•ืช ืฆื•ื•ื™ืฉืŸ ื“ืึทื˜ืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืื•ืŸ ืกื™ืจื™ืึทืœ ื–ื™ื™ื’ืขืจ ื˜ื™ื™ืžื™ื ื’ (ื–ืขืŸ ื“ื™ืึทื’ืจืึทืžืข ืื•ื™ืฃ ื‘ืœืึทื˜ 240)

ื–ื™ื ื˜ ืžื™ืจ ืœื™ื™ืขื ืขืŸ ืึท ื“ืึทื˜ืึทืฉื™ื˜ ื“ืึธ ืื•ืŸ ื ื™ืฉื˜ ืงื•ืงืŸ ืื™ืŸ ืกื›ืขืžืึทื˜ื™ืงืก, ืœืึธื–ืŸ ืื•ื ื“ื– ื ืขืžืขืŸ ืึท ื ืขืขื ื˜ืขืจ ืงื•ืง ืื™ืŸ ื“ื™ ื˜ืขืงืกื˜ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ื“ื™ CPOL ืื•ืŸ CPHA ื‘ื™ื˜ืŸ ืื•ื™ืฃ ื‘ืœืึทื˜ 704 (SPI ืึทืœื’ืขืžื™ื™ื ืข ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’):

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ื–ื™ื™ื’ืขืจ ืคืึทืกืข ืื•ืŸ ืคึผืึธื•ืœืขืจืึทื˜ื™
ื ื™ืฆืŸ ื“ื™ CPOL ืื•ืŸ CPHA ื‘ื™ื˜ืŸ ืคื•ืŸ ื“ื™ SPI_CR1 ืจืขื’ื™ืกื˜ืจื™ืจืŸ, ืื™ืจ ืงืขื ืขืŸ ืคึผืจืึธื’ืจืึทืžืžืึทื˜ื™ืง ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืคื™ืจ ื˜ื™ื™ืžื™ื ื’ ืฉื™ื™ื›ื•ืช. ื“ื™ CPOL (ื–ื™ื™ื’ืขืจ ืคึผืึธื•ืœืขืจืึทื˜ื™) ื‘ื™ืกืœ ืงืึธื ื˜ืจืึธืœืก ื“ื™ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ื–ื™ื™ื’ืขืจ ืกื™ื’ื ืึทืœ ื•ื•ืขืŸ ืงื™ื™ืŸ ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื˜ืจืึทื ืกืžื™ื˜ื˜ืขื“. ื“ืขื ื‘ื™ืกืœ ืงืึธื ื˜ืจืึธืœืก ื“ื™ ื‘ืขืœ ืื•ืŸ ืฉืงืœืึทืฃ ืžืึธื“ืขืก. ืื•ื™ื‘ CPOL ืื™ื– ื‘ืึทืฉื˜ืขื˜ื™ืง, ื“ื™ SCK ืฉื˜ื™ืคื˜ ืื™ื– ื ื™ื“ืขืจื™ืง ืื™ืŸ ืžื ื•ื—ื” ืžืึธื“ืข. ืื•ื™ื‘ ื“ื™ CPOL ื‘ื™ืกืœ ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜, ื“ื™ SCK ืฉื˜ื™ืคื˜ ืื™ื– ื”ื•ื™ืš ื‘ืขืฉืึทืก ืžื ื•ื—ื” ืžืึธื“ืข.
ื•ื•ืขืŸ ื“ื™ CPHA (ื–ื™ื™ื’ืขืจ ืคืึทืกืข) ื‘ื™ืกืœ ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜, ื“ื™ ื”ื•ื™ืš ื‘ื™ืกืœ ื˜ืจืึทืคึผ ืกื˜ืจืึธื•ื‘ ืื™ื– ื“ื™ ืจื’ืข ื‘ืจืขื’ ืคื•ืŸ ื“ื™ SCK ืกื™ื’ื ืึทืœ (ืคืึทืœื™ื ื’ ืื•ื™ื‘ CPOL ืื™ื– ืงืœืึธืจ, ืจื™ื™ื–ื™ื ื’ ืื•ื™ื‘ CPOL ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜). ื“ื™ ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ืงืึทืคึผื˜ืฉืขืจื“ ื“ื•ืจืš ื“ื™ ืจื’ืข ืขื ื“ืขืจื•ื ื’ ืื™ืŸ ื“ื™ ื–ื™ื™ื’ืขืจ ืกื™ื’ื ืึทืœ. ืื•ื™ื‘ ื“ื™ CPHA ื‘ื™ืกืœ ืื™ื– ืงืœืึธืจ, ื“ื™ ื”ื•ื™ืš ื‘ื™ืกืœ ื˜ืจืึทืคึผ ืกื˜ืจืึธื•ื‘ ืื™ื– ื“ื™ ืจื™ื™ื–ื™ื ื’ ื‘ืจืขื’ ืคื•ืŸ ื“ื™ SCK ืกื™ื’ื ืึทืœ (ืคืึทืœื™ื ื’ ื‘ืจืขื’ ืื•ื™ื‘ CPOL ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜, ืจื™ื™ื–ื™ื ื’ ื‘ืจืขื’ ืื•ื™ื‘ CPOL ืื™ื– ืงืœื™ืจื“). ื“ืึทื˜ืข ืื™ื– ืงืึทืคึผื˜ืฉืขืจื“ ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืขื ื“ืขืจื•ื ื’ ืื™ืŸ ื“ื™ ื–ื™ื™ื’ืขืจ ืกื™ื’ื ืึทืœ.

ื•ื•ื™ื™ืœ ืึทื‘ื–ืึธืจื‘ื“ ื“ืขื ื•ื•ื™ืกืŸ, ืžื™ืจ ืงื•ืžืขืŸ ืฆื• ื“ื™ ืžืกืงื ื ืึทื– ื‘ื™ื™ื“ืข ื‘ื™ื˜ืŸ ืžื•ื–ืŸ ื‘ืœื™ื™ึทื‘ืŸ ื–ืขืจืึธืก, ื•ื•ื™ื™ึทืœ ืžื™ืจ ื•ื•ืขืœืŸ ืึทื– ื“ื™ SCK ืกื™ื’ื ืึทืœ ื–ืึธืœ ื‘ืœื™ื™ึทื‘ืŸ ื ื™ื“ืขืจื™ืง ื•ื•ืขืŸ ื ื™ื˜ ืื™ืŸ ื ื•ืฆืŸ, ืื•ืŸ ื“ื™ ื“ืึทื˜ืŸ ื–ืึธืœ ื–ื™ื™ืŸ ื˜ืจืึทื ืกืžื™ื˜ื˜ืขื“ ืื•ื™ืฃ ื“ื™ ืจื™ื™ื–ื™ื ื’ ื‘ืจืขื’ ืคื•ืŸ ื“ื™ ื“ื•ื™ืคืขืง (ื–ืขืŸ Fig. ืจื™ื™ื–ื™ื ื’ ืขื“ื–ืฉ ืื™ืŸ ื“ื™ DM634 ื“ืึทื˜ืŸ ื‘ืœืึทื˜).

ื“ื•ืจืš ื“ืขื ื•ื•ืขื’, ื“ืึธ ืžื™ืจ ืขืจืฉื˜ืขืจ ื’ืขืคึผืœืึธื ื˜ืขืจื˜ ืึท ืฉื˜ืจื™ืš ืคื•ืŸ ื“ื™ ื•ื•ืึธืงืึทื‘ื•ืœืึทืจื™ ืื™ืŸ ST ื“ืึทื˜ืŸ ืฉื™ืฅ: ืื™ืŸ ื–ื™ื™ ื“ื™ ืคืจืึทื–ืข "ื‘ืึทืฉื˜ืขื˜ื™ืง ื“ื™ ื‘ื™ืกืœ ืฆื• ื ื•ืœ" ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืฆื• ื‘ืึทืฉื˜ืขื˜ื™ืง ืึท ื‘ื™ืกืœืื•ืŸ ื ื™ืฉื˜ ืฆื• ืงืœืึธืจ ืึท ื‘ื™ืกืœ, ื•ื•ื™, ืœืžืฉืœ, Atmega.

3. ืฉื˜ืขืœืŸ ื“ื™ DFF ื‘ื™ืกืœ ืฆื• ื‘ืึทืฉืœื™ืกืŸ ืฆื™ ื“ื™ ื“ืึทื˜ืŸ ื‘ืœืึธืง ืื™ื– 8-ื‘ื™ืกืœ ืึธื“ืขืจ 16-ื‘ื™ืกืœ ืคึฟืึธืจืžืึทื˜

ืื™ืš ืกืคึผืึทืกื™ืคื™ืงืœื™ ื’ืขื ื•ืžืขืŸ ืึท 16-ื‘ื™ืกืœ DM634 ืึทื–ื•ื™ ื ื™ืฉื˜ ืฆื• ืึทืจืŸ ืžื™ื˜ ื˜ืจืึทื ืกืžื™ื˜ื™ื ื’ 12-ื‘ื™ืกืœ ืคึผื•ื•ื ื“ืึทื˜ืŸ, ื•ื•ื™ ื“ื™ DM633. ืขืก ืžืื›ื˜ ื–ื™ื ืขืŸ ืฆื• ืฉื˜ืขืœืŸ DFF ืฆื• ืื™ื™ืŸ:

#define DFF         0x0800

_SPI2_ (_SPI_CR1) |= DFF; // 16-bit mode

4. ืงืึทื ืคื™ื’ื™ืขืจ ื“ื™ LSBFIRST ื‘ื™ืกืœ ืื™ืŸ ื“ื™ SPI_CR1 ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืฆื• ื‘ืึทืฉื˜ื™ืžืขืŸ ื“ืขื ื‘ืœืึธืง ืคึฟืึธืจืžืึทื˜

LSBFIRST, ื•ื•ื™ ื–ื™ื™ืŸ ื ืึธืžืขืŸ ืกืึทื’ื“ื–ืฉืขืก, ืงืึทื ืคื™ื’ื™ืขืจ ื˜ืจืึทื ืกืžื™ืกื™ืข ืžื™ื˜ ื“ืขืจ ืžื™ื ื“ืกื˜ืขืจ ื‘ืึทื˜ื™ื™ื˜ื™ืง ื‘ื™ืกืœ ืขืจืฉื˜ืขืจ. ืึธื‘ืขืจ DM634 ื•ื•ื™ืœ ืฆื• ื‘ืึทืงื•ืžืขืŸ ื“ืึทื˜ืŸ ืคึฟื•ืŸ ื“ื™ ืžืขืจืกื˜ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ื‘ื™ืกืœ. ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ืœืึธื–ืŸ ืขืก ื‘ืึทืฉื˜ืขื˜ื™ืง.

5. ืื™ืŸ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืžืึธื“ืข, ืื•ื™ื‘ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืคื•ืŸ ื“ื™ NSS ืฉื˜ื™ืคื˜ ืื™ื– ืคืืจืœืื ื’ื˜, ืฆื•ืœื™ื™ื’ืŸ ืึท ื”ื•ื™ืš ืกื™ื’ื ืึทืœ ืฆื• ื“ื™ NSS ืฉื˜ื™ืคื˜ ื‘ืขืฉืึทืก ื“ื™ ื’ืื ืฆืข ื‘ื™ื™ื˜ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืกื™ืงื•ื•ืึทื ืก. ืื™ืŸ NSS ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืžืึธื“ืข, ืฉื˜ืขืœืŸ ื“ื™ SSM ืื•ืŸ SSI ื‘ื™ื˜ืŸ ืื™ืŸ ื“ื™ SPI_CR1 ืจืขื’ื™ืกื˜ืจื™ืจืŸ. ืื•ื™ื‘ ื“ื™ NSS ืฉืคึผื™ืœืงืข ื–ืึธืœ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ื ืึธืจ ื“ื™ SSOE ื‘ื™ืกืœ ื“ืึทืจืฃ ื–ื™ื™ืŸ ืฉื˜ืขืœืŸ.

ื™ื ืกื˜ืึทืœื™ืจืŸ SSM ืื•ืŸ SSI ืฆื• ืคืึทืจื’ืขืกืŸ ื•ื•ืขื’ืŸ ื“ื™ NSS ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืžืึธื“ืข:

#define SSI         0x0100
#define SSM         0x0200

_SPI2_ (_SPI_CR1) |= SSM | SSI; //enable software control of SS, SS high

6. ื“ื™ MSTR ืื•ืŸ SPE ื‘ื™ื˜ืŸ ืžื•ื–ืŸ ื–ื™ื™ืŸ ื‘ืึทืฉื˜ื™ืžื˜ (ื–ื™ื™ ื‘ืœื™ื™ื‘ืŸ ื‘ืึทืฉื˜ื™ืžื˜ ื‘ืœื•ื™ื– ืื•ื™ื‘ ื“ื™ NSS ืกื™ื’ื ืึทืœ ืื™ื– ื”ื•ื™ืš)

ืึทืงื˜ื•ืึทืœืœื™, ืžื™ื˜ ื“ื™ ื‘ื™ื˜ืŸ ืžื™ืจ ื“ืขื–ื™ื’ื ื™ื™ื˜ ืื•ื ื“ื–ืขืจ SPI ื•ื•ื™ ืึท ื‘ืขืœ ืื•ืŸ ืงืขืจ ืขืก ืื•ื™ืฃ:

#define MSTR        0x0004
#define SPE         0x0040

_SPI2_ (_SPI_CR1) |= MSTR; //SPI master
//ะบะพะณะดะฐ ะฒัะต ะณะพั‚ะพะฒะพ, ะฒะบะปัŽั‡ะฐะตะผ SPI
_SPI2_ (_SPI_CR1) |= SPE;

SPI ืื™ื– ืงืึทื ืคื™ื’ื™ืขืจื“, ืœืึธื–ืŸ ืื•ื ื“ื– ื’ืœื™ื™ืš ืฉืจื™ื™ึทื‘ืŸ ืคืึทื ื’ืงืฉืึทื ื– ื•ื•ืึธืก ืฉื™ืงืŸ ื‘ื™ื˜ืขืก ืฆื• ื“ื™ ืฉืึธืคืขืจ. ืคืึธืจื–ืขืฆืŸ ืœื™ื™ืขื ืขืŸ 25.3.3 "ืงืึทื ืคื™ื’ื™ืขืจื™ื ื’ SPI ืื™ืŸ ื‘ืขืœ ืžืึธื“ืข":

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ื“ืึทื˜ืข ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืกื“ืจ
ื˜ืจืึทื ืกืžื™ืกื™ืข ื”ื™ื™ื‘ื˜ ื–ื™ืš ืึธืŸ ื•ื•ืขืŸ ืึท ื‘ื™ื™ื˜ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืฆื• ื“ื™ ื˜ืงืก ื‘ืึทืคืขืจ.
ื“ื™ ื“ืึทื˜ืŸ ื‘ื™ื˜ืข ืื™ื– ืœืึธื•ื“ื™ื“ ืื™ืŸ ื“ื™ ื™ื‘ืขืจืจื•ืง ืจืขื’ื™ืกื˜ืจื™ืจืŸ ื‘ื™ื™ึท ืคึผืึทืจืึทืœืขืœ ืžืึธื“ืข (ืคื•ืŸ ื“ื™ ื™ื ืขืจืœืขืš ื•ื™ื˜ืึธื‘ื•ืก) ื‘ืขืฉืึทืก ื“ื™ ื˜ืจืึทื ืกืžื™ืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ืขืจ ืขืจืฉื˜ืขืจ ื‘ื™ืกืœ, ื ืึธืš ื•ื•ืึธืก ืขืก ืื™ื– ื˜ืจืึทื ืกืžื™ื˜ื˜ืขื“ ืฆื• ืกืึทืงื•ื•ืขื ื˜ืฉืึทืœ MOSI ืฉื˜ื™ืคื˜ ืžืึธื“ืข, ืขืจืฉื˜ืขืจ ืึธื“ืขืจ ืœืขืฆื˜ืข ื‘ื™ืกืœ ืคืึธืจื•ื™ืก ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืคื•ืŸ ื“ื™ LSBFIRST ื‘ื™ืกืœ ืื™ืŸ ื“ื™ CPI_CR1 ืจืขื’ื™ืกื˜ืจื™ืจืŸ. ื“ื™ TXE ืคืึธืŸ ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜ ื ืึธืš ื“ืึทื˜ืŸ ื˜ืจืึทื ืกืžื™ืกื™ืข ืคื•ืŸ ื˜ืงืก ื‘ืึทืคืขืจ ืฆื• ื™ื‘ืขืจืจื•ืง ืจืขื’ื™ืกื˜ืจื™ืจืŸ, ืื•ืŸ ืื•ื™ืš ื“ื–ืฉืขื ืขืจื™ื™ืฅ ืึท ื™ื‘ืขืจืจื™ื™ึทืก ืื•ื™ื‘ ื“ื™ TXEIE ื‘ื™ืกืœ ืื™ืŸ ื“ื™ CPI_CR1 ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜.

ืื™ืš ื›ื™ื™ืœื™ื™ื˜ื™ื“ ืึท ื‘ื™ืกืœ ื•ื•ืขืจื˜ืขืจ ืื™ืŸ ื“ืขืจ ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืฆื• ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ืฆื• ืื™ื™ืŸ ืฉื˜ืจื™ืš ืคื•ืŸ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ SPI ืื™ืŸ STM ืงืึทื ื˜ืจืึธื•ืœืขืจื–. ืื•ื™ืฃ Atmega ื“ื™ TXE ืคืึธืŸ (ื˜ืงืก ืœื™ื™ื“ื™ืง, ื˜ืงืก ืื™ื– ืœื™ื™ื“ื™ืง ืื•ืŸ ื’ืจื™ื™ื˜ ืฆื• ื‘ืึทืงื•ืžืขืŸ ื“ืึทื˜ืŸ) ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜ ื‘ืœื•ื™ื– ื ืึธืš ื“ื™ ื’ืื ืฆืข ื‘ื™ื™ื˜ ืื™ื– ื’ืขืฉื™ืงื˜ ืื•ื™ืก. ืื•ืŸ ื“ืึธ ื“ืขื ืคืึธืŸ ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜ ื ืึธืš ื“ื™ ื‘ื™ื™ื˜ ืื™ื– ื™ื ืกืขืจื˜ืึทื“ ืื™ืŸ ื“ื™ ื™ื ืขืจืœืขืš ื™ื‘ืขืจืจื•ืง ืจืขื’ื™ืกื˜ืจื™ืจืŸ. ื–ื™ื ื˜ ืขืก ืื™ื– ืคึผื•ืฉื˜ ื“ืึธืจื˜ ืžื™ื˜ ืึทืœืข ื“ื™ ื‘ื™ื˜ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ (ืื™ืŸ ืคึผืึทืจืึทืœืขืœ), ืื•ืŸ ื“ืึทืŸ ื“ื™ ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื˜ืจืึทื ืกืคืขืจื“ ืกืึทืงื•ื•ืขื ื˜ืฉืึทืœื™, TXE ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜ ืื™ื™ื“ืขืจ ื“ื™ ื‘ื™ื˜ืข ืื™ื– ื’ืึธืจ ื’ืขืฉื™ืงื˜. ื“ืึธืก ืื™ื– ื•ื•ื™ื›ื˜ื™ืง ื•ื•ื™ื™ึทืœ ืื™ืŸ ื“ืขื ืคืึทืœ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ื’ืขืคื™ืจื˜ ืฉืึธืคืขืจ, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฆื™ืขืŸ ื“ื™ LAT ืฉื˜ื™ืคื˜ ื ืึธืš ืฉื™ืงืŸ ืึทืœืข ื“ืึทื˜ืŸ, ื“.ื”. ื“ื™ TXE ืคืึธืŸ ืึทืœื™ื™ืŸ ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ื’ืขื ื•ื’ ืคึฟืึทืจ ืื•ื ื“ื–.

ื“ืึธืก ืžื™ื™ื ื˜ ืึทื– ืžื™ืจ ื“ืึทืจืคึฟืŸ ืืŸ ืื ื“ืขืจ ืคืึธืŸ. ืœืึธืžื™ืจ ืงื•ืงืŸ ืื™ืŸ 25.3.7 - "ืกื˜ืึทื˜ื•ืก ืคืœืึทื’ืก":

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
<โ€ฆ>
ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ืคืึทืจื ื•ืžืขืŸ ืคืึธืŸ
ื“ื™ BSY ืคืึธืŸ ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜ ืื•ืŸ ืงืœื™ืจื“ ื“ื•ืจืš ื™ื™ึทื–ื ื•ื•ืึทืจื’ (ืฉืจื™ื™ื‘ืŸ ืฆื• ืขืก ื”ืื˜ ืงื™ื™ืŸ ื•ื•ื™ืจืงื•ื ื’). ื“ื™ BSY ืคืึธืŸ ื™ื ื“ื™ืงื™ื™ืฅ ื“ื™ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ SPI ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืฉื™ื›ื˜ืข.
ืขืก ืจื™ืกื˜ืึทืจื˜:
ื•ื•ืขืŸ ื“ื™ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืื™ื– ื’ืขืขื ื“ื™ืงื˜ (ืึทื—ื•ืฅ ืื™ืŸ ื‘ืขืœ ืžืึธื“ืข ืื•ื™ื‘ ื“ื™ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืื™ื– ืงืขืกื™ื™ื“ืขืจื“ื™ืง)
ื•ื•ืขืŸ SPI ืื™ื– ืคืึทืจืงืจื™ืคึผืœื˜
ื•ื•ืขืŸ ืึท ื‘ืขืœ ืžืึธื“ืข ื˜ืขื•ืช ืึทืงืขืจื– (MODF = 1)
ืื•ื™ื‘ ื“ื™ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืื™ื– ื ื™ืฉื˜ ืงืขืกื™ื™ื“ืขืจื“ื™ืง, ื“ื™ BSY ืคืึธืŸ ืื™ื– ืงืœื™ืจื“ ืฆื•ื•ื™ืฉืŸ ื™ืขื“ืขืจ ื“ืึทื˜ืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ

ืึธื•ืงื™ื™, ื“ืึธืก ื•ื•ืขื˜ ืงื•ืžืขืŸ ืื™ืŸ ื”ืึทื ื˜ื™ืง. ื–ืืœ ืก ื’ืขืคื™ื ืขืŸ ืื•ื™ืก ื•ื•ื• ื“ื™ ื˜ืงืก ื‘ืึทืคืขืจ ืื™ื– ืœื™ื’ืŸ. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืœื™ื™ืขื ืขืŸ "SPI Data Register":

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ื‘ื™ื˜ืŸ 15:0 DR[15:0] ื“ืึทื˜ืึท ืจืขื’ื™ืกื˜ืจื™ืจืŸ
ื“ืึทื˜ืŸ ื‘ืืงื•ืžืขืŸ ืึธื“ืขืจ ื“ืึทื˜ืŸ ืฆื• ื–ื™ื™ืŸ ื˜ืจืึทื ืกืžื™ื˜ื˜ืขื“.
ื“ื™ ื“ืึทื˜ืŸ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืื™ื– ืฆืขื˜ื™ื™ืœื˜ ืื™ืŸ ืฆื•ื•ื™ื™ ื‘ืึทืคืขืจื– - ืื™ื™ื ืขืจ ืคึฟืึทืจ ืฉืจื™ื™ื‘ืŸ (ื˜ืจืึทื ืกืžื™ื˜ื™ื ื’ ื‘ืึทืคืขืจ) ืื•ืŸ ืื™ื™ื ืขืจ ืคึฟืึทืจ ืœื™ื™ืขื ืขืŸ (ื‘ืึทืงื•ืžืขืŸ ื‘ืึทืคืขืจ). ืฉืจื™ื™ื‘ืŸ ืฆื• ื“ื™ ื“ืึทื˜ืŸ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืฉืจื™ื™ื‘ื˜ ืฆื• ื“ื™ ื˜ืงืก ื‘ืึทืคืขืจ, ืื•ืŸ ืœื™ื™ืขื ืขืŸ ืคื•ืŸ ื“ื™ ื“ืึทื˜ืŸ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ื•ื•ืขื˜ ืฆื•ืจื™ืงืงื•ืžืขืŸ ื“ื™ ื•ื•ืขืจื˜ ืงืึทื ื˜ื™ื™ื ื“ ืื™ืŸ ื“ื™ ืจืงืก ื‘ืึทืคืขืจ.

ื ื•, ืื•ืŸ ื“ื™ ืกื˜ืึทื˜ื•ืก ืจืขื’ื™ืกื˜ืจื™ืจืŸ, ื•ื•ื• ื“ื™ TXE ืื•ืŸ BSY ืคืœืึทื’ืก ื–ืขื ืขืŸ ื’ืขืคึฟื•ื ืขืŸ:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

ืžื™ืจ ืฉืจื™ื™ื‘ืŸ:

#define _SPI_DR  0x0C
#define _SPI_SR  0x08

#define BSY         0x0080
#define TXE         0x0002

void dm_shift16(uint16_t value)
{
    _SPI2_(_SPI_DR) = value; //send 2 bytes
    while (!(_SPI2_(_SPI_SR) & TXE)); //wait until they're sent
}

ื ื•, ื–ื™ื ื˜ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึทืจื™ื‘ืขืจืคื™ืจืŸ 16 ืžืืœ ืฆื•ื•ื™ื™ ื‘ื™ื˜ืขืก, ืœื•ื™ื˜ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื’ืขืคื™ืจื˜ ืฉืึธืคืขืจ ืึทื•ื˜ืคึผื•ืฅ, ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก:

void sendLEDdata()
{
    LAT_low();
    uint8_t k = 16;
    do
    {   k--;
        dm_shift16(leds[k]);
    } while (k);

    while (_SPI2_(_SPI_SR) & BSY); // finish transmission

    LAT_pulse();
}

ืึธื‘ืขืจ ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกืŸ ื•ื•ื™ ืฆื• ืฆื™ืขืŸ ื“ื™ LAT ืฉื˜ื™ืคื˜ ื ืึธืš, ืึทื–ื•ื™ ืžื™ืจ ื•ื•ืขืœืŸ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืฆื• ืื™ืš / ืึธ.

ืึทืกื™ื™ื ื™ื ื’ ืคึผื™ื ืก

ืื™ืŸ ื“ื™ STM32F1, ื“ื™ ืจืขื’ื™ืกื˜ืขืจืก ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ื“ื™ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ืคึผื™ื ืก ื–ืขื ืขืŸ ื’ืึทื ืฅ ื•ืžื’ืขื•ื•ื™ื™ื ื˜ืœืขืš. ืขืก ืื™ื– ืงืœืึธืจ ืึทื– ืขืก ื–ืขื ืขืŸ ืžืขืจ ืคื•ืŸ ื–ื™ื™ ื•ื•ื™ Atmega, ืึธื‘ืขืจ ื–ื™ื™ ื–ืขื ืขืŸ ืื•ื™ืš ืึทื ื“ืขืจืฉ ืคื•ืŸ ืื ื“ืขืจืข STM ื˜ืฉื™ืคึผืก. ืึธืคึผื˜ื™ื™ืœื•ื ื’ 9.1 ืึทืœื’ืขืžื™ื™ื ืข ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ GPIO:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ื™ืขื“ืขืจ ืคื•ืŸ ื“ื™ ืึทืœื’ืขืžื™ื™ื ืข ื™ / ืึธ ืคึผืึธืจืฅ (GPIO) ื”ืื˜ ืฆื•ื•ื™ื™ 32-ื‘ื™ืกืœ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– (GPIOx_CRL ืื•ืŸ GPIOx_CRH), ืฆื•ื•ื™ื™ 32-ื‘ื™ืกืœ ื“ืึทื˜ืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– (GPIOx_IDR ืื•ืŸ GPIOx_ODR), ืึท 32-ื‘ื™ืกืœ ืฉื˜ืขืœืŸ / ื‘ืึทืฉื˜ืขื˜ื™ืง ืจืขื’ื™ืกื˜ืจื™ืจืŸ (GPIOx_BSRR), ืึท 16-ื‘ื™ืกืœ ื‘ืึทืฉื˜ืขื˜ื™ืง ืจืขื’ื™ืกื˜ืจื™ืจืŸ (GPIOx_BRR) ืื•ืŸ ืึท 32- ื‘ื™ืกืœ ื‘ืœืึทืงื™ื ื’ ืจืขื’ื™ืกื˜ืจื™ืจืŸ (GPIOx_LCKR).

ื“ืขืจ ืขืจืฉื˜ืขืจ ืฆื•ื•ื™ื™ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื–ืขื ืขืŸ ื•ืžื’ืขื•ื•ื™ื™ื ื˜ืœืขืš, ืื•ืŸ ืื•ื™ืš ื’ืึทื ืฅ ื•ืžื‘ืึทืงื•ื•ืขื, ื•ื•ื™ื™ึทืœ ื“ื™ 16 ืคึผืึธืจื˜ ืคึผื™ื ืก ื–ืขื ืขืŸ ืฆืขื•ื•ืึธืจืคืŸ ืึทืจื™ื‘ืขืจ ื–ื™ื™ ืื™ืŸ ืึท "ืคื™ืจ ื‘ื™ื˜ืŸ ืคึผืขืจ ื‘ืจื•ื“ืขืจ" ืคึฟืึธืจืžืึทื˜. ื™ืขื ืข. ืคึผื™ื ืก ื ื•ืœ ืฆื• ื–ื™ื‘ืŸ ื–ืขื ืขืŸ ืื™ืŸ CRL, ืื•ืŸ ื“ื™ ืžื ื•ื—ื” ื–ืขื ืขืŸ ืื™ืŸ CRH. ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ื“ื™ ืจื•ืขืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื”ืฆืœื—ื” ืึทื ื˜ื”ืึทืœื˜ืŸ ื“ื™ ื‘ื™ื˜ืŸ ืคื•ืŸ ืึทืœืข ืคึผื™ื ืก ืคื•ืŸ ื“ื™ ืคึผืึธืจื˜ - ืึธืคื˜ ืจื•ืขืŸ ื”ืึทืœื‘ "ืจืขื–ืขืจื•ื•ื™ืจื˜".

ืคึฟืึทืจ ืคึผืึทืฉื˜ืขืก, ืœืึธื–ืŸ ืื•ื ื“ื– ืึธื ื”ื™ื™ื‘ืŸ ืคึฟื•ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ ื“ืขืจ ืจืฉื™ืžื”.

ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืึท ื‘ืœืึทืงื™ื ื’ ืจืขื’ื™ืกื˜ืจื™ืจืŸ.

ื“ื™ ื‘ืึทืฉื˜ืขื˜ื™ืง ืื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืง ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื–ืขื ืขืŸ ื’ืึทื ืฅ ืžืึธื“ื ืข ื•ื•ื™ื™ึทืœ ื–ื™ื™ ื˜ื™ื™ืœ ื“ื•ืคึผืœื™ืงืึทื˜ ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ: ืื™ืจ ืงืขื ืขืŸ ืฉืจื™ื™ึทื‘ืŸ ืึทืœืฅ ื‘ืœื•ื™ื– ืื™ืŸ BSRR, ื•ื•ื• ื“ื™ ื”ืขื›ืขืจ 16 ื‘ื™ื˜ืŸ ื•ื•ืขื˜ ื‘ืึทืฉื˜ืขื˜ื™ืง ื“ื™ ืฉื˜ื™ืคื˜ ืฆื• ื ื•ืœ, ืื•ืŸ ื“ื™ ื ื™ื“ืขืจื™ืงืขืจ ืึธื ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืึทืฉื˜ื™ืžื˜ ืฆื• 1, ืึธื“ืขืจ ืื™ืจ ืงืขื ืขืŸ ืื•ื™ืš ื ื™ืฆืŸ BRR, ื“ื™ ื ื™ื“ืขืจื™ืงืขืจ 16 ื‘ื™ื˜ืŸ ืคื•ืŸ ื•ื•ืึธืก ื‘ืœื•ื™ื– ื‘ืึทืฉื˜ืขื˜ื™ืง ื“ื™ ืฉื˜ื™ืคื˜. ืื™ืš ื•ื•ื™ ื“ื™ ืจื’ืข ืึธืคึผืฆื™ืข. ื“ื™ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื–ืขื ืขืŸ ื•ื•ื™ื›ื˜ื™ืง ื•ื•ื™ื™ึทืœ ื–ื™ื™ ืฆื•ืฉื˜ืขืœืŸ ืึทื˜ืึธืžื™ืฉืข ืึทืงืกืขืก ืฆื• ืคึผื™ื ืก:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ืึทื˜ืึธืžื™ืฉืข ื‘ืึทืฉื˜ืขื˜ื™ืง ืึธื“ืขืจ ื‘ืึทืฉื˜ืขื˜ื™ืง
ืขืก ืื™ื– ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื“ื™ืกื™ื™ื‘ืึทืœ ื™ื ื˜ืขืจืึทืคึผืฅ ื•ื•ืขืŸ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ GPIOx_ODR ืื•ื™ืฃ ื“ื™ ื‘ื™ืกืœ ืžื“ืจื’ื”: ืื™ื™ื ืขืจ ืึธื“ืขืจ ืžืขืจ ื‘ื™ื˜ืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืคืืจืขื ื“ืขืจื˜ ืžื™ื˜ ืึท ืื™ื™ืŸ ืึทื˜ืึธืžื™ืฉืข ืฉืจื™ื™ึทื‘ืŸ ืึธืคึผืขืจืึทืฆื™ืข APB2. ื“ืึธืก ืื™ื– ืึทื˜ืฉื™ื•ื•ื“ ื“ื•ืจืš ืฉืจื™ื™ื‘ืŸ ืึท "1" ืฆื• ื“ื™ ืฉื˜ืขืœืŸ / ื‘ืึทืฉื˜ืขื˜ื™ืง ืจืขื’ื™ืกื˜ืจื™ืจืŸ (GPIOx_BSRR ืึธื“ืขืจ, ืคึฟืึทืจ ื‘ืึทืฉื˜ืขื˜ื™ืง ื‘ืœื•ื™ื–, GPIOx_BRR) ืคื•ืŸ ื“ื™ ื‘ื™ืกืœ ื•ื•ืึธืก ื“ืึทืจืฃ ื–ื™ื™ืŸ ื’ืขื‘ื™ื˜ืŸ. ืื ื“ืขืจืข ื‘ื™ื˜ืŸ ื•ื•ืขื˜ ื‘ืœื™ื™ึทื‘ืŸ ืึทื ื˜ืฉื™ื™ื ื“ื–ืฉื“.

ื“ื™ ื“ืึทื˜ืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื”ืึธื‘ืŸ ื’ืึทื ืฅ ื–ื™ืš-ื™ืงืกืคึผืœืึทื ืึทื˜ืึธืจื™ ื ืขืžืขืŸ - IDR = ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืจื™ื›ื˜ื•ื ื’ ืจืขื’ื™ืกื˜ืจื™ืจืŸ, ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืจืขื’ื™ืกื˜ืจื™ืจืŸ; ODR = ืจืขื–ื•ืœื˜ืึทื˜ ืจื™ื›ื˜ื•ื ื’ ืจืขื’ื™ืกื˜ืจื™ืจืŸ, ืจืขื–ื•ืœื˜ืึทื˜ ืจืขื’ื™ืกื˜ืจื™ืจืŸ. ืžื™ืจ ื•ื•ืขืœืŸ ื–ื™ื™ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืื™ืŸ ื“ืขื ืงืจืึทื ื˜ ืคึผืจื•ื™ืขืงื˜.

ืื•ืŸ ืœืขืกืึธืฃ, ืงืึธื ื˜ืจืึธืœ ืจืขื“ื–ืฉื™ืกื˜ืขืจื–. ื–ื™ื ื˜ ืžื™ืจ ื–ืขื ืขืŸ ืื™ื ื˜ืขืจืขืกื™ืจื˜ ืื™ืŸ ื“ื™ ืจื’ืข SPI ืคึผื™ื ืก, ื ื™ื™ืžืœื™ PB13, PB14 ืื•ืŸ PB15, ืžื™ืจ ืžื™ื“ ืงื•ืงืŸ ืื™ืŸ CRH:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

ืื•ืŸ ืžื™ืจ ื–ืขืŸ ืึทื– ืžื™ืจ ื•ื•ืขืœืŸ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืขืคึผืขืก ืื™ืŸ ื‘ื™ื˜ืŸ ืคื•ืŸ 20 ืฆื• 31.

ืžื™ืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืคื™ื’ื™ืขืจื“ ืื•ื™ื‘ืŸ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ืคื•ืŸ ืคึผื™ื ืก, ืึทื–ื•ื™ ื“ืึธ ืื™ืš ื•ื•ืขืœ ื˜ืึธืŸ ืึธืŸ ืึท ืกืงืจืขืขื ืฉืึธื˜, ืื™ืš ื•ื•ืขื˜ ื ืึธืจ ื–ืึธื’ืŸ ืึทื– MODE ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ื“ื™ ืจื™ื›ื˜ื•ื ื’ (ืึทืจื™ื™ึทื ืจื™ื™ึทื‘ ืื•ื™ื‘ ื‘ื™ื™ื“ืข ื‘ื™ื˜ืŸ ื–ืขื ืขืŸ ื‘ืึทืฉื˜ื™ืžื˜ ืฆื• 0) ืื•ืŸ ืฉื˜ื™ืคื˜ ื’ื™ื›ืงื™ื™ึทื˜ (ืžื™ืจ ื“ืึทืจืคึฟืŸ 50MHz, ื“"ื”. ื‘ื™ื™ื“ืข ืฉื˜ื™ืคื˜ ืฆื• "1"), ืื•ืŸ CNF ืฉื˜ืขืœื˜ ื“ื™ ืžืึธื“ืข: ืจืขื’ื•ืœืขืจ "ืฉื˜ื•ืคึผืŸ-ืฆื™ืขืŸ" - 00, "ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื•" - 10. ื•ื•ื™ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜, ื•ื•ื™ ืžื™ืจ ื–ืขืŸ ืื•ื™ื‘ืŸ, ืึทืœืข ืคึผื™ื ืก ื”ืึธื‘ืŸ ื“ื™ ื“ืจื™ื˜ ื‘ื™ืกืœ ืคื•ืŸ ื“ื™ ื“ื ืึธ (CNF0), ืขืก ืฉื˜ืขืœื˜ ื–ื™ื™ ืฆื• ืžืึธื“ืข ืคืœืึธื•ื˜ื™ื ื’ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘.

ื–ื™ื ื˜ ืื™ืš ืคึผืœืึทืŸ ืฆื• ื˜ืึธืŸ ืขืคึผืขืก ืึทื ื“ืขืจืฉ ืžื™ื˜ ื“ืขื ืฉืคึผืึธืŸ, ืคึฟืึทืจ ืคึผืึทืฉื˜ืขืก ืื™ืš ื”ืึธื‘ืŸ ื“ื™ืคื™ื™ื ื“ ืึทืœืข ืžืขื’ืœืขืš ืžืึธื“ืข ืื•ืŸ CNF ื•ื•ืึทืœื•ืขืก ืคึฟืึทืจ ื‘ื™ื™ื“ืข ื“ื™ ื ื™ื“ืขืจื™ืงืขืจ ืื•ืŸ ืื•ื™ื‘ืขืจืฉื˜ืขืจ ืงืึธื ื˜ืจืึธืœ ืจืขื“ื–ืฉื™ืกื˜ืขืจื–.

ืขืคืขืก ืื–ื•ื™

#define CNF0_0 0x00000004
#define CNF0_1 0x00000008
#define CNF1_0 0x00000040
#define CNF1_1 0x00000080
#define CNF2_0 0x00000400
#define CNF2_1 0x00000800
#define CNF3_0 0x00004000
#define CNF3_1 0x00008000
#define CNF4_0 0x00040000
#define CNF4_1 0x00080000
#define CNF5_0 0x00400000
#define CNF5_1 0x00800000
#define CNF6_0 0x04000000
#define CNF6_1 0x08000000
#define CNF7_0 0x40000000
#define CNF7_1 0x80000000
#define CNF8_0 0x00000004
#define CNF8_1 0x00000008
#define CNF9_0 0x00000040
#define CNF9_1 0x00000080
#define CNF10_0 0x00000400
#define CNF10_1 0x00000800
#define CNF11_0 0x00004000
#define CNF11_1 0x00008000
#define CNF12_0 0x00040000
#define CNF12_1 0x00080000
#define CNF13_0 0x00400000
#define CNF13_1 0x00800000
#define CNF14_0 0x04000000
#define CNF14_1 0x08000000
#define CNF15_0 0x40000000
#define CNF15_1 0x80000000

#define MODE0_0 0x00000001
#define MODE0_1 0x00000002
#define MODE1_0 0x00000010
#define MODE1_1 0x00000020
#define MODE2_0 0x00000100
#define MODE2_1 0x00000200
#define MODE3_0 0x00001000
#define MODE3_1 0x00002000
#define MODE4_0 0x00010000
#define MODE4_1 0x00020000
#define MODE5_0 0x00100000
#define MODE5_1 0x00200000
#define MODE6_0 0x01000000
#define MODE6_1 0x02000000
#define MODE7_0 0x10000000
#define MODE7_1 0x20000000
#define MODE8_0 0x00000001
#define MODE8_1 0x00000002
#define MODE9_0 0x00000010
#define MODE9_1 0x00000020
#define MODE10_0 0x00000100
#define MODE10_1 0x00000200
#define MODE11_0 0x00001000
#define MODE11_1 0x00002000
#define MODE12_0 0x00010000
#define MODE12_1 0x00020000
#define MODE13_0 0x00100000
#define MODE13_1 0x00200000
#define MODE14_0 0x01000000
#define MODE14_1 0x02000000
#define MODE15_0 0x10000000
#define MODE15_1 0x20000000

ืื•ื ื“ื–ืขืจ ืคึผื™ื ืก ื–ืขื ืขืŸ ืœื™ื’ืŸ ืื•ื™ืฃ ืคึผืึธืจื˜ ื‘ (ื‘ืึทื–ืข ืึทื“ืจืขืก - 0x40010C00), ืงืึธื“:

#define _PORTB_(mem_offset) (*(volatile uint32_t *)(0x40010C00 + (mem_offset)))

#define _BRR  0x14
#define _BSRR 0x10
#define _CRL  0x00
#define _CRH  0x04

//ะธัะฟะพะปัŒะทัƒะตะผ ัั‚ะฐะฝะดะฐั€ั‚ะฝั‹ะน SPI2: MOSI ะฝะฐ B15, CLK ะฝะฐ B13
//LAT ะฟัƒัั‚ัŒ ะฑัƒะดะตั‚ ะฝะฐ ะฝะตะธัะฟะพะปัŒะทัƒะตะผะพะผ MISO โ€“ B14

//ะพั‡ะธั‰ะฐะตะผ ะดะตั„ะพะปั‚ะฝั‹ะน ะฑะธั‚, ะพะฝ ะฝะฐะผ ั‚ะพั‡ะฝะพ ะฝะต ะฝัƒะถะตะฝ
_PORTB_ (_CRH) &= ~(CNF15_0 | CNF14_0 | CNF13_0 | CNF12_0);

//ะฐะปัŒั‚ะตั€ะฝะฐั‚ะธะฒะฝั‹ะต ั„ัƒะฝะบั†ะธะธ ะดะปั MOSI ะธ SCK
_PORTB_ (_CRH) |= CNF15_1 | CNF13_1;

//50 ะœะ“ั†, MODE = 11
_PORTB_ (_CRH) |= MODE15_1 | MODE15_0 | MODE14_1 | MODE14_0 | MODE13_1 | MODE13_0;

ืื•ืŸ, ืึทืงืึธืจื“ื™ื ื’ืœื™, ืื™ืจ ืงืขื ืขืŸ ืฉืจื™ื™ึทื‘ืŸ ื“ืขืคึฟื™ื ื™ืฆื™ืข ืคึฟืึทืจ LAT, ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื˜ื•ื•ื™ื˜ืฉื˜ ื“ื•ืจืš ื“ื™ BRR ืื•ืŸ BSRR ืจืขื“ื–ืฉื™ืกื˜ืขืจื–:

/*** LAT pulse โ€“ high, then low */
#define LAT_pulse() _PORTB_(_BSRR) = (1<<14); _PORTB_(_BRR) = (1<<14)

#define LAT_low() _PORTB_(_BRR) = (1<<14)

(LAT_low ื ืึธืจ ื“ื•ืจืš ื™ื ืขืจืฉืึท, ืขืก ืื™ื– ืฉื˜ืขื ื“ื™ืง ื’ืขื•ื•ืขืŸ ืึทื–ื•ื™, ืœืึธื–ืŸ ืขืก ื‘ืœื™ื™ึทื‘ืŸ)

ืื™ืฆื˜ ืึทืœืฅ ืื™ื– ื’ืจื•ื™ืก, ืึธื‘ืขืจ ืขืก ื˜ื•ื˜ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ. ื•ื•ื™ื™ึทืœ ื“ืึธืก ืื™ื– STM32, ื–ื™ื™ ืฉืคึผืึธืจืŸ ืขืœืขืงื˜ืจืข, ื•ื•ืึธืก ืžื™ื˜ืœ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื’ืขื‘ืŸ ื“ื™ ืงืœืึทืงื™ื ื’ ืคื•ืŸ ื“ื™ ืคืืจืœืื ื’ื˜ ืคึผืขืจื™ืคืขืจืึทืœืก.

ืงืขืจ ืื•ื™ืฃ ืงืœืึทืงื™ื ื’

ื“ื™ ื•ื•ืึทืš, ืื•ื™ืš ื‘ืืงืื ื˜ ื•ื•ื™ ื–ื™ื™ื’ืขืจ, ืื™ื– ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ืงืœืึทืงื™ื ื’. ืื•ืŸ ืžื™ืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื’ืขืงืขื ื˜ ื‘ืึทืžืขืจืงืŸ ื“ื™ ืึทื‘ืจื™ื•ื•ื™ื™ื™ืฉืึทืŸ RCC. ืžื™ืจ ืงื•ืงืŸ ืคึฟืึทืจ ืขืก ืื™ืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ: ื“ืึธืก ืื™ื– ื‘ืึทืฉื˜ืขื˜ื™ืง ืื•ืŸ ื–ื™ื™ื’ืขืจ ืงืึธื ื˜ืจืึธืœ.

ื•ื•ื™ ื’ืขื–ืึธื’ื˜ ืื•ื™ื‘ืŸ, ืฆื•ืž ื’ืœื™ืง, ื“ื™ ืžืขืจืกื˜ ืฉื•ื•ืขืจ ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ืงืœืึทืงื™ื ื’ ื˜ืขืžืข ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืคึฟืึทืจ ืื•ื ื“ื– ื“ื•ืจืš ืžืขื ื˜ืฉืŸ ืคื•ืŸ STM, ืคึฟืึทืจ ื•ื•ืึธืก ืžื™ืจ ื“ืึทื ืงืขืŸ ื–ื™ื™ ื–ื™ื™ืขืจ ืคื™ืœ (ืื™ืš ื•ื•ืขืœ ื•ื•ื™ื“ืขืจ ื’ืขื‘ืŸ ืึท ืœื™ื ืง ืฆื• ื“ื™ ื”ืึทืœื˜ ืก ื•ื•ืขื‘ื–ื™ื™ึทื˜ืœ, ืฆื• ืžืึทื›ืŸ ืขืก ืงืœืึธืจ ื•ื•ื™ ืงืึทื ืคื™ื•ื–ื™ื ื’ ืขืก ืื™ื–). ืžื™ืจ ื“ืึทืจืคึฟืŸ ื‘ืœื•ื™ื– ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ืขื ื™ื™ื‘ืึทืœื™ื ื’ ืคึผืขืจื™ืคืขืจืึทืœ ืงืœืึทืงื™ื ื’ (ืคึผืขืจื™ืคืขืจืึทืœ ื–ื™ื™ื’ืขืจ ื’ืขื‘ืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจืก). ืขืจืฉื˜ืขืจ, ืœืึธืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ื‘ืึทื–ืข ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ RCC, ืขืก ืื™ื– ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื“ื™ "ื–ื›ึผืจื•ืŸ ืžืืคืข":

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

#define _RCC_(mem_offset) (*(volatile uint32_t *)(0x40021000 + (mem_offset)))

ืื•ืŸ ื“ืขืžืึธืœื˜ ืึธื“ืขืจ ื’ื™ื˜ ืื•ื™ืฃ ื“ื™ ืœื™ื ืง ื•ื•ื• ืื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืขืคึผืขืก ืื™ืŸ ื“ื™ ื˜ืขืœืขืจ, ืึธื“ืขืจ, ืคื™ืœ ื‘ืขืกืขืจ, ื’ื™ื™ืŸ ื“ื•ืจืš ื“ื™ ื“ื™ืกืงืจื™ืคึผืฉืึทื ื– ืคื•ืŸ ื“ื™ ืขื ื™ื™ื‘ืึทืœื™ื ื’ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ืคื•ืŸ ื“ื™ ืกืขืงืฉืึทื ื– ื•ื•ืขื’ืŸ ื’ืขื‘ืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจื–. ื•ื•ื• ืžื™ืจ ื•ื•ืขืœืŸ ื’ืขืคึฟื™ื ืขืŸ RCC_APB1ENR ืื•ืŸ RCC_APB2ENR:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

ืื•ืŸ ื–ื™ื™, ืึทืงืึธืจื“ื™ื ื’ืœื™, ืึทื ื˜ื”ืึทืœื˜ืŸ ื‘ื™ื˜ืŸ ื•ื•ืึธืก ืึทืจื™ื™ึทื ื ืขืžืขืŸ ื“ื™ ืงืœืึทืงื™ื ื’ ืคื•ืŸ SPI2, IOPB (I/O Port B) ืื•ืŸ ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ืคืึทื ื’ืงืฉืึทื ื– (AFIO).

#define _APB2ENR 0x18
#define _APB1ENR 0x1C

#define IOPBEN 0x0008
#define SPI2EN 0x4000
#define AFIOEN 0x0001

//ะฒะบะปัŽั‡ะฐะตะผ ั‚ะฐะบั‚ะธั€ะพะฒะฐะฝะธะต ะฟะพั€ั‚ะฐ B ะธ ะฐะปัŒั‚. ั„ัƒะฝะบั†ะธะน
_RCC_(_APB2ENR) |= IOPBEN | AFIOEN;

//ะฒะบะปัŽั‡ะฐะตะผ  ั‚ะฐะบั‚ะธั€ะพะฒะฐะฝะธะต SPI2
_RCC_(_APB1ENR) |= SPI2EN;

ื“ื™ ืœืขืฆื˜ ืงืึธื“ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ื“ืึธ.

ืื•ื™ื‘ ืื™ืจ ื”ืึธื‘ืŸ ื“ื™ ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืื•ืŸ ืคืึทืจืœืึทื ื’ ืฆื• ืคึผืจื•ื‘ื™ืจืŸ, ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ DM634 ื•ื•ื™ ื“ืึธืก: DAI ืฆื• PB15, DCK ืฆื• PB13, LAT ืฆื• PB14. ืžื™ืจ ืžืึทื›ื˜ ื“ื™ ืฉืึธืคืขืจ ืคื•ืŸ 5 ื•ื•ืืœื˜ืก, ื˜ืึธืŸ ื ื™ื˜ ืคืึทืจื’ืขืกืŸ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ื’ืจืึธื•ื ื“ืก.

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

STM8 PWM

PWM ืื•ื™ืฃ STM8

ื•ื•ืขืŸ ืื™ืš ื ืึธืจ ืคึผืœืึทื ื™ืจื•ื ื’ ื“ืขื ืึทืจื˜ื™ืงืœ, ืื™ืš ื‘ืึทืฉืœืึธืกืŸ, ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ, ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ื‘ืขืœ ืขื˜ืœืขื›ืข ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคื•ืŸ ืึท ืึทื ืคืึทืžื™ืœื™ืขืจ ืฉืคึผืึธืŸ ืžื™ื˜ ื‘ืœื•ื™ื– ืึท ื“ืึทื˜ืึทืฉื™ื˜, ืึทื–ื•ื™ ืึทื– ืื™ืš ื•ื•ืึธืœื˜ ื ื™ืฉื˜ ืขื ื“ื™ืงืŸ ืžื™ื˜ ืึท ืฉื•ืกื˜ืขืจ ืึธืŸ ืฉื™ืš. STM8 ืื™ื– ื’ืขื•ื•ืขืŸ ื™ื“ืขืึทืœ ืคึฟืึทืจ ื“ืขื ืจืึธืœืข: ืขืจืฉื˜ืขืจ, ืื™ืš ื’ืขื”ืื˜ ืึท ืคึผืึธืจ ืคื•ืŸ ื›ื™ื ืขื–ื™ืฉ ื‘ืึธืจื“ื– ืžื™ื˜ STM8S103, ืื•ืŸ ืฆื•ื•ื™ื™ื˜ื ืก, ืขืก ืื™ื– ื ื™ืฉื˜ ื–ื™ื™ืขืจ ืคืึธืœืงืก, ืื•ืŸ ื“ืขืจื™ื‘ืขืจ ื“ื™ ื ืกื™ื•ืŸ ืฆื• ืœื™ื™ืขื ืขืŸ ืื•ืŸ ื’ืขืคึฟื™ื ืขืŸ ืึท ืœื™ื™ื–ื•ื ื’ ืื•ื™ืฃ ื“ื™ ืื™ื ื˜ืขืจื ืขื˜ ืื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ืคืขืœืŸ ืคื•ืŸ ื“ื™ ื–ื™ื™ืขืจ ืกืึทืœื•ืฉืึทื ื–.

ื“ืขืจ ืฉืคึผืึธืŸ ืื•ื™ืš ื”ืื˜ ื“ืึทื˜ืึทืฉื™ื˜ ะธ ื“ืขืจืžืึธื ืขืŸ ืžืึทื ื•ืึทืœ RM0016, ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืขืก ืื™ื– ืคึผื™ื ืึธื•ื˜ ืื•ืŸ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ื•ื•ืขื ื“ื˜, ืื™ืŸ ื“ื™ ืจื’ืข - ืึทืœืฅ ืึทื ื“ืขืจืฉ. STM8 ืื™ื– ืคึผืจืึธื•ื’ืจืึทืžื“ ืื™ืŸ C ืื™ืŸ ืึท ืฉืจืขืงืœืขืš IDE ืกื˜ ื•ื•ื™ืกื•ืึทืœ ืึทื ื˜ื•ื•ื™ืงืœืขืŸ.

ืงืœืึทืงื™ื ื’ ืื•ืŸ ืื™ืš / ืึธ

ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, STM8 ืึทืคึผืขืจื™ื™ืฅ ืื™ืŸ ืึท ืึธืคื˜ืงื™ื™ึทื˜ ืคื•ืŸ 2 MHz, ื“ืึธืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ืงืขืจืขืงื˜ืึทื“ ืžื™ื“.

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
HSI (ื”ื™ื’ื” ืกืคึผื™ื“ ื™ื ืขืจืœืขืš) ื–ื™ื™ื’ืขืจ
ื“ื™ HSI ื–ื™ื™ื’ืขืจ ืกื™ื’ื ืึทืœ ืื™ื– ื“ืขืจื™ื™ื•ื•ื“ ืคื•ืŸ ืึทืŸ ื™ื ืขืจืœืขืš 16 ืžื”ื– ืจืง ืึทืกืึทืœื™ื™ื˜ืขืจ ืžื™ื˜ ืึท ืคึผืจืึธื•ื’ืจืึทืžืึทื‘ืึทืœ ื“ื™ื•ื•ื™ื“ืขืจ (1 ืฆื• 8). ืขืก ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜ ืื™ืŸ ื“ื™ ื–ื™ื™ื’ืขืจ ื“ื™ื•ื•ื™ื“ืขืจ ืจืขื’ื™ืกื˜ืจื™ืจืŸ (CLK_CKDIVR).
ื‘ืึทืžืขืจืงื•ื ื’: ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘, ืึท HSI RC ืึทืกืึทืœื™ื™ื˜ืขืจ ืžื™ื˜ ืึท ื“ื™ื•ื•ื™ื“ืขืจ ืคื•ืŸ 8 ืื™ื– ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ื•ื•ื™ ื“ื™ ืœื™ื“ื™ื ื’ ืžืงื•ืจ ืคื•ืŸ ื“ื™ ื–ื™ื™ื’ืขืจ ืกื™ื’ื ืึทืœ.

ืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืึทื“ืจืขืก ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทืฉื™ื˜, ื“ื™ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืื™ืŸ refman ืื•ืŸ ื–ืขืŸ ืึทื– ื“ื™ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ื“ืึทืจืฃ ื–ื™ื™ืŸ ืงืœื™ืจื“:

#define CLK_CKDIVR *(volatile uint8_t *)0x0050C6

CLK_CKDIVR &= ~(0x18);

ื–ื™ื ื˜ ืžื™ืจ ื•ื•ืขืœืŸ ืœื•ื™ืคืŸ PWM ืื•ืŸ ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ืœืขื“ืก, ืœืึธื–ืŸ ืื•ื ื“ื– ืงื•ืง ืื™ืŸ ื“ื™ ืคึผื™ื ืึธื•ื˜:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

ื“ืขืจ ืฉืคึผืึธืŸ ืื™ื– ืงืœื™ื™ืŸ, ืคื™ืœืข ืคืึทื ื’ืงืฉืึทื ื– ื–ืขื ืขืŸ ืกื•ืกืคึผืขื ื“ืขื“ ืื•ื™ืฃ ื“ื™ ื–ืขืœื‘ืข ืคึผื™ื ืก. ื•ื•ืึธืก ืื™ื– ืื™ืŸ ืงื•ื•ืึทื“ืจืึทื˜ ื‘ืจืึทืงืึทืฅ ืื™ื– "ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™", ืขืก ืื™ื– ืกื•ื•ื™ื˜ืฉื˜ ื“ื•ืจืš "ืึธืคึผืฆื™ืข ื‘ื™ื˜ืขืก" (ืึธืคึผืฆื™ืข ื‘ื™ื˜ืขืก) - ืขืคึผืขืก ื•ื•ื™ ืึทื˜ืžืขื’ืึท ืคื•ืกืขืก. ืื™ืจ ืงืขื ืขืŸ ื˜ื•ื™ืฉืŸ ื–ื™ื™ืขืจ ื•ื•ืึทืœื•ืขืก ืคึผืจืึธื’ืจืึทืžืžืึทื˜ื™ืงืึทืœืœื™, ืึธื‘ืขืจ ืขืก ืื™ื– ื ื™ื˜ ื ื™ื™ื˜ื™ืง ื•ื•ื™ื™ึทืœ ื“ื™ ื ื™ื™ึทืข ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืื™ื– ืึทืงื˜ื™ื•ื•ื™ื™ื˜ื™ื“ ื‘ืœื•ื™ื– ื ืึธืš ืึท ืจืขื‘ืึธืึธื˜. ืขืก ืื™ื– ื’ืจื™ื ื’ืขืจ ืฆื• ื ื•ืฆืŸ ST ื•ื•ื™ืกื•ืึทืœ ืคึผืจืึธื’ืจืึทืžื™ืกื˜ (ื“ืึทื•ื ืœืึธื•ื“ื™ื“ ืžื™ื˜ ื•ื•ื™ืกื•ืึทืœ ืึทื ื˜ื•ื•ื™ืงืœืขืŸ), ื•ื•ืึธืก ืงืขื ืขืŸ ื˜ื•ื™ืฉืŸ ื“ื™ ื‘ื™ื˜ืขืก. ื“ื™ ืคึผื™ื ืึธื•ื˜ ื•ื•ื™ื™ื–ื˜ ืึทื– ื“ื™ CH1 ืื•ืŸ CH2 ืคึผื™ื ืก ืคื•ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ื˜ื™ื™ึทืžืขืจ ื–ืขื ืขืŸ ืคืึทืจื‘ืึธืจื’ืŸ ืื™ืŸ ืงื•ื•ืึทื“ืจืึทื˜ ื‘ืจืึทืงืึทืฅ; ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ืฉื˜ืขืœืŸ ื“ื™ AFR1 ืื•ืŸ AFR0 ื‘ื™ื˜ืŸ ืื™ืŸ STVP, ืื•ืŸ ื“ื™ ืจื’ืข ื•ื•ืขื˜ ืื•ื™ืš ืึทืจื™ื‘ืขืจืคื™ืจืŸ ื“ื™ CH1 ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ื“ื™ ืจื’ืข ื˜ื™ื™ึทืžืขืจ ืคื•ืŸ PD4 ืฆื• PC5.

ืื–ื•ื™, 6 ืคึผื™ื ืก ื•ื•ืขื˜ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ืœืขื“ืก: PC6, PC7 ืื•ืŸ PC3 ืคึฟืึทืจ ื“ืขืจ ืขืจืฉื˜ืขืจ ื˜ื™ื™ึทืžืขืจ, PC5, PD3 ืื•ืŸ PA3 ืคึฟืึทืจ ื“ื™ ืจื’ืข.

ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ื™ I/O ืคึผื™ื ืก ื–ื™ืš ืื•ื™ืฃ STM8 ืื™ื– ืกื™ืžืคึผืœืขืจ ืื•ืŸ ืžืขืจ ืœืึทื“ื–ืฉื™ืงืึทืœ ื•ื•ื™ ืื•ื™ืฃ STM32:

  • ื‘ืึทืงืึทื ื˜ ืคึฟื•ืŸ Atmega DDR ื“ืึทื˜ืŸ ืจื™ื›ื˜ื•ื ื’ ืจืขื’ื™ืกื˜ืจื™ืจืŸ (ื“ืึทื˜ืึท ื“ื™ืจืขืงื˜ื™ืึธืŸ ืจืขื’ื™ืกื˜ืจื™ืจืŸ): 1 = ืจืขื–ื•ืœื˜ืึทื˜;
  • ื“ืขืจ ืขืจืฉื˜ืขืจ ืงืึธื ื˜ืจืึธืœ ืจืขื’ื™ืกื˜ืจื™ืจืŸ CR1, ื•ื•ืขืŸ ืจืขื–ื•ืœื˜ืึทื˜, ืฉื˜ืขืœื˜ ื“ื™ ืฉื˜ื•ืคึผ-ืฆื™ืขืŸ ืžืึธื“ืข (1) ืึธื“ืขืจ ืขืคืขื ืขืŸ ืคืœื™ืกืŸ (0); ื–ื™ื ื˜ ืื™ืš ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ืœืขื“ืก ืฆื• ื“ื™ ืฉืคึผืึธืŸ ืžื™ื˜ ืงืึทื˜ืึธื•ื“ื–, ืื™ืš ืœืึธื–ืŸ ื–ืขืจืึธืก ื“ืึธ;
  • ื“ื™ ืจื’ืข ืงืึธื ื˜ืจืึธืœ ืจืขื’ื™ืกื˜ืจื™ืจืŸ CR2, ื•ื•ืขืŸ ืจืขื–ื•ืœื˜ืึทื˜, ืฉื˜ืขืœื˜ ื“ื™ ื–ื™ื™ื’ืขืจ ื’ื™ื›ืงื™ื™ึทื˜: 1 = 10 ืžื”ื–

#define PA_DDR     *(volatile uint8_t *)0x005002
#define PA_CR2     *(volatile uint8_t *)0x005004
#define PD_DDR     *(volatile uint8_t *)0x005011
#define PD_CR2     *(volatile uint8_t *)0x005013
#define PC_DDR     *(volatile uint8_t *)0x00500C
#define PC_CR2     *(volatile uint8_t *)0x00500E

PA_DDR = (1<<3); //output
PA_CR2 |= (1<<3); //fast
PD_DDR = (1<<3); //output
PD_CR2 |= (1<<3); //fast
PC_DDR = ((1<<3) | (1<<5) | (1<<6) | (1<<7)); //output
PC_CR2 |= ((1<<3) | (1<<5) | (1<<6) | (1<<7)); //fast

PWM ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ

ืขืจืฉื˜ืขืจ, ืœืึธืžื™ืจ ื“ืขืคื™ื ื™ืจืŸ ื“ื™ ื˜ืขืจืžื™ื ืขืŸ:

  • ืคึผื•ื•ื ืึธืคื˜ืงื™ื™ึทื˜ - ืึธืคื˜ืงื™ื™ึทื˜ ืžื™ื˜ ื•ื•ืึธืก ื“ื™ ื˜ื™ื™ึทืžืขืจ ื˜ื™ืงืก;
  • ืึทื•ื˜ืึธ ืจื™ืœืึธื•ื“, AR - ืึทื•ื˜ืึธืœืึธืึทื“ืึทื‘ืœืข ื•ื•ืขืจื˜ ืฆื• ื•ื•ืึธืก ื“ื™ ื˜ื™ื™ึทืžืขืจ ื•ื•ืขื˜ ืฆื™ื™ืœืŸ (ืคึผื•ืœืก ืคึผืขืจื™ืึธื“);
  • ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ื’ืขืฉืขืขื ื™ืฉ, UEV - ืึท ื’ืขืฉืขืขื ื™ืฉ ื•ื•ืึธืก ืึทืงืขืจื– ื•ื•ืขืŸ ื“ื™ ื˜ื™ื™ึทืžืขืจ ืื™ื– ื’ืขืจืขื›ื ื˜ ืฆื• AR;
  • PWM ืคืœื™ื›ื˜ ืฆื™ืงืœ - PWM ืคืœื™ื›ื˜ ืฆื™ืงืœ, ืึธืคื˜ ื’ืขืจื•ืคืŸ "ืคืœื™ื›ื˜ ืคืึทืงื˜ืึธืจ";
  • ื›ืึทืคึผืŸ / ืคืึทืจื’ืœื™ื™ึทื›ืŸ ื•ื•ืขืจื˜ - ื•ื•ืขืจื˜ ืคึฟืึทืจ ื›ืึทืคึผืŸ / ืคืึทืจื’ืœื™ื™ึทืš, ืฆื• ื•ื•ืึธืก ื“ื™ ื˜ื™ื™ึทืžืขืจ ืื™ื– ื’ืขืจืขื›ื ื˜ ื•ื•ืขื˜ ืขืคึผืขืก ื˜ืึธืŸ (ืื™ืŸ ื“ืขื ืคืึทืœ ืคื•ืŸ PWM, ืขืก ื™ื ื•ื•ืขืจืฅ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืกื™ื’ื ืึทืœ);
  • ืคึผืจืขืœืึธืึทื“ ื•ื•ืขืจื˜ - ืคึผืจืขืœืึธืึทื“ืขื“ ื•ื•ืขืจื˜. ืคืึทืจื’ืœื™ื™ึทื›ืŸ ื•ื•ืขืจื˜ ืงืขื ืขืŸ ื ื™ืฉื˜ ื˜ื•ื™ืฉืŸ ื‘ืฉืขืช ื“ื™ ื˜ื™ื™ึทืžืขืจ ืื™ื– ื˜ื™ืงื˜ืึทืง, ืึทื ื“ืขืจืฉ ื“ื™ PWM ืฆื™ืงืœ ื•ื•ืขื˜ ื‘ืจืขื›ืŸ. ื“ืขืจื™ื‘ืขืจ, ื ื™ื™ึท ื˜ืจืึทื ืกืžื™ื˜ื˜ืขื“ ื•ื•ืึทืœื•ืขืก ื–ืขื ืขืŸ ื’ืขืฉื˜ืขืœื˜ ืื™ืŸ ืึท ื‘ืึทืคืขืจ ืื•ืŸ ืคึผื•ืœื“ ื•ื•ืขืŸ ื“ื™ ื˜ื™ื™ึทืžืขืจ ืจื™ื˜ืฉืึทื– ื“ื™ ืกื•ืฃ ืคื•ืŸ ื–ื™ื™ืŸ ืงืึธื•ื ื˜ื“ืึธื•ื•ืŸ ืื•ืŸ ืื™ื– ื‘ืึทืฉื˜ืขื˜ื™ืง;
  • ืขื“ื–ืฉ-ืึทืœื™ื™ื ื“ ะธ ืฆืขื ื˜ืขืจ-ืึทืœื™ื™ื ื“ ืžืึธื“ืขืก - ืึทืœื™ื™ื ืžืึทื ื˜ ืฆื•ื–ืืžืขืŸ ื“ื™ ื’ืจืขื ืขืฅ ืื•ืŸ ืื™ืŸ ื“ืขื ืฆืขื ื˜ืขืจ, ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ ืึทื˜ืžืขืœ ืฉื ืขืœ ืคึผื•ื•ื ะธ ืคืึทืกืข ืจื™ื›ื˜ื™ืง PWM.
  • OCiREF, ืจืขื–ื•ืœื˜ืึทื˜ ืคืึทืจื’ืœื™ื™ึทื›ืŸ ืจืขืคืขืจืขื ืฅ ืกื™ื’ื ืึทืœ - ืจืขืคึฟืขืจืขื ืฅ ืจืขื–ื•ืœื˜ืึทื˜ ืกื™ื’ื ืึทืœ, ืื™ืŸ ืคืึทืงื˜, ื•ื•ืึธืก ืื™ื– ืืจื•ื™ืก ืื•ื™ืฃ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืฉื˜ื™ืคื˜ ืื™ืŸ PWM ืžืึธื“ืข.

ื•ื•ื™ ืฉื•ื™ืŸ ืงืœืึธืจ ืคึฟื•ืŸ ื“ื™ ืคึผื™ื ืึธื•ื˜, ืฆื•ื•ื™ื™ ื˜ื™ื™ืžืขืจื– ื”ืึธื‘ืŸ PWM ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– - ื“ืขืจ ืขืจืฉื˜ืขืจ ืื•ืŸ ื“ื™ ืจื’ืข. ื‘ื™ื™ื“ืข ื–ืขื ืขืŸ 16-ื‘ื™ืกืœ, ื“ืขืจ ืขืจืฉื˜ืขืจ ื”ืื˜ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื ืึธืš ืคึฟืขื™ึดืงื™ื™ื˜ืŸ (ืื™ืŸ ื‘ืึทื–ื•ื ื“ืขืจ, ืขืก ืงืขื ืขืŸ ืฆื™ื™ืœืŸ ื‘ื™ื™ื“ืข ืึทืจื•ื™ืฃ ืื•ืŸ ืึทืจืึธืคึผ). ืžื™ืจ ื“ืืจืคืŸ ื‘ื™ื™ื“ืข ืืจื‘ืขื˜ืŸ ื’ืœื™ื™ืš, ื”ืื‘ ืื™ืš ื‘ืืฉืœืืกืŸ ืื ืฆื•ื”ื™ื™ื‘ืŸ ืžื™ื˜ ื“ืขื ืื•ื•ื“ืื™ ืืจืขืžืขืจืŸ ืฆื•ื•ื™ื™ื˜ืŸ, ื›ื“ื™ ื ื™ืฉื˜ ืฆื•ืคืขืœื™ื›ืŸ ืฆื• ื ื•ืฆืŸ ืขืคืขืก ื•ื•ืืก ืื™ื– ื ื™ืฉื˜ ื“ื. ืขื˜ืœืขื›ืข ืคึผืจืึธื‘ืœืขื ืื™ื– ืึทื– ื“ื™ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ื“ื™ PWM ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคื•ืŸ ืึทืœืข ื˜ื™ื™ืžืขืจื– ืื™ืŸ ื“ื™ ืจืขืคึฟืขืจืขื ืฅ ืžืึทื ื•ืึทืœ ืื™ื– ืื™ืŸ ื“ื™ ืงืึทืคึผื™ื˜ืœ ื•ื•ืขื’ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ื˜ื™ื™ึทืžืขืจ (17.5.7 PWM ืžืึธื“ืข), ืึทื–ื•ื™ ืื™ืจ ืžื•ื–ืŸ ืฉืคึผืจื™ื ื’ืขืŸ ืฆื•ืจื™ืง ืื•ืŸ ืฆื•ืจื™ืง ืื™ื‘ืขืจ ื“ืขื ื“ืึธืงื•ืžืขื ื˜ ืึทืœืข ื“ื™ ืฆื™ื™ื˜.

PWM ืื•ื™ืฃ STM8 ื”ืื˜ ืึท ื•ื•ื™ื›ื˜ื™ืง ืžื™ื™ึทืœืข ืื™ื‘ืขืจ PWM ืื•ื™ืฃ Atmega:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
Boundary Aligned PWM
ื—ืฉื‘ื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื ืึธ ืฆื• ืฉืคึผื™ืฅ
ื“ื™ ื“ื ืึธ-ืึทืจื•ื™ืฃ ืงืึทื•ื ื˜ื™ื ื’ ืื™ื– ืึทืงื˜ื™ื•ื• ืื•ื™ื‘ ื“ื™ DIR ื‘ื™ืกืœ ืื™ืŸ ื“ื™ TIM_CR1 ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืื™ื– ืงืœื™ืจื“
ื‘ื™ื™ึทืฉืคึผื™ืœ
ื“ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ ื ื™ืฆื˜ ื“ืขืจ ืขืจืฉื˜ืขืจ PWM ืžืึธื“ืข. ื“ื™ PWM ืจืขืคึฟืขืจืขื ืฅ ืกื™ื’ื ืึทืœ OCiREF ืื™ื– ื’ืขื”ืืœื˜ืŸ ื”ื•ื™ืš ืึทื–ื•ื™ ืœืึทื ื’ ื•ื•ื™ TIM1_CNT <TIM1_CCRi. ืึทื ื“ืขืจืฉ ืขืก ื ืขืžื˜ ืึท ื ื™ื“ืขืจื™ืง ืžื“ืจื’ื”. ืื•ื™ื‘ ื“ื™ ืคืึทืจื’ืœื™ื™ึทืš ื•ื•ืขืจื˜ ืื™ืŸ ื“ื™ TIM1_CCRi ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืื™ื– ื’ืจืขืกืขืจ ื•ื•ื™ ื“ื™ ืึทื•ื˜ืึธืœืึธืึทื“ ื•ื•ืขืจื˜ (TIM1_ARR ืจืขื’ื™ืกื˜ืจื™ืจืŸ), ื“ื™ OCiREF ืกื™ื’ื ืึทืœ ืื™ื– ื’ืขื”ืืœื˜ืŸ ื‘ื™ื™ 1. ืื•ื™ื‘ ื“ื™ ืคืึทืจื’ืœื™ื™ึทืš ื•ื•ืขืจื˜ ืื™ื– 0, OCiREF ืื™ื– ื’ืขื”ืืœื˜ืŸ ื‘ื™ื™ึท ื ื•ืœ....

STM8 ื˜ื™ื™ึทืžืขืจ ื‘ืขืฉืึทืก ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ื’ืขืฉืขืขื ื™ืฉ ื˜ืฉืขืงืก ืขืจืฉื˜ืขืจ ืคืึทืจื’ืœื™ื™ึทื›ืŸ ื•ื•ืขืจื˜, ืื•ืŸ ื‘ืœื•ื™ื– ื“ืขืžืึธืœื˜ ื˜ืจืื’ื˜ ืึท ืจืขืคึฟืขืจืขื ืฅ ืกื™ื’ื ืึทืœ. ืึทื˜ืžืขื’ืึท ืก ื˜ื™ื™ึทืžืขืจ ืขืจืฉื˜ืขืจ ืกืงืจื•ื– ืึทืจื•ื™ืฃ ืื•ืŸ ื“ืขืžืึธืœื˜ ืงืึทืžืคึผืขืจื–, ืจื™ื–ืึทืœื˜ื™ื ื’ ืื™ืŸ compare value == 0 ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื– ืึท ื ืึธื“ืœ, ื•ื•ืึธืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ื“ืขืœื˜ ืžื™ื˜ ืขืคืขืก (ืœืžืฉืœ, ื“ื•ืจืš ืคึผืจืึธื’ืจืึทืžืžืึทื˜ื™ืง ื™ื ื•ื•ืขืจื˜ื™ื ื’ ื“ื™ ืœืึธื’ื™ืง).

ืึทื–ื•ื™ ื•ื•ืึธืก ืžื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื˜ืึธืŸ: 8-ื‘ื™ืกืœ PWM (AR == 255), ืงืึทื•ื ื˜ื™ื ื’ ืคื•ืŸ ื“ื ืึธ ืฆื• ืฉืคึผื™ืฅ, ืึทืœื™ื™ื ืžืึทื ื˜ ืฆื•ื–ืืžืขืŸ ื“ื™ ื’ืจืขื ืขืฅ. ื–ื™ื ื˜ ื“ื™ ืœื™ื›ื˜ ื‘ืึทืœื‘ื– ื–ืขื ืขืŸ ืคืืจื‘ื•ื ื“ืŸ ืฆื• ื“ื™ ืฉืคึผืึธืŸ ื“ื•ืจืš ืงืึทื˜ืึธื•ื“ื–, ื“ื™ PWM ื–ืึธืœ ืจืขื–ื•ืœื˜ืึทื˜ 0 (LED ืื•ื™ืฃ) ื‘ื™ื– ืคืึทืจื’ืœื™ื™ึทื›ืŸ ื•ื•ืขืจื˜ ืื•ืŸ 1 ื ืึธืš.

ืžื™ืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืœื™ื™ืขื ืขืŸ ื•ื•ืขื’ืŸ ืขื˜ืœืขื›ืข ืคึผื•ื•ื ืžืึธื“ืข, ืึทื–ื•ื™ ืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืคืืจืœืื ื’ื˜ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืคื•ืŸ ื“ื™ ืจื’ืข ื˜ื™ื™ึทืžืขืจ ื“ื•ืจืš ื–ื•ื›ืŸ ืื™ืŸ ื“ื™ ืจืขืคึฟืขืจืขื ืฅ ืžืึทื ื•ืึทืœ ืคึฟืึทืจ ื“ืขื ืคืจืึทื–ืข (18.6.8 - TIMx_CCMR1):

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
110: ืขืจืฉื˜ืขืจ ืคึผื•ื•ื ืžืึธื“ืข - ื•ื•ืขืŸ ืงืึทื•ื ื˜ื™ื ื’ ืคื•ืŸ ื“ื ืึธ ืฆื• ืฉืคึผื™ืฅ, ื“ืขืจ ืขืจืฉื˜ืขืจ ืงืึทื ืึทืœ ืื™ื– ืึทืงื˜ื™ื•ื• ื‘ืฉืขืช TIMx_CNT <TIMx_CCR1. ืึทื ื“ืขืจืฉ, ื“ืขืจ ืขืจืฉื˜ืขืจ ืงืึทื ืึทืœ ืื™ื– ื™ื ืึทืงื˜ื™ื•ื•. [ื•ื•ื™ื™ึทื˜ืขืจ ืื™ืŸ ื“ืขื ื“ืึธืงื•ืžืขื ื˜ ืขืก ืื™ื– ืึท ืขืจืึธื•ื ื™ืึทืก ืงืึธืคึผื™ืข-ืคึผืึทืกื˜ืข ืคื•ืŸ โ€‹โ€‹ื˜ื™ื™ึทืžืขืจ 1] 111: ืฆื•ื•ื™ื™ื˜ืข ืคึผื•ื•ื ืžืึธื“ืข - ื•ื•ืขืŸ ืงืึทื•ื ื˜ื™ื ื’ ืคื•ืŸ ื“ื ืึธ ืฆื• ืฉืคึผื™ืฅ, ื“ืขืจ ืขืจืฉื˜ืขืจ ืงืึทื ืึทืœ ืื™ื– ื™ื ืึทืงื˜ื™ื•ื• ื‘ืฉืขืช TIMx_CNT <TIMx_CCR1. ืึทื ื“ืขืจืฉ, ื“ืขืจ ืขืจืฉื˜ืขืจ ืงืึทื ืึทืœ ืื™ื– ืึทืงื˜ื™ื•ื•.

ื–ื™ื ื˜ ื“ื™ ืœืขื“ืก ื–ืขื ืขืŸ ืคืืจื‘ื•ื ื“ืŸ ืฆื• ื“ื™ MK ื“ื•ืจืš ืงืึทื˜ืึธื•ื“ื–, ื“ื™ ืจื’ืข ืžืึธื“ืข ืื™ื– ืคึผืึทืกื™ืง ืคึฟืึทืจ ืื•ื ื“ื– (ื“ืขืจ ืขืจืฉื˜ืขืจ ืื•ื™ืš, ืึธื‘ืขืจ ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกืŸ ืึทื– ื ืึธืš).

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ื‘ื™ืกืœ 3 OC1PE: ื’ืขื‘ืŸ ืฉื˜ื™ืคื˜ 1 ืคึผืจืขืœืึธืึทื“
0: ืคึผืจืขืœืึธืึทื“ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืื•ื™ืฃ TIMx_CCR1 ืื™ื– ืคืึทืจืงืจื™ืคึผืœื˜. ืื™ืจ ืงืขื ืขืŸ ืฉืจื™ื™ึทื‘ืŸ ืฆื• TIMx_CCR1 ืื™ืŸ ืงื™ื™ืŸ ืฆื™ื™ื˜. ื“ื™ ื ื™ื™ึทืข ื•ื•ืขืจื˜ ืึทืจื‘ืขื˜ ืžื™ื“.
1: ืคึผืจืขืœืึธืึทื“ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืื•ื™ืฃ TIMx_CCR1 ืื™ื– ืขื ื™ื™ื‘ืึทืœื“. ืœื™ื™ืขื ืขืŸ / ืฉืจื™ื™ึทื‘ืŸ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืึทืงืกืขืก ื“ื™ ืคึผืจืขืœืึธืึทื“ ืจืขื’ื™ืกื˜ืจื™ืจืŸ. ื“ื™ ืคึผืจืขืœืึธืึทื“ืขื“ ื•ื•ืขืจื˜ TIMx_CCR1 ืื™ื– ืœืึธื•ื“ื™ื“ ืื™ืŸ ื“ื™ ืฉืึธื˜ืŸ ืจืขื’ื™ืกื˜ืจื™ืจืŸ ื‘ืขืฉืึทืก ื™ืขื“ืขืจ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ื’ืขืฉืขืขื ื™ืฉ.
* ื‘ืึทืžืขืจืงื•ื ื’: ืคึฟืึทืจ PWM ืžืึธื“ืข ืฆื• ืึทืจื‘ืขื˜ืŸ ืจืขื›ื˜, ื“ื™ ืคึผืจืขืœืึธืึทื“ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ืžื•ื–ืŸ ื–ื™ื™ืŸ ืขื ื™ื™ื‘ืึทืœื“. ื“ืึธืก ืื™ื– ื ื™ื˜ ื ื™ื™ื˜ื™ืง ืื™ืŸ ืื™ื™ืŸ ืกื™ื’ื ืึทืœ ืžืึธื“ืข (ื“ื™ OPM ื‘ื™ืกืœ ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜ ืื™ืŸ ื“ื™ TIMx_CR1 ืจืขื’ื™ืกื˜ืจื™ืจืŸ).

ืึธื•ืงื™ื™, ืœืึธื–ืŸ ืื•ื ื“ื– ืงืขืจ ืื•ื™ืฃ ืึทืœืฅ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืคึฟืึทืจ ื“ื™ ื“ืจื™ื™ ื˜ืฉืึทื ืึทืœื– ืคื•ืŸ ื“ื™ ืจื’ืข ื˜ื™ื™ึทืžืขืจ:

#define TIM2_CCMR1 *(volatile uint8_t *)0x005307
#define TIM2_CCMR2 *(volatile uint8_t *)0x005308
#define TIM2_CCMR3 *(volatile uint8_t *)0x005309

#define PWM_MODE2   0x70 //PWM mode 2, 0b01110000
#define OCxPE       0x08 //preload enable

TIM2_CCMR1 = (PWM_MODE2 | OCxPE);
TIM2_CCMR2 = (PWM_MODE2 | OCxPE);
TIM2_CCMR3 = (PWM_MODE2 | OCxPE);

AR ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ืฆื•ื•ื™ื™ ืึทื›ื˜-ื‘ื™ืกืœ ืจืขื“ื–ืฉื™ืกื˜ืขืจื–, ืึทืœืฅ ืื™ื– ืคึผืฉื•ื˜:

#define TIM2_ARRH  *(volatile uint8_t *)0x00530F
#define TIM2_ARRL  *(volatile uint8_t *)0x005310

TIM2_ARRH = 0;
TIM2_ARRL = 255;

ื“ื™ ืจื’ืข ื˜ื™ื™ึทืžืขืจ ืงืขื ืขืŸ ื ืึธืจ ืฆื™ื™ืœืŸ ืคื•ืŸ ื“ื ืึธ ืฆื• ืฉืคึผื™ืฅ, ืึทืœื™ื™ื ืžืึทื ื˜ ืฆื•ื–ืืžืขืŸ ื“ื™ ื’ืจืขื ืขืฅ, ื’ืึธืจื ื™ืฉื˜ ื“ืึทืจืฃ ื–ื™ื™ืŸ ื’ืขื‘ื™ื˜ืŸ. ื–ืืœ ืก ืฉื˜ืขืœืŸ ื“ื™ ืึธืคื˜ืงื™ื™ึทื˜ ื“ื™ื•ื•ื™ื“ืขืจ, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืฆื• 256. ืคึฟืึทืจ ื“ื™ ืจื’ืข ื˜ื™ื™ึทืžืขืจ, ื“ื™ ื“ื™ื•ื•ื™ื“ืขืจ ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜ ืื™ืŸ ื“ื™ TIM2_PSCR ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืื•ืŸ ืื™ื– ืึท ืžืึทื›ื˜ ืคื•ืŸ ืฆื•ื•ื™ื™:

#define TIM2_PSCR  *(volatile uint8_t *)0x00530E

TIM2_PSCR = 8;

ืึทืœืข ื•ื•ืึธืก ื‘ืœื™ื™ื‘ื˜ ืื™ื– ืฆื• ื•ื•ืขื ื“ืŸ ืื•ื™ืฃ ื“ื™ ืงืึทื ืงืœื•ื–ืฉืึทื ื– ืื•ืŸ ื“ื™ ืจื’ืข ื˜ื™ื™ึทืžืขืจ ื–ื™ืš. ื“ืขืจ ืขืจืฉื˜ืขืจ ืคึผืจืึธื‘ืœืขื ืื™ื– ืกืึทืœื•ื•ื“ ื“ื•ืจืš ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื›ืึทืคึผืŸ / ืคืึทืจื’ืœื™ื™ึทื›ืŸ ื’ืขื‘ืŸ: ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™, ื“ืจื™ื™ึท ื˜ืฉืึทื ืึทืœื– ืฆืขื•ื•ืึธืจืคืŸ ืื™ื‘ืขืจ ื–ื™ื™ ืึทืกื™ืžืžืขื˜ืจื™ืงืœื™. ื“ืึธ ืžื™ืจ ืงืขื ืขืŸ ืื•ื™ืš ืœืขืจื ืขืŸ ืึทื– ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ื˜ื•ื™ืฉืŸ ื“ื™ ืคึผืึธื•ืœืขืจืึทื˜ื™ ืคื•ืŸ ื“ื™ ืกื™ื’ื ืึทืœ, ื“.ื”. ืื™ืŸ ืคึผืจื™ื ืฆื™ืคึผ, ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ื ื•ืฆืŸ PWM ืžืึธื“ืข 1. ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ:

#define TIM2_CCER1 *(volatile uint8_t *)0x00530A
#define TIM2_CCER2 *(volatile uint8_t *)0x00530B

#define CC1E  (1<<0) // CCER1
#define CC2E  (1<<4) // CCER1
#define CC3E  (1<<0) // CCER2

TIM2_CCER1 = (CC1E | CC2E);
TIM2_CCER2 = CC3E;

ืื•ืŸ ืœืขืกืึธืฃ, ืžื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ื“ื™ ื˜ื™ื™ึทืžืขืจ ืื™ืŸ ื“ื™ TIMx_CR1 ืจืขื’ื™ืกื˜ืจื™ืจืŸ:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

#define TIM2_CR1   *(volatile uint8_t *)0x005300

TIM2_CR1 |= 1;

ืœืึธืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืึท ืคึผืฉื•ื˜ ืึทื ืึทืœืึธื’ ืคื•ืŸ AnalogWrite (), ื•ื•ืึธืก ื•ื•ืขื˜ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ื“ื™ ืคืึทืงื˜ื™ืฉ ื•ื•ืึทืœื•ืขืก ืฆื• ื“ื™ ื˜ื™ื™ึทืžืขืจ ืคึฟืึทืจ ืคืึทืจื’ืœื™ื™ึทืš. ื“ื™ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ื–ืขื ืขืŸ ืคึผืจื™ื“ื™ืงื˜ืึทื‘ืœื™ ื’ืขื”ื™ื™ืกืŸ ื›ืึทืคึผืŸ / ืคืึทืจื’ืœื™ื™ึทื›ืŸ ืจืขื“ื–ืฉื™ืกื˜ืขืจื–, ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ืคื•ืŸ ื–ื™ื™ ืคึฟืึทืจ ื™ืขื“ืขืจ ืงืึทื ืึทืœ: ื“ื™ ื ื™ื“ืขืจื™ืง-ืกื“ืจ 8 ื‘ื™ื˜ืŸ ืื™ืŸ TIM2_CCRxL ืื•ืŸ ื“ื™ ื”ื•ื™ืš-ืกื“ืจ ืึธื ืขืก ืื™ืŸ TIM2_CCRxH. ื–ื™ื ื˜ ืžื™ืจ ื”ืึธื‘ืŸ ื‘ืืฉืืคืŸ ืึท 8-ื‘ื™ืกืœ PWM, ืขืก ืื™ื– ื’ืขื ื•ื’ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ื‘ืœื•ื™ื– ื“ื™ ืงืœืขื ืกื˜ืขืจ ื‘ืึทื˜ื™ื™ื˜ื™ืง ื‘ื™ื˜ืŸ:

#define TIM2_CCR1L *(volatile uint8_t *)0x005312
#define TIM2_CCR2L *(volatile uint8_t *)0x005314
#define TIM2_CCR3L *(volatile uint8_t *)0x005316

void setRGBled(uint8_t r, uint8_t g, uint8_t b)
{
    TIM2_CCR1L = r;
    TIM2_CCR2L = g;
    TIM2_CCR3L = b;
}

ื“ื™ ืึทื˜ืขื ื˜ื™ื•ื• ืœื™ื™ืขื ืขืจ ื•ื•ืขื˜ ื‘ืึทืžืขืจืงืŸ ืึทื– ืžื™ืจ ื”ืึธื‘ืŸ ืึท ื‘ื™ืกืœ ื“ืขืคืขืงื˜ื™ื•ื•ืข ืคึผื•ื•ื, ื ื™ื˜ ื‘ื™ื›ื•ืœืช ืฆื• ืคึผืจืึธื“ื•ืฆื™ืจืŸ 100% ืคึผืœืึธืžื‘ื™ืจืŸ (ืื™ืŸ ืึท ืžืึทืงืกื™ืžื•ื ื•ื•ืขืจื˜ ืคื•ืŸ 255, ื“ืขืจ ืกื™ื’ื ืึทืœ ืื™ื– ื™ื ื•ื•ืขืจื˜ื™ื“ ืคึฟืึทืจ ืื™ื™ืŸ ื˜ื™ื™ึทืžืขืจ ืฆื™ืงืœ). ืคึฟืึทืจ ืœืขื“ืก ื“ืึธืก ื˜ื•ื˜ ื ื™ืฉื˜ ืขื ื™ืŸ, ืื•ืŸ ื“ื™ ืึทื˜ืขื ื˜ื™ื•ื• ืœื™ื™ืขื ืขืจ ืงืขื ืขืŸ ืฉื•ื™ืŸ ื˜ืจืขืคืŸ ื•ื•ื™ ืฆื• ืคืึทืจืจื™ื›ื˜ืŸ ืขืก.

PWM ืื•ื™ืฃ ื“ื™ ืจื’ืข ื˜ื™ื™ึทืžืขืจ ืึทืจื‘ืขื˜, ืœืึธื–ืŸ ืื•ื ื“ื– ื’ื™ื™ืŸ ืฆื• ื“ืขืจ ืขืจืฉื˜ืขืจ.

ื“ืขืจ ืขืจืฉื˜ืขืจ ื˜ื™ื™ึทืžืขืจ ื”ืื˜ ืคึผื•ื ืงื˜ ื“ื™ ื–ืขืœื‘ืข ื‘ื™ื˜ืŸ ืื™ืŸ ื“ื™ ื–ืขืœื‘ืข ืจืขื“ื–ืฉื™ืกื˜ืขืจื– (ืขืก ืื™ื– ื ืึธืจ ืึทื– ื“ื™ ื‘ื™ื˜ืŸ ื•ื•ืึธืก ื–ืขื ืขืŸ ืคืืจื‘ืœื™ื‘ืŸ "ืจืขื–ืขืจื•ื•ื™ืจื˜" ืื™ืŸ ื“ื™ ืจื’ืข ื˜ื™ื™ึทืžืขืจ ื–ืขื ืขืŸ ืึทืงื˜ื™ื•ื•ืœื™ ื’ืขื ื™ืฆื˜ ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืคึฟืึทืจ ืึทืœืข ืกืึธืจืฅ ืคื•ืŸ ืึทื•ื•ืึทื ืกื™ืจื˜ืข ื–ืื›ืŸ). ื“ืขืจื™ื‘ืขืจ, ืขืก ืื™ื– ื’ืขื ื•ื’ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืึทื“ืจืขืกืขืก ืคื•ืŸ ื“ื™ ื–ืขืœื‘ืข ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทืฉื™ื˜ ืื•ืŸ ื ืึธื›ืžืึทื›ืŸ ื“ื™ ืงืึธื“. ื ื•, ื˜ื•ื™ืฉืŸ ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ื“ื™ ืึธืคื˜ืงื™ื™ึทื˜ ื“ื™ื•ื•ื™ื“ืขืจ, ื•ื•ื™ื™ึทืœ ... ื“ืขืจ ืขืจืฉื˜ืขืจ ื˜ื™ื™ึทืžืขืจ ื•ื•ื™ืœ ืฆื• ื‘ืึทืงื•ืžืขืŸ ื ื™ืฉื˜ ืึท ืžืึทื›ื˜ ืคื•ืŸ ืฆื•ื•ื™ื™, ืึธื‘ืขืจ ืึท ืคึผื™ื ื˜ืœืขืš 16-ื‘ื™ืกืœ ื•ื•ืขืจื˜ ืื™ืŸ ืฆื•ื•ื™ื™ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ืคึผืจืขืกืงืึทืœืขืจ ื”ื•ื™ืš ะธ ื ื™ื“ืขืจื™ืง. ืžื™ืจ ื˜ืึธืŸ ืึทืœืฅ ืื•ืŸ ... ื“ืขืจ ืขืจืฉื˜ืขืจ ื˜ื™ื™ึทืžืขืจ ื˜ื•ื˜ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ. ื•ื•ืืก ืื™ื– ื“ื™ ืžืขืฉื”?

ื“ืขืจ ืคึผืจืึธื‘ืœืขื ืงืขื ืขืŸ ื–ื™ื™ืŸ ืกืึทืœื•ื•ื“ ื‘ืœื•ื™ื– ื“ื•ืจืš ืงื•ืงืŸ ื“ื•ืจืš ื“ื™ ื’ืื ืฆืข ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื•ื•ืขื’ืŸ ื“ื™ ืงืึธื ื˜ืจืึธืœ ืจืขื“ื–ืฉื™ืกื˜ืขืจื– ืคื•ืŸ ื˜ื™ื™ึทืžืขืจ 1, ื•ื•ื• ืžื™ืจ ืงื•ืงืŸ ืคึฟืึทืจ ื“ื™ ื•ื•ืึธืก ื“ื™ ืจื’ืข ื˜ื™ื™ึทืžืขืจ ื”ืื˜ ื ื™ืฉื˜. ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ 17.7.30 ื‘ืจืขื›ืŸ ืจืขื’ื™ืกื˜ืจื™ืจืŸ (TIM1_BKR), ื•ื•ื• ืขืก ืื™ื– ื“ืึธืก ื‘ื™ืกืœ:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ื’ืขื‘ืŸ ื”ื•ื™ืคึผื˜ ืจืขื–ื•ืœื˜ืึทื˜

#define TIM1_BKR   *(volatile uint8_t *)0x00526D

TIM1_BKR = (1<<7);

ืึทื– ืก ืึทืœืข ืคึฟืึทืจ ื–ื™ื›ืขืจ ืื™ืฆื˜, ื“ื™ ืงืึธื“ ื“ืึธืจื˜ืŸ.

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

STM8 ืžื•ืœื˜ื™ืคึผืœืขืงืก

ืžื•ืœื˜ื™ืคึผืœืขืงืกื™ื ื’ ืื•ื™ืฃ STM8

ื“ื™ ื“ืจื™ื˜ ืžื™ื ื™-ืคึผืจื•ื™ืขืงื˜ ืื™ื– ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืึทื›ื˜ RGB ืœืขื“ืก ืฆื• ื“ื™ ืจื’ืข ื˜ื™ื™ึทืžืขืจ ืื™ืŸ ืคึผื•ื•ื ืžืึธื“ืข ืื•ืŸ ืžืึทื›ืŸ ื–ื™ื™ ื•ื•ื™ื™ึทื–ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืคืืจื‘ืŸ. ืขืก ืื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ืขืจ ื‘ืึทื’ืจื™ืฃ ืคื•ืŸ ื’ืขืคื™ืจื˜ ืžื•ืœื˜ื™ืคึผืœืขืงืกื™ื ื’, ื•ื•ืึธืก ืื™ื– ืึทื– ืื•ื™ื‘ ืื™ืจ ืงืขืจ ืื•ื™ืฃ ืื•ืŸ ืึทื•ื•ืขืง ืœืขื“ืก ื–ื™ื™ืขืจ, ื–ื™ื™ืขืจ ื’ืขืฉื•ื•ื™ื ื“, ืขืก ื•ื•ืขื˜ ื•ื™ืกืงื•ืžืขืŸ ืฆื• ืื•ื ื“ื– ืึทื– ื–ื™ื™ ื–ืขื ืขืŸ ืงืขืกื™ื™ื“ืขืจ ืื•ื™ืฃ (ืคึผืขืจืกื™ืกื˜ืึทื ืก ืคื•ืŸ ื–ืขืื•ื ื’, ื™ื ืขืจืฉืึท ืคื•ืŸ ื•ื•ื™ื–ืฉืึทื•ื•ืึทืœ ืžืขืจืงื•ื ื’). ืื™ืš ื”ืื‘ ืืžืืœ ื’ืขื˜ื•ืŸ ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก ืื•ื™ืฃ Arduino.

ื“ืขืจ ืึทืจื‘ืขื˜ ืึทืœื’ืขืจื™ื“ืึทื ืงื•ืงื˜ ื•ื•ื™ ื“ืึธืก:

  • ืงืึธื ื ืขืงื˜ืขื“ ื“ื™ ืึทื ืึธื•ื“ ืคื•ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ RGB ื’ืขืคื™ืจื˜;
  • ืœื™ื˜ ืขืก, ืฉื™ืงื˜ ื“ื™ ื ื™ื™ื˜ื™ืง ืกื™ื’ื ืึทืœื– ืฆื• ื“ื™ ืงืึทื˜ืึธื•ื“ื–;
  • ื’ืขื•ื•ืืจื˜ ื‘ื™ื– ื“ืขื ืกื•ืฃ ืคื•ืŸ ื“ื™ ืคึผื•ื•ื ืฆื™ืงืœ;
  • ืงืึธื ื ืขืงื˜ืขื“ ื“ื™ ืึทื ืึธื•ื“ ืคื•ืŸ ื“ื™ ืจื’ืข RGB ื’ืขืคื™ืจื˜;
  • ืฆื™ื ื“ ืขืก ...

ื ื• ื•ื›ื•'. ืคื•ืŸ ืงื•ืจืก, ืคึฟืึทืจ ืฉื™ื™ืŸ ืึธืคึผืขืจืึทืฆื™ืข ืขืก ืื™ื– ืคืืจืœืื ื’ื˜ ืึทื– ื“ื™ ืึทื ืึธื•ื“ ืื™ื– ืงืึธื ื ืขืงื˜ืขื“ ืื•ืŸ ื“ื™ ื’ืขืคื™ืจื˜ ืื™ื– "ื™ื’ื ื™ื˜ื™ื“" ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜. ื ื•, ืึธื“ืขืจ ื›ึผืžืขื˜. ืื™ืŸ ืงื™ื™ืŸ ืคืึทืœ, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืึท ืงืึธื“ ื•ื•ืึธืก ื•ื•ืขื˜ ืจืขื–ื•ืœื˜ืึทื˜ ื•ื•ืึทืœื•ืขืก ืื™ืŸ ื“ืจื™ื™ ื˜ืฉืึทื ืึทืœื– ืคื•ืŸ ื“ื™ ืจื’ืข ื˜ื™ื™ึทืžืขืจ, ื˜ื•ื™ืฉืŸ ื–ื™ื™ ื•ื•ืขืŸ UEV ืื™ื– ืจื™ื˜ืฉื˜, ืื•ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ ื˜ื•ื™ืฉืŸ ื“ื™ ืื™ืฆื˜ ืึทืงื˜ื™ื•ื• RGB ื’ืขืคื™ืจื˜.

ื–ื™ื ื˜ ื“ื™ ื’ืขืคื™ืจื˜ ืกื•ื•ื™ื˜ืฉื™ื ื’ ืื™ื– ืึธื˜ืึทืžืึทื˜ื™ืง, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืึทืคึฟืŸ ืึท "ื•ื•ื™ื“ืขื ื–ื›ึผืจื•ืŸ" ืคึฟื•ืŸ ื•ื•ืึธืก ื“ื™ ื™ื ื˜ืขืจืึทืคึผื˜ื™ื“ ื”ืึทื ื“ืœืขืจ ื•ื•ืขื˜ ื‘ืึทืงื•ืžืขืŸ ื“ืึทื˜ืŸ. ื“ืึธืก ืื™ื– ืึท ืคึผืฉื•ื˜ ืžืขื ื’ืข:

uint8_t colors[8][3];

ืื™ืŸ ืกื“ืจ ืฆื• ื˜ื•ื™ืฉืŸ ื“ื™ ืงืึธืœื™ืจ ืคื•ืŸ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื’ืขืคื™ืจื˜, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื ื•ื’ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ื“ื™ ืคืืจืœืื ื’ื˜ ื•ื•ืึทืœื•ืขืก ืื™ืŸ ื“ืขื ืžืขื ื’ืข. ืื•ืŸ ื“ื™ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ื•ื•ืขื˜ ื–ื™ื™ืŸ ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื“ื™ ืึทืงื˜ื™ื•ื• ื’ืขืคื™ืจื˜

uint8_t cnt;

Demux

ืคึฟืึทืจ ื’ืขื”ืขืจื™ืง ืžื•ืœื˜ื™ืคึผืœืขืงืกื™ื ื’, ืžื™ืจ ื“ืึทืจืคึฟืŸ, ืึทื“ืœื™ ื’ืขื ื•ื’, ืึท CD74HC238 ื“ืขืžื•ืœื˜ื™ืคึผืœืขืงืกืขืจ. ื“ืขืžื•ืœื˜ื™ืคึผืœืขืงืกืขืจ - ืึท ืฉืคึผืึธืŸ ื•ื•ืึธืก ื™ืžืคึผืœืึทืžืึทื ืฅ ื“ืขืจ ืึธืคึผืขืจืึทื˜ืึธืจ ืื™ืŸ ื™ื™ึทื–ื ื•ื•ืึทืจื’ <<. ื“ื•ืจืš ื“ืจื™ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืคึผื™ื ืก (ื‘ื™ืฅ 0, 1 ืื•ืŸ 2) ืžื™ืจ ืงืึธืจืžืขืŸ ืขืก ืึท ื“ืจื™ื™-ื‘ื™ืกืœ ื ื•ืžืขืจ X, ืื•ืŸ ืื™ืŸ ืขื ื˜ืคืขืจ ืขืก ืึทืงื˜ืึทื•ื•ื™ื™ืฅ ืจืขื–ื•ืœื˜ืึทื˜ ื ื•ืžืขืจ (1<<X). ื“ื™ ืจื•ืขืŸ ื™ื ืคึผื•ืฅ ืคื•ืŸ ื“ื™ ืฉืคึผืึธืŸ ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜ ืฆื• ื•ื•ืึธื’ ื“ื™ ื’ืื ืฆืข ืคึผืœืึทืŸ. ืžื™ืจ ื“ืึทืจืคึฟืŸ ื“ืขื ืฉืคึผืึธืŸ ื ื™ื˜ ื‘ืœื•ื™ื– ืฆื• ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืคืึทืจื ื•ืžืขืŸ ืžื™ืงืจืึธืงืึธื ื˜ืจืึธืœืœืขืจ ืคึผื™ื ืก, ืึธื‘ืขืจ ืื•ื™ืš ืคึฟืึทืจ ื–ื™ื›ืขืจืงื™ื™ึทื˜ - ืึทื–ื•ื™ ื•ื•ื™ ื ื™ืฉื˜ ืฆื• ืึทืงืกืึทื“ืขื ืึทืœื™ ืงืขืจ ืื•ื™ืฃ ืžืขืจ ืœืขื“ืก ื•ื•ื™ ืžืขื’ืœืขืš ืื•ืŸ ื ื™ืฉื˜ ืคืึทืจื‘ืจืขื ืขืŸ ื“ื™ MK. ื“ืขืจ ืฉืคึผืึธืŸ ืงืึธืก ืึท ืคึผืขื ื™ ืื•ืŸ ื–ืึธืœ ืฉื˜ืขื ื“ื™ืง ื–ื™ื™ืŸ ื’ืขื”ืืœื˜ืŸ ืื™ืŸ ื“ื™ื™ืŸ ื”ื™ื™ื ืžืขื“ื™ืฆื™ืŸ ืงืึทื‘ื™ื ืขื˜.

ืื•ื ื“ื–ืขืจ CD74HC238 ื•ื•ืขื˜ ื–ื™ื™ืŸ ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ืกืึทืคึผืœื™ื™ื™ื ื’ ื•ื•ืึธื•ืœื˜ื™ื“ื–ืฉ ืฆื• ื“ื™ ืึทื ืึธื•ื“ ืคื•ืŸ ื“ื™ ื’ืขื‘ืขื˜ืŸ ื’ืขืคื™ืจื˜. ืื™ืŸ ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืžื•ืœื˜ื™ืคึผืœืขืงืก, ืขืก ื•ื•ืึธืœื˜ ืฆื•ืฉื˜ืขืœืŸ ื•ื•ืึธื•ืœื˜ื™ื“ื–ืฉ ืฆื• ื“ื™ ื–ื™ื™ึทืœ ื“ื•ืจืš ืึท P-MOSFET, ืึธื‘ืขืจ ืื™ืŸ ื“ืขื ื“ืขืžืึธ ืขืก ืื™ื– ืžืขื’ืœืขืš ื’ืœื™ื™ึทืš, ื•ื•ื™ื™ึทืœ ืขืก ื“ืจืึธื– 20 ืžืึท, ืœื•ื™ื˜ ืฆื• ืึทื‘ืกืึธืœื•ื˜ ืžืึทืงืกื™ืžื•ื ืจื™ื™ื˜ื™ื ื’ื– ืื™ืŸ ื“ื™ ื“ืึทื˜ืŸ ื‘ืœืึทื˜. ืคื•ืŸ ื“ืึทื˜ืึทืฉื™ื˜ CD74HC238 ืžื™ืจ ื“ืึทืจืคึฟืŸ ืคึผื™ื ืึธื•ืฅ ืื•ืŸ ื“ืขื ืึธืคึผื ืึทืจืŸ ื‘ืœืึทื˜:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ื” = ื”ื•ื™ืš ื•ื•ืึธื•ืœื˜ื™ื“ื–ืฉ ืžื“ืจื’ื”, ืœ = ื ื™ื“ืขืจื™ืง ื•ื•ืึธื•ืœื˜ื™ื“ื–ืฉ ืžื“ืจื’ื”, X - ื˜ืึธืŸ ื ื™ื˜ ื–ืึธืจื’ืŸ

ืžื™ืจ ืคืึทืจื‘ื™ื ื“ืŸ E2 ืื•ืŸ E1 ืฆื• ืขืจื“, E3, A0, A1 ืื•ืŸ A3 ืฆื• ืคึผื™ื ืก PD5, PC3, PC4 ืื•ืŸ PC5 ืคื•ืŸ STM8. ื–ื™ื ื˜ ื“ื™ ื˜ื™ืฉ ืื•ื™ื‘ืŸ ื›ึผื•ืœืœ ื ื™ื“ืขืจื™ืง ืื•ืŸ ื”ื•ื™ืš ืœืขื•ื•ืขืœืก, ืžื™ืจ ืงืึทื ืคื™ื’ื™ืขืจ ื“ื™ ืคึผื™ื ืก ื•ื•ื™ ืฉื˜ื•ืคึผืŸ-ืฆื™ืขืŸ ืคึผื™ื ืก.

PWM

PWM ืื•ื™ืฃ ื“ื™ ืจื’ืข ื˜ื™ื™ึทืžืขืจ ืื™ื– ืงืึทื ืคื™ื’ื™ืขืจื“ ืื™ืŸ ื“ื™ ื–ืขืœื‘ืข ื•ื•ืขื’ ื•ื•ื™ ืื™ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื’ืขืฉื™ื›ื˜ืข, ืžื™ื˜ ืฆื•ื•ื™ื™ ื“ื™ืคืขืจืึทื ืกื™ื–:

ืขืจืฉื˜ืขืจ, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื’ืขื‘ืŸ ื“ื™ ื™ื‘ืขืจืจื™ื™ึทืก ืื•ื™ืฃ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ื’ืขืฉืขืขื ื™ืฉ (UEV) ื•ื•ืึธืก ื•ื•ืขื˜ ืจื•ืคืŸ ืึท ืคึฟื•ื ืงืฆื™ืข ื•ื•ืึธืก ื˜ืึทื’ืึทืœื– ื“ื™ ืึทืงื˜ื™ื•ื• ื’ืขืคื™ืจื˜. ื“ืขื ืื™ื– ื’ืขื˜ืืŸ ื“ื•ืจืš ื˜ืฉืึทื ื’ื™ื ื’ ื“ื™ ื‘ื™ืกืœ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ื™ื ื˜ืขืจืจื•ืคึผื˜ ื’ืขื‘ืŸ ืื™ืŸ ืึท ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืžื™ื˜ ืึท ื˜ืขืœื™ื ื’ ื ืึธืžืขืŸ

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
ื™ื‘ืขืจืจื™ื™ึทืกืŸ ื’ืขื‘ืŸ ืจืขื’ื™ืกื˜ืจื™ืจืŸ

#define TIM2_IER   *(volatile uint8_t *)0x005303

//enable interrupt
TIM2_IER = 1;

ื“ื™ ืฆื•ื•ื™ื™ื˜ืข ื—ื™ืœื•ืง ืื™ื– ืฉื™ื™ึทื›ื•ืช ืฆื• ื“ืขืจ ื“ืขืจืฉื™ื™ื ื•ื ื’ ืคื•ืŸ ืžื•ืœื˜ื™ืคึผืœืขืงืกื™ื ื’, ืึทื–ืึท ื•ื•ื™ ghosting - ืคึผืขืจืึทืกื™ื˜ื™ืง ืฉื™ื™ึทื ืขืŸ ืคื•ืŸ ื“ื™ื™ืึธื•ื“ื–. ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ืขืก ืงืขืŸ ื–ื™ื™ืŸ ืจืขื›ื˜ ืฆื• ื“ืขื ืคืึทืงื˜ ืึทื– ื“ืขืจ ื˜ื™ื™ึทืžืขืจ, ื’ืขืคึฟื™ืจื˜ ืึท ื™ื‘ืขืจืจื™ื™ึทืก ืื•ื™ืฃ ื“ื™ UEV, ื”ืืœื˜ ืฆื• ื˜ื™ืงืขืŸ, ืื•ืŸ ื“ื™ ื™ื ื˜ืขืจืึทืคึผื˜ื™ื“ ื”ืึทื ื“ืœืขืจ ื˜ื•ื˜ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืฆื™ื™ื˜ ืฆื• ื‘ืึทืฉื˜ื™ืžืขืŸ ื“ื™ ื’ืขืคื™ืจื˜ ืื™ื™ื“ืขืจ ื“ื™ ื˜ื™ื™ึทืžืขืจ ื”ื™ื™ื‘ื˜ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืขืคึผืขืก ืฆื• ื“ื™ ืคึผื™ื ืก. ืฆื• ืงืึทืžื‘ืึทื˜ ื“ืขื, ืื™ืจ ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืฆื• ื™ื‘ืขืจืงืขืจืŸ ื“ื™ ืœืึธื’ื™ืง (0 = ืžืึทืงืกื™ืžื•ื ื‘ืจื™ื™ื˜ื ืึทืก, 255 = ื’ืึธืจื ื™ืฉื˜ ืื™ื– ืœื™ื˜) ืื•ืŸ ื•ื™ืกืžื™ื™ื“ืŸ ืขืงืกื˜ืจืขื ืคืœื™ื›ื˜ ืฆื™ืงืœ ื•ื•ืึทืœื•ืขืก. ื™ืขื ืข. ืขื ืฉื•ืจ ืึทื– ื ืึธืš UEV ื“ื™ ืœืขื“ืก ื’ื™ื™ืŸ ืื•ื™ืก ื’ืึธืจ ืคึฟืึทืจ ืื™ื™ืŸ ืคึผื•ื•ื ืฆื™ืงืœ.

ื˜ื•ื™ืฉืŸ ืคึผืึธื•ืœืขืจืึทื˜ื™:

//set polarity 
    TIM2_CCER1 |= (CC1P | CC2P);
    TIM2_CCER2 |= CC3P;

ื•ื™ืกืžื™ื™ื“ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ r, g ืื•ืŸ b ืฆื• 255 ืื•ืŸ ื’ืขื“ืขื ืงืขืŸ ืฆื• ื™ื‘ืขืจืงืขืจืŸ ื–ื™ื™ ื•ื•ืขืŸ ืื™ืจ ื ื•ืฆืŸ ื–ื™ื™.

ื™ื ื˜ืขืจืึทืคึผืฅ

ื“ื™ ืขืกืึทื ืก ืคื•ืŸ ืึท ื™ื‘ืขืจืจื™ื™ึทืก ืื™ื– ืึทื– ืื•ื ื˜ืขืจ ื–ื™ื›ืขืจ ืฆื•ืฉื˜ืื ื“ืŸ ื“ื™ ืฉืคึผืึธืŸ ืกื˜ืึทืคึผืก ืขืงืกืึทืงื™ื•ื˜ื™ื ื’ ื“ื™ ื”ื•ื™ืคึผื˜ ืคึผืจืึธื’ืจืึทื ืื•ืŸ ืจื•ืคื˜ ืขื˜ืœืขื›ืข ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืคึฟื•ื ืงืฆื™ืข. ื™ื ื˜ืขืจืึทืคึผืฅ ืคืึทืœืŸ ืจืขื›ื˜ ืฆื• ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืึธื“ืขืจ ื™ื ืขืจืœืขืš ื™ื ืคืœื•ืึทื ืกื™ื–, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ื“ื™ ื˜ื™ื™ึทืžืขืจ.

ื•ื•ืขืŸ ืžื™ืจ ืขืจืฉื˜ืขืจ ื‘ืืฉืืคืŸ ืึท ืคึผืจื•ื™ืขืงื˜ ืื™ืŸ ST Visual Develop, ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• main.c ืžื™ืจ ื”ืึธื‘ืŸ ื‘ืึทืงื•ืžืขืŸ ืึท ืคึฟืขื ืฆื˜ืขืจ ืžื™ื˜ ืึท ืžื™ืกื˜ืขืจื™ืขื– ื˜ืขืงืข stm8_interrupt_vector.c, ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜. ืื™ืŸ ื“ืขื ื˜ืขืงืข, ืึท ืคึฟื•ื ืงืฆื™ืข ืื™ื– ืึทืกื™ื™ื ื“ ืฆื• ื™ืขื“ืขืจ ื™ื‘ืขืจืจื™ื™ึทืก NonHandledInterrupt. ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ื™ื ื“ืŸ ืื•ื ื“ื–ืขืจ ืคึฟื•ื ืงืฆื™ืข ืฆื• ื“ืขืจ ื’ืขื•ื•ืืœื˜ ื™ื‘ืขืจืจื™ื™ึทืก.

ื“ื™ ื“ืึทื˜ืึทืฉื™ื˜ ื”ืื˜ ืึท ื˜ื™ืฉ ืคื•ืŸ ื™ื ื˜ืขืจืึทืคึผื˜ ื•ื•ืขืงื˜ืึธืจืก, ื•ื•ื• ืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ื•ื•ืึธืก ืžื™ืจ ื“ืึทืจืคึฟืŸ:

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8
13 ื˜ื™ืž2 ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ / ืึธื•ื•ื•ืขืจืคืœืึธื•
14 ื˜ื™ืž2 ื›ืึทืคึผืŸ / ืคืึทืจื’ืœื™ื™ึทื›ืŸ

ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื˜ื•ื™ืฉืŸ ื“ื™ ื’ืขืคื™ืจื˜ ื‘ื™ื™ UEV, ืึทื–ื•ื™ ืžื™ืจ ื“ืึทืจืคึฟืŸ ื™ื‘ืขืจืจื™ื™ึทืกืŸ #13.

ืึทืงืงืึธืจื“ื™ื ื’ืœื™, ืขืจืฉื˜ืขืจ, ืื™ืŸ ื“ืขืจ ื˜ืขืงืข stm8_interrupt_vector.c ื˜ื•ื™ืฉืŸ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ืคืึทื ื’ืงืฉืึทื ื– ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ื™ื‘ืขืจืจื™ื™ึทืก ื ื•ืž 13 (IRQ13) ืฆื• ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข:

{0x82, TIM2_Overflow}, /* irq13 */

ืฆื•ื•ื™ื™ื˜ื ืก, ืžื™ืจ ื•ื•ืขืœืŸ ื”ืึธื‘ืŸ ืฆื• ืฉืึทืคึฟืŸ ืึท ื˜ืขืงืข main.h ืžื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ืื™ื ื”ืึทืœื˜:

#ifndef __MAIN_H
#define __MAIN_H

@far @interrupt void TIM2_Overflow (void);
#endif

ืื•ืŸ ืœืขืกืึธืฃ, ืฉืจื™ื™ึทื‘ืŸ ื“ืขื ืคึฟื•ื ืงืฆื™ืข ืื™ืŸ ื“ื™ื™ืŸ main.c:

@far @interrupt void TIM2_Overflow (void)
{
    PD_ODR &= ~(1<<5); // ะฒั‹ั€ัƒะฑะฐะตะผ ะดะตะผัƒะปัŒั‚ะธะฟะปะตะบัะพั€
    PC_ODR = (cnt<<3); // ะทะฐะฟะธัั‹ะฒะฐะตะผ ะฒ ะดะตะผัƒะปัŒั‚ะธะฟะปะตะบัะพั€ ะฝะพะฒะพะต ะทะฝะฐั‡ะตะฝะธะต
    PD_ODR |= (1<<5); // ะฒะบะปัŽั‡ะฐะตะผ ะดะตะผัƒะปัŒั‚ะธะฟะปะตะบัะพั€

    TIM2_SR1 = 0; // ัะฑั€ะฐัั‹ะฒะฐะตะผ ั„ะปะฐะณ Update Interrupt Pending

    cnt++; 
    cnt &= 7; // ะดะฒะธะณะฐะตะผ ัั‡ะตั‚ั‡ะธะบ LED

    TIM2_CCR1L = ~colors[cnt][0]; // ะฟะตั€ะตะดะฐะตะผ ะฒ ะฑัƒั„ะตั€ ะธะฝะฒะตั€ั‚ะธั€ะพะฒะฐะฝะฝั‹ะต ะทะฝะฐั‡ะตะฝะธั
    TIM2_CCR2L = ~colors[cnt][1]; // ะดะปั ัะปะตะดัƒัŽั‰ะตะณะพ ั†ะธะบะปะฐ ะจะ˜ะœ
    TIM2_CCR3L = ~colors[cnt][2]; // 

    return;
}

ืึทืœืข ื•ื•ืึธืก ื‘ืœื™ื™ื‘ื˜ ืื™ื– ืฆื• ื’ืขื‘ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ. ื“ืขื ืื™ื– ื’ืขื˜ืืŸ ืžื™ื˜ ื“ื™ ืึทืกืขืžื‘ืึทืœืขืจ ื‘ืึทืคึฟืขืœ rim - ืื™ืจ ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืฆื• ืงื•ืงืŸ ืคึฟืึทืจ ืขืก ืื™ืŸ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืžืึทื ื•ืึทืœ:

//enable interrupts
_asm("rim");

ืืŸ ืื ื“ืขืจ ืึทืกืขืžื‘ืึทืœืขืจ ื‘ืึทืคึฟืขืœ ืื™ื– sim โ€“ ื˜ื•ืจื ืก ืึทื•ื•ืขืง ื™ื ื˜ืขืจืึทืคึผืฅ. ื–ื™ื™ ืžื•ื–ืŸ ื–ื™ื™ืŸ ืื•ื™ืกื’ืขืžืขืงื˜ ื‘ืฉืขืช ื ื™ื™ึท ื•ื•ืึทืœื•ืขืก ื–ืขื ืขืŸ ื’ืขืฉืจื™ื‘ืŸ ืฆื• ื“ื™ "ื•ื•ื™ื“ืขื ื–ื›ึผืจื•ืŸ", ืึทื–ื•ื™ ืึทื– ืึท ื™ื‘ืขืจืจื™ื™ึทืก ื’ืขืคึฟื™ืจื˜ ืื™ืŸ ื“ืขื ืื•ืžืจืขื›ื˜ ืžืึธืžืขื ื˜ ืงืขืŸ ื ื™ืฉื˜ ืฆืขืœืึธื–ืŸ ื“ื™ ืžืขื ื’ืข.

ืึทืœืข ืงืึธื“ - ืื•ื™ืฃ GitHub.

ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืฉื™ืฅ 2: SPI ืื•ื™ืฃ STM32; PWM, ื˜ื™ื™ืžืขืจื– ืื•ืŸ ื™ื ื˜ืขืจืึทืคึผืฅ ืื•ื™ืฃ STM8

ืื•ื™ื‘ ื‘ื™ื™ึท ืžื™ื ื“ืกื˜ืขืจ ืขืžืขืฆืขืจ ื’ืขืคื™ื ื˜ ื“ืขื ืึทืจื˜ื™ืงืœ ื ื•ืฆื™ืง, ืื™ืš ื”ืื˜ ื ื™ืฉื˜ ืฉืจื™ื™ึทื‘ืŸ ืขืก ืื™ืŸ ืึทืจื•ื™ืกื’ืขื•ื•ืึธืจืคืŸ. ืื™ืš ื•ื•ืขืœ ื–ื™ื™ืŸ ืฆื•ืคืจื™ื“ืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ืื•ืŸ ื”ืขืจื•ืช, ืื™ืš ื•ื•ืขืœ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืขื ื˜ืคึฟืขืจืŸ ืึทืœืฅ.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’