เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8

ะ’ เบชเปˆเบงเบ™เบ—เปเบฒเบญเบดเบ” เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบšเบญเบเบ™เบฑเบเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบญเบตเป€เบฅเบฑเบเป‚เบ—เบฃเบ™เบดเบเบ—เบตเปˆเป€เบ•เบตเบšเปƒเบซเบเปˆเบกเบฒเบˆเบฒเบเบเบฒเบ‡เป€เบเบ‡ Arduino เปเบ™เบงเปƒเบ”เปเบฅเบฐเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ„เบงเบ™เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเป€เบญเบเบฐเบชเบฒเบ™เบญเบทเปˆเบ™เป†เบชเปเบฒเบฅเบฑเบš microcontrollers. เบ‚เปเป‰เบ„เบงเบฒเบกเป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เบชเบฐเบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบชเบฑเบ™เบเบฒเบงเปˆเบฒเบˆเบฐเบชเบฐเปเบ”เบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เป€เบญเบต เป€เบ‚เบปเบฒเป€เบญเบตเป‰เบ™เบ•เบปเบ™เป€เบญเบ‡เบงเปˆเบฒเป€เบซเบฑเบ”เบ™เบปเบก...

เบกเบทเป‰เบ™เบตเป‰เบ‚เป‰เบญเบเบˆเบฐเบชเบฐเปเบ”เบ‡เบงเบดเบ—เบตเบเบฒเบ™เปƒเบŠเป‰ datasheets เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ, เปเบ•เปˆเบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เบงเบฝเบเบ‡เบฒเบ™เบเปˆเบฝเบงเบเบฑเบš STM32 (Blue Pill) เปเบฅเบฐ STM8 controllers. เป‚เบ„เบ‡เบเบฒเบ™ demo เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบญเบธเบ—เบดเบ”เบ•เบปเบ™เป€เบžเบทเปˆเบญ LEDs favorite เบ‚เบญเบ‡เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบตเปเบชเบ‡เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เป€เบชเบตเบกเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ.

เบ‚เปเป‰เบ„เบงเบฒเบกเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเบ‚เป‰เบญเบเบเปเบฒเบฅเบฑเบ‡เบชเป‰เบฒเบ‡เป€เบ™เบทเป‰เบญเบซเบฒ:

STM32 Blue Pill: 16 LEDs เบเบฑเบšเป„เบ”เป€เบงเบต DM634
STM8: เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบซเบปเบ pin PWM
STM8: 8 RGB LEDs เปƒเบ™เบชเบฒเบก pins, เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡

เบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”: เบ‚เป‰เบญเบเบšเปเปˆเปเบกเปˆเบ™เบงเบดเบชเบฐเบงเบฐเบเบญเบ™, เบ‚เป‰เบญเบเบšเปเปˆเป„เบ”เป‰เบ—เปเบฒเบ—เปˆเบฒเบงเปˆเบฒเบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เป€เบฅเบดเบเป€เบŠเบดเปˆเบ‡เปƒเบ™เป€เบญเป€เบฅเบฑเบเป‚เบ•เบฃเบ™เบดเบ, เบšเบปเบ”เบ„เบงเบฒเบกเปเบกเปˆเบ™เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบชเบกเบฑเบเป€เบฅเปˆเบ™เป€เบŠเบฑเปˆเบ™เบ‚เป‰เบญเบ. เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ•เบปเบ™เป€เบญเบ‡เบชเบญเบ‡เบ›เบตเบเปˆเบญเบ™เป€เบ›เบฑเบ™เบœเบนเป‰เบŠเบปเบกเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ. เบ–เป‰เบฒเปƒเบœเบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบšเบญเบเบ‚เป‰เบญเบเบงเปˆเบฒเปเบœเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบŠเบดเบšเบ—เบตเปˆเบšเปเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบเบšเปเปˆเบซเบ™เป‰เบฒเบขเป‰เบฒเบ™เบ—เบตเปˆเบˆเบฐเบญเปˆเบฒเบ™, เบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบŠเบญเบเบซเบฒเบฅเบฐเบซเบฑเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เปเบฅเบฐเบ›เบฐเบ”เบดเบ”เป„เบกเป‰เบ„เป‰เบญเบ™เบ—เบตเปˆเบกเบตเบกเบตเบ”เบ•เบฑเบ”เปเบฅเบฐ tape adhesive.

เบˆเบธเบ”โ€‹เบชเบธเบกโ€‹เบ‚เบญเบ‡โ€‹เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เปเบœเปˆเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹, เบšเปเปˆโ€‹เปเบกเปˆเบ™โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹, เบชเบฐโ€‹เบ™เบฑเป‰เบ™โ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™โ€‹เบซเบผเบฒเบโ€‹เปเบฅเบฐโ€‹เบกเบฑเบโ€‹เบˆเบฐโ€‹เปเบ„เบšโ€‹. เป‚เบ„เบ‡เบเบฒเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบ„เบปเบ™เบฎเบนเป‰เบˆเบฑเบเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบเบฑเบšเบŠเบดเบšเปƒเบซเบกเปˆ.

เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบซเบงเบฑเบ‡โ€‹เบงเปˆเบฒโ€‹เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ‚เบญเบ‡โ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบˆเบฐโ€‹เบŠเปˆเบงเบโ€‹เปƒเบซเป‰โ€‹เบœเบนเป‰โ€‹เปƒเบ”โ€‹เบœเบนเป‰โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ—เบตเปˆโ€‹เบ„เป‰เบฒเบโ€‹เบ„เบทโ€‹เบเบฑเบ™โ€‹เบ‚เบญเบ‡ immersion เปƒเบ™ hobby เป„เบ”เป‰.

STM32

16 LEDs เบเบฑเบš DM634 เปเบฅเบฐ SPI

เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ—เบตเปˆเปƒเบŠเป‰ Blue Pill (STM32F103C8T6) เปเบฅเบฐเป„เบ”เป€เบงเบต LED DM634. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปเบœเปˆเบ™เบ‚เปเป‰เบกเบนเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ„เบดเบ”เบญเบญเบเป„เบ”เป€เบงเบต, เบžเบญเบ” STM IO เปเบฅเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ SPI.

DM634

เบŠเบดเบšเป„เบ•เป‰เบซเบงเบฑเบ™เบ—เบตเปˆเบกเบต 16 16-bit PWM เบœเบปเบ™เบœเบฐเบฅเบดเบ”, เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบ™เบ•เปˆเบญเบ‡เป‚เบชเป‰. เบฎเบนเบšเปเบšเบš 12-bit เบ•เปˆเปเบฒเบชเบธเบ”เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบˆเบฒเบเป‚เบ„เบ‡เบเบฒเบ™เบžเบฒเบเปƒเบ™เบ›เบฐเป€เบ—เบ” เบเบฐเป€เบ›เบปเป‹เบฒ. เปƒเบ™เป€เบงเบฅเบฒเบซเบ™เบถเปˆเบ‡, เบเบฒเบ™เป€เบฅเบทเบญเบเบฅเบฐเบซเบงเปˆเบฒเบ‡ DM63x เปเบฅเบฐ TLC5940 เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบชเบฝเบ‡, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบฅเบทเบญเบ DM เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบซเบผเบฒเบเบขเปˆเบฒเบ‡: 1) TLC เปƒเบ™ Aliexpress เปเบกเปˆเบ™เปเบ™เปˆเบ™เบญเบ™เบ‚เบญเบ‡เบ›เบญเบก, เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™; 2) DM เบกเบต PWM เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ—เบตเปˆเบกเบตเป€เบ„เบทเปˆเบญเบ‡เบเปเบฒเป€เบ™เบตเบ”เบ„เบงเบฒเบกเบ–เบตเปˆเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡; 3) เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบŠเบทเป‰เบฅเบฒเบ„เบฒเบ–เบทเบเปƒเบ™ Moscow, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบฅเปเบ–เป‰เบฒ parcel เบˆเบฒเบ Ali. เปเบฅเบฐ, เปเบ™เปˆเบ™เบญเบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบŠเบดเบšเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบก. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ chip เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบชเปˆเบงเบ™เปƒเบซเบเปˆเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบŠเบธเบ” SSOP24; เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐ solder เบเบฑเบšเบญเบฐเปเบ”เบšเป€เบ•เบต.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบœเบนเป‰เบœเบฐเบฅเบดเบ”เปเบกเปˆเบ™เบŠเบฒเบงเป„เบ•เป‰เบซเบงเบฑเบ™, เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹ chip เปเบกเปˆเบ™เบ‚เบฝเบ™เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”เบˆเบตเบ™, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบกเปˆเบงเบ™. เบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡ pinout (เบ›เบฑเบเปเบธเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ) เป€เบžเบทเปˆเบญโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เปƒเบˆโ€‹เบงเปˆเบฒโ€‹เบ‚เบฒโ€‹เปƒเบ”โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เบเบฑเบšโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹, เปเบฅเบฐโ€‹เบฅเบฒเบโ€‹เบฅเบฐโ€‹เบญเบฝเบ”โ€‹เบ‚เบญเบ‡ pins (เบฅเบฒเบเบฅเบฐเบญเบฝเบ” Pin). 16 เป€เบ‚เบฑเบก:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เปเบซเบผเปˆเบ‡ DC Sink (Open Drain)

เบˆเบปเบกเบฅเบปเบ‡ / เป€เบ›เบตเบ”-เบฅเบฐเบšเบฒเบเบ™เป‰เบณเบญเบญเบ - เบฅเบฐเบšเบฒเบ; เปเบซเบผเปˆเบ‡เบเบฐเปเบชเบเบฐเปเบชเป„เบŸเบŸเป‰เบฒ; เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปเบกเปˆเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบซเบ™เป‰เบฒเบ”เบดเบ™เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง - LEDs เปเบกเปˆเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเป„เบ”เป€เบงเบตเป‚เบ”เบ cathodes. เป„เบŸเบŸเป‰เบฒ, เปเบ™เปˆเบ™เบญเบ™, เบšเปเปˆเปเบกเปˆเบ™ "เบ—เปเปˆเบฅเบฐเบšเบฒเบเบ™เป‰เปเบฒเป€เบ›เบตเบ”" (เป€เบ›เบตเบ”เบฅเบฐเบšเบฒเบ), เปเบ•เปˆเปƒเบ™ datasheets เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ™เบตเป‰เบชเปเบฒเบฅเบฑเบš pins เปƒเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบฅเบฐเบšเบฒเบเปเบกเปˆเบ™เบžเบปเบšเป€เบซเบฑเบ™เป€เบฅเบทเป‰เบญเบเป†.

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เบ•เบปเบงเบ•เป‰เบฒเบ™เบ—เบฒเบ™เบžเบฒเบเบ™เบญเบเบฅเบฐเบซเบงเปˆเบฒเบ‡ REXT เปเบฅเบฐ GND เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบกเบนเบ™เบ„เปˆเบฒเบ›เบฐเบˆเบธเบšเบฑเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”

เบ•เบปเบงเบ•เป‰เบฒเบ™เบ—เบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡ pin REXT เปเบฅเบฐเบ”เบดเบ™, เป€เบŠเบดเปˆเบ‡เบ„เบงเบšเบ„เบธเบกเบ„เบงเบฒเบกเบ•เป‰เบฒเบ™เบ—เบฒเบ™เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš, เป€เบšเบดเปˆเบ‡เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เปƒเบ™เบซเบ™เป‰เบฒ 9 เบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เปƒเบ™ DM634, เบเบฒเบ™เบ•เปเปˆเบ•เป‰เบฒเบ™เบ™เบตเป‰เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเป‚เบ”เบเบŠเบญเบšเปเบง, เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเบชเบฐเบซเบงเปˆเบฒเบ‡เป‚เบ”เบเบฅเบงเบก (เบ„เบงเบฒเบกเบชเบฐเบซเบงเปˆเบฒเบ‡เบ—เบปเปˆเบงเป‚เบฅเบ); เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเปเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเปƒเบชเปˆเบ•เบปเบงเบ•เป‰เบฒเบ™เบ—เบฒเบ™ 2.2 - 3 kOhm เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.

เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเบดเบ—เบตเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบŠเบดเบš, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบญเบธเบ›เบฐเบเบญเบ™:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8

เปเบกเปˆเบ™เปเบฅเป‰เบง, เบ™เบตเป‰เปเบกเปˆเบ™เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”เบˆเบตเบ™เปƒเบ™เบฅเบฑเบ”เบชเบฐเบซเบกเบตเบžเบฒเบšเบ—เบฑเบ‡เบซเบกเบปเบ”. เบเบฒเบ™เปเบ›เบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบšเบฑเบ™เบซเบฒ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเปƒเบˆเบกเบฑเบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™, เปเบ•เปˆเบกเบตเบงเบดเบ—เบตเบญเบทเปˆเบ™ - เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš TLC5940 เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
... เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบก pins เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™. เบ‚เบญเบšเบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบ™ SCLK เบ›เปˆเบฝเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ PIN SIN เป„เบ›เบซเบฒเบ—เบฐเบšเบฝเบ™เบžเบฒเบเปƒเบ™. เบซเบผเบฑเบ‡เบˆเบฒเบเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เปเบปเบ”เบ–เบทเบเป‚เบซเบฅเบ”เปเบฅเป‰เบง, เบชเบฑเบ™เบเบฒเบ™ XLAT เบชเบนเบ‡เบชเบฑเป‰เบ™เบˆเบฐเบˆเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเป‚เบญเบ™เป€เบ‚เบปเป‰เบฒเบขเบนเปˆเปƒเบ™เบ—เบฐเบšเบฝเบ™เบžเบฒเบเปƒเบ™. เบ—เบฐเบšเบฝเบ™เบžเบฒเบเปƒเบ™เปเบกเปˆเบ™เบ›เบฐเบ•เบนเบ—เบตเปˆเบ–เบทเบเบเบฐเบ•เบธเป‰เบ™เป‚เบ”เบเบฅเบฐเบ”เบฑเบšเบชเบฑเบ™เบเบฒเบ™ XLAT. เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ–เปˆเบฒเบโ€‹เป‚เบญเบ™โ€‹เบ—เบตเปˆโ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹เบ™เป‰เบญเบโ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹.

Latch - เบชเบฐโ€‹เบ›เบฑเบ” / เบชเบฐโ€‹เบ•เบดเบ / lockโ€‹.
เบ‚เบญเบšโ€‹เป€เบžเบตเปˆเบกโ€‹เบ‚เบถเป‰เบ™ - เปเบ‚เบšเบŠเบฑเป‰เบ™เบ™เปเบฒเบ‚เบญเบ‡เบเปเบฒเบกเบฐเบˆเบญเบ™
MSB เบเปˆเบญเบ™ โ€“ เบ—เบตเปˆโ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบชเบธเบ” (เบŠเป‰เบฒเบโ€‹เบชเบธเบ”โ€‹) เบšเบดเบ”โ€‹เป„เบ›โ€‹เบซเบ™เป‰เบฒโ€‹.
เบ‚เปเป‰เบกเบนเบ™เป‚เบกเบ‡ - เบชเบปเปˆเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ•เบฒเบกโ€‹เบฅเปเบฒโ€‹เบ”เบฑเบš (เบšเบดเบ”โ€‹เป‚เบ”เบโ€‹เบ™เป‰เบญเบโ€‹)โ€‹.

เบ„เปเบฒ เบฅเบญเบ เบกเบฑเบเบˆเบฐเบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบŠเบดเบšเปเบฅเบฐเบ–เบทเบเปเบ›เบ”เป‰เบงเบเบงเบดเบ—เบตเบ•เปˆเบฒเบ‡เป†, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ‚เป‰เบญเบเบˆเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ•เบปเบงเป€เบญเบ‡.

เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบเบฒเบ™โ€‹เบชเบถเบโ€‹เบชเบฒโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ™เป‰เบญเบโ€‹เป„เบ”เป€เบงเบต LED เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. "เบ›เปˆเบฝเบ™" (เบ›เปˆเบฝเบ™เปเบ›เบ‡) เปƒเบ™เบŠเบทเปˆ - เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง bitwise เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™: เปเบ•เปˆเบฅเบฐเบšเบดเบ”เปƒเบซเบกเปˆ shoved เบžเบฒเบเปƒเบ™ pushes เป‚เบชเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ›เบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒเบ‚เบญเบ‡เบกเบฑเบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบšเปเปˆเบกเบตเปƒเบœเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบเบฒเบ™เบเบฐเบžเบดเบš chaotic เบ‚เบญเบ‡ LEDs เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™, เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบ—เบฐเบšเบฝเบ™ buffer เปเบเบเบญเบญเบเบˆเบฒเบเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบ damper (เบฅเบญเบ) เปเบกเปˆเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเบ—เบตเปˆ bits เบ–เบทเบเบˆเบฑเบ”เบฅเบฝเบ‡เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เป€เบกเบทเปˆเบญเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบเบฝเบกเบžเป‰เบญเบก, shutter เป€เบ›เบตเบ”เปเบฅเบฐ bits เป„เบ›เป€เบฎเบฑเบ”เบงเบฝเบ, เบ—เบปเบ”เปเบ—เบ™เบŠเบธเบ”เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบ„เปเบฒ เบฅเบญเบ เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบชเปเบฒเบฅเบฑเบš microcircuits เป€เบเบทเบญเบšเบชเบฐเป€เบซเบกเบตเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ damper เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบšเปเปˆเบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เปƒเบ”.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™เป„เบ›เบเบฑเบ‡ DM634 เปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰: เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™ DAI เบเบฑเบšเบ„เปˆเบฒเบ‚เบญเบ‡เบšเบดเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡ LED เป„เบ, เบ”เบถเบ‡ DCK เบ‚เบถเป‰เบ™เปเบฅเบฐเบฅเบปเบ‡; เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™ DAI เบเบฑเบšเบ„เปˆเบฒเบ‚เบญเบ‡เบšเบดเบ”เบ•เปเปˆเป„เบ›, เบ”เบถเบ‡ DCK; เปเบฅเบฐเบญเบทเปˆเบ™เป†เบˆเบปเบ™เบเปˆเบงเบฒ bits เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบ–เบทเบเบ–เปˆเบฒเบเบ—เบญเบ” (เป‚เบกเบ‡เป€เบ‚เบปเป‰เบฒ), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ”เบถเบ‡ LAT. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡ (bit-bang), เปเบ•เปˆเบกเบฑเบ™เบเปเปˆเบ”เบตเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš SPI เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบขเบนเปˆเปƒเบ™ STM32 เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบชเบญเบ‡เบชเปเบฒเป€เบ™เบปเบฒ.

เป€เบกเบฑเบ”เบชเบตเบŸเป‰เบฒ STM32F103

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒ: เบ•เบปเบงเบ„เบงเบšเบ„เบธเบก STM32 เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบŠเบฑเบšเบŠเป‰เบญเบ™เบซเบผเบฒเบเบเปˆเบงเบฒ Atmega328 เบซเบผเบฒเบเบเบงเปˆเบฒเบ—เบตเปˆเบžเบงเบเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบ•เบฒเบขเป‰เบฒเบ™. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบซเบเบฑเบ”เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™, เป€เบเบทเบญเบšเบ—เบธเบเบญเบธเบ›เบฐเบเบญเบ™เบ–เบทเบเบ›เบดเบ”เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบฅเบฐเบ„เบงเบฒเบกเบ–เบตเปˆเบ‚เบญเบ‡เป‚เบกเบ‡เปเบกเปˆเบ™ 8 MHz เบˆเบฒเบเปเบซเบผเปˆเบ‡เบžเบฒเบเปƒเบ™. เป‚เบŠเบเบ”เบต, เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก STM เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ™เปเบฒเป€เบญเบปเบฒเบŠเบดเบšเป€เบ–เบดเบ‡ "เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ" 72 MHz, เปเบฅเบฐเบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡ IDE เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ‚เป‰เบญเบเบฎเบนเป‰เบฅเบงเบกเบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป‚เบกเบ‡ (เปเบ•เปˆ. เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบ—เป‰เป†). เปเบ•เปˆเบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เป€เบ›เบตเบ”เบญเบธเบ›เบฐเบเบญเบ™เบ•เปเปˆ.

เป€เบญเบเบฐเบชเบฒเบ™: Blue Pill เบกเบตเบŠเบดเบš STM32F103C8T6 เบ—เบตเปˆเบ™เบดเบเบปเบก, เบกเบตเบชเบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™:

เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบžเบงเบเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเบชเบปเบ™เปƒเบˆ:

  • Pinouts - chip pinouts - เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบฎเบฑเบ”เบเบฐเบ”เบฒเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡;
  • เปเบœเบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ - เปเบœเบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบชเปเบฒเบฅเบฑเบšเบŠเบดเบšเบชเบฐเป€เบžเบฒเบฐ. เบ„เบนเปˆเบกเบทเบญเป‰เบฒเบ‡เบญเบตเบ‡เบกเบตเปเบœเบ™เบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เปเบฅเบฐเบกเบฑเบ™เบเปˆเบฒเบงเป€เบ–เบดเบ‡เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบต.
  • เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ„เปเบฒเบ™เบดเบเบฒเบก PIN - เบฅเบฒเบเบŠเบทเปˆเบซเบ™เป‰เบฒเบ—เบตเปˆเบ•เบปเป‰เบ™เบ•เปเปเบฅเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบญเบ‡ pins; เบชเปเบฒเบฅเบฑเบš "เบขเบฒเป€เบกเบฑเบ”เบชเบตเบŸเป‰เบฒ" เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบชเบฐเบ”เบงเบเบเบงเปˆเบฒเปƒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เบ”เป‰เบงเบเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ pins เปเบฅเบฐเบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เบกเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ™เบ—เบต google Blue Pill pinout เปเบฅเบฐเบฎเบฑเบเบชเบฒเบฎเบนเบšเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบกเบท:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
NB: เบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบฎเบนเบšเบžเบฒเบšเบˆเบฒเบเบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™, เบ‚เบญเบšเปƒเบˆเบชเปเบฒเบฅเบฑเบšเบชเบดเปˆเบ‡เบ™เบฑเป‰เบ™. เบฎเบนเบšเบžเบฒเบšเป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เปเบ—เบ™, เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบšเบปเบ”เบฎเบฝเบ™ - เบกเบฑเบ™เบ”เบตเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบšเปเปˆเปเบกเปˆเบ™เบˆเบฒเบเป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™.

เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเปเบœเปˆเบ™เบ‚เปเป‰เบกเบนเบ™, เป€เบ›เบตเบ”เบ„เบนเปˆเบกเบทเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡, เปเบฅเบฐเบˆเบฒเบเบ™เบตเป‰เป„เบ›เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบกเบฑเบ™.
เบ‚เบฑเป‰เบ™เบ•เบญเบ™: เบžเบงเบเป€เบฎเบปเบฒเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบงเบฑเบ”เบชเบฐเบ”เบธเบ›เป‰เบญเบ™ / เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ SPI, เป€เบ›เบตเบ”เบญเบธเบ›เบฐเบเบญเบ™เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™.

Input Output

เปƒเบ™ Atmega328, I/O เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบ„เบงเบฒเบกเบญเบธเบ”เบปเบกเบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบ STM32 เบชเบฒเบกเบฒเบ”เบชเบฑเบšเบชเบปเบ™. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบปเบ”เบชเบฐเบซเบผเบธเบš, เปเบ•เปˆเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบกเบตเบชเบตเปˆเบ—เบฒเบ‡เป€เบฅเบทเบญเบ:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
open drain, push-pull, เบ—เบฒเบ‡เป€เบฅเบทเบญเบ push-pull, เบ—เบฒเบ‡เป€เบฅเบทเบญเบ open drain

"เบ”เบถเบ‡-เบเบนเป‰" (เบเบนเป‰-เบ”เบถเบ‡) เปเบกเปˆเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ›เบปเบเบเบฐเบ•เบดเบˆเบฒเบ Arduino, pin เบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบ„เปˆเบฒเป„เบ”เป‰เบ—เบฑเบ‡ HIGH เบซเบผเบท LOW. เปเบ•เปˆเบกเบต "เบฅเบฐเบšเบฒเบเบ™เป‰เปเบฒเป€เบ›เบตเบ”" เบกเบต เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
Output configuration / เป€เบกเบทเปˆเบญเบžเบญเบ”เบ–เบทเบเบกเบญเบšเปเบฒเบเปƒเบซเป‰เบญเบญเบ: / output buffer enabled: / โ€“ open drain mode: โ€œ0โ€ in the output register enables N-MOS, โ€œ1โ€ in the output register leave the port in Hi-Z mode ( P-MOS เบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™ ) / โ€“ เป‚เบซเบกเบ” push-pull: โ€œ0โ€ เปƒเบ™เบ—เบฐเบšเบฝเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เป€เบ›เบตเบ”เปƒเบŠเป‰ N-MOS, โ€œ1โ€ เปƒเบ™เบšเบฑเบ™เบ—เบถเบเบœเบปเบ™เบญเบญเบเบกเบฒ activates P-MOS.

เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ—เบฑเบ‡เปเบปเบ”เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ—เปเปˆเบฅเบฐเบšเบฒเบเบ™เป‰เบณเป€เบ›เบตเบ” (เป€เบ›เบตเบ”เบฅเบฐเบšเบฒเบ) เบˆเบฒเบ "เบ”เบถเบ‡โ€‹" (เบเบนเป‰-เบ”เบถเบ‡) เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™ pin เบ—เปเบฒเบญเบดเบ”เบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐ HIGH เป„เบ”เป‰: เป€เบกเบทเปˆเบญเบ‚เบฝเบ™เบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบ—เบฐเบšเบฝเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”, เบกเบฑเบ™เบˆเบฐเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป‚เบซเบกเบ”เบ„เบงเบฒเบกเบ•เป‰เบฒเบ™เบ—เบฒเบ™เบชเบนเบ‡ (impedance เบชเบนเบ‡, Hi-Z). เป€เบกเบทเปˆเบญเบ‚เบฝเบ™เป€เบฅเบเบชเบนเบ™, pin เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบ”เบฝเบงเบเบฑเบ™เปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เป‚เบซเบกเบ”, เบ—เบฑเบ‡เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เป€เบซเบ”เบœเบปเบ™ เปเบฅเบฐเบ—เบฒเบ‡เป„เบŸเบŸเป‰เบฒ.

เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹, pin เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบญเบญเบโ€‹เบญเบฒโ€‹เบเบฒเบ”โ€‹เป€เบ™เบทเป‰เบญโ€‹เปƒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบˆเบปเบ”โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹เบœเบปเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เป„เบ”เป‰โ€‹. เปƒเบ™ "เบ—เบฒเบ‡เป€เบฅเบทเบญเบ" เบกเบฑเบ™เบ–เบทเบเบ„เบงเบšเบ„เบธเบกเป‚เบ”เบเบญเบธเบ›เบฐเบเบญเบ™เบ•เปเปˆเบžเปˆเบงเบ‡เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™ (เป€เบšเบดเปˆเบ‡ 9.1.4):

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เบ–เป‰เบฒเบžเบญเบ”เบšเบดเบ”เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ›เบฑเบ™ PIN เบŸเบฑเบ‡เบŠเบฑเบ™เบชเบฐเบซเบผเบฑเบš, เบ•เบปเบงเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ PIN เบˆเบฐเบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™ เปเบฅเบฐ pin เปเบกเปˆเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš pin peripheral.

เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐ pin เปเบกเปˆเบ™เบญเบฐเบ—เบดเบšเบฒเบเบขเบนเปˆเปƒเบ™ เบ™เบดเบเบฒเบก Pin เปเบœเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบฎเบนเบšเบ—เบตเปˆเบ”เบฒเบงเป‚เบซเบฅเบ”. เบ•เปเปˆโ€‹เบเบฑเบšโ€‹เบ„เปเบฒโ€‹เบ–เบฒเบกโ€‹เบ‚เบญเบ‡โ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปเบ™เบงโ€‹เปƒเบ”โ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒ pin เบกเบตโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹, เบ„เปเบฒโ€‹เบ•เบญเบšโ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เป‚เบ”เบ footnote เปƒเบ™ datasheetโ€‹:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เบ–เป‰เบฒเบญเบธเบ›เบฐเบเบญเบ™เบ•เปเปˆเบžเปˆเบงเบ‡เบซเบผเบฒเบเบญเบฑเบ™เปƒเบŠเป‰ PIN เบ”เบฝเบงเบเบฑเบ™, เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ‚เบฑเบ”เบเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบ„เบงเบ™เปƒเบŠเป‰เบญเบธเบ›เบฐเบเบญเบ™เบ•เปเปˆเบžเปˆเบงเบ‡เบญเบฑเบ™เบ”เบฝเบงเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบง, เบชเบฐเบซเบผเบฑเบšเป‚เบ”เบเปƒเบŠเป‰เป‚เบกเบ‡เบ•เปเปˆเบ‚เป‰เบฒเบ‡เป€เบ›เบตเบ”เปƒเบซเป‰เบšเบดเบ” (เบขเบนเปˆเปƒเบ™เบ—เบฐเบšเบฝเบ™ RCC เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก).

เบชเบธเบ”เบ—เป‰เบฒเบ, pins เปƒเบ™เบฎเบนเบšเปเบšเบšเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบเบฑเบ‡เบกเบตเบ„เบงเบฒเบกเป„เบงเป‚เบกเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบซเบเบฑเบ”เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡; เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ•เบฑเป‰เบ‡เบกเบฑเบ™เป„เบงเป‰เบชเบนเบ‡เบชเบธเบ”เปเบฅเบฐเบฅเบทเบกเบกเบฑเบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™: เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰ SPI, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบชเบญเบ‡ pins (เบกเบตเบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบชเบฑเบ™เบเบฒเบ™เป‚เบกเบ‡) เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™ "เบŸเบฑเบ‡เบŠเบฑเบ™ push-pull เบ—เบฒเบ‡เป€เบฅเบทเบญเบ", เปเบฅเบฐเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡ (LAT) เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™ "เบ›เบปเบเบเบฐเบ•เบด push-pull". เปเบ•เปˆเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ, เปƒเบซเป‰เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบš SPI.

SPI

เป‚เบ„เบ‡เบเบฒเบ™เบเบฒเบ™เบชเบถเบเบชเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡

SPI เบซเบผเบท Serial Peripheral Interface (serial peripheral interface) เปเบกเปˆเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ MK เบเบฑเบš MKs เบญเบทเปˆเบ™เป†เปเบฅเบฐเป‚เบฅเบเบžเบฒเบเบ™เบญเบเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›. เบซเบผเบฑเบเบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเปเบฅเป‰เบงเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบšเปˆเบญเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบเบฑเบšเป„เบ”เป€เบงเบต LED เบ‚เบญเบ‡เบˆเบตเบ™ (เปƒเบ™เบ„เบนเปˆเบกเบทเบญเป‰เบฒเบ‡เบญเบตเบ‡, เป€เบšเบดเปˆเบ‡เบžเบฒเบ 25). SPI เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบฎเบนเบšเปเบšเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš ("เบ™เบฒเบ") เปเบฅเบฐเบ—เบฒเบ” ("เบ—เบฒเบ”"). SPI เบกเบตเบชเบตเปˆเบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰:

  • MOSI, Master Output / Slave Input: PIN เบ™เบตเป‰เบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบฎเบนเบšเปเบšเบšเปเบกเปˆเปเบšเบš, เปเบฅเบฐเบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป‚เบซเบกเบ”เบชเปเบฒเบฅเบญเบ‡;
  • MISO, Master Input / Slave Output: เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เบกเบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเปƒเบ™เปเบกเปˆเบšเบปเบ”, เปเบฅเบฐเบชเบปเปˆเบ‡เปƒเบ™เบชเปเบฒเบฅเบญเบ‡;
  • SCK, Serial Clock: เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเบ–เบตเปˆเบ‚เบญเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เปเบกเปˆเบšเบปเบ”เบซเบผเบทเป„เบ”เป‰เบฎเบฑเบšเบชเบฑเบ™เบเบฒเบ™เป‚เบกเบ‡เปƒเบ™เบชเปเบฒเบฅเบญเบ‡. เบเบฒเบ™เบ•เบตเป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™;
  • SS, Slave Select: เบ”เป‰เบงเบเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบ™เบตเป‰, เบชเปเบฒเบฅเบญเบ‡เบฎเบนเป‰เบงเปˆเบฒเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบˆเบฒเบเบฅเบฒเบง. เปƒเบ™ STM32 เบกเบฑเบ™เบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒ NSS, เบšเปˆเบญเบ™เบ—เบตเปˆ N = เบฅเบปเบš, i.e. เบœเบนเป‰เบ„เบงเบšเบ„เบธเบกเบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบ—เบฒเบ”เบ–เป‰เบฒเบกเบตเบžเบทเป‰เบ™เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบ™เบตเป‰. เบกเบฑเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เป„เบ”เป‰เบ”เบตเบเบฑเบšเป‚เบซเบกเบ” Open Drain Output, เปเบ•เปˆเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบญเบทเปˆเบ™.

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบชเบดเปˆเบ‡เบญเบทเปˆเบ™, SPI เปƒเบ™ STM32 เปเบกเปˆเบ™เบญเบธเบ”เบปเบกเบชเบปเบกเบšเบนเบ™เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบเบฑเบš SPI, เปเบ•เปˆเบเบฑเบ‡เบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš I2S, เปเบฅเบฐเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ›เบฐเบชเบปเบก, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบฑเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปƒเบ™เบ—เบฑเบ™เบ—เบต. เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”: เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เบเปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆ MOSI เปเบฅเบฐ SCK. เบžเบงเบเป€เบฎเบปเบฒเป„เบ›เบซเบฒเบžเบฒเบ 25.3.4 (half-duplex communication, half-duplex communication), เบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒ 1 เป‚เบกเบ‡ เปเบฅเบฐ 1 เบชเบฒเบเบ‚เปเป‰เบกเบนเบ™ unidirectional (1 เบชเบฑเบ™เบเบฒเบ™เป‚เบกเบ‡ เปเบฅเบฐ 1 เบเบฐเปเบชเบ‚เปเป‰เบกเบนเบ™ unidirectional):

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เปƒเบ™เป‚เบซเบกเบ”เบ™เบตเป‰, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบŠเป‰ SPI เปƒเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบชเบปเปˆเบ‡เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบซเบผเบทเบฎเบฑเบšเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. / เป‚เปเบ”เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบขเปˆเบฒเบ‡เบ”เบฝเบงเปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเป‚เปเบ” duplex: เบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™ PIN เบชเบปเปˆเบ‡ (MOSI เปƒเบ™เป‚เปเบ”เปเบกเปˆเปเบšเบš เบซเบผเบท MISO เปƒเบ™เป‚เปเบ”เบ‚เป‰เบฒเบ—เบฒเบ”), เปเบฅเบฐ PIN เบฎเบฑเบš (MISO เบซเบผเบท MOSI เบ•เบฒเบกเบฅเบณเบ”เบฑเบš) เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบ›เบฑเบ™ PIN I/O เบ›เบปเบเบเบฐเบ•เบดเป„เบ”เป‰. . เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเปเปˆเบชเบปเบ™เปƒเบˆ Rx buffer (เบ–เป‰เบฒเบกเบฑเบ™เบ–เบทเบเบญเปˆเบฒเบ™, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเป‚เบญเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™).

เบ”เบตเบซเบผเบฒเบ, PIN MISO เปเบกเปˆเบ™เบšเปเปˆเป€เบชเบเบ„เปˆเบฒ, เปƒเบซเป‰เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเบฑเบ™เบเบฒเบ™ LAT เบเบฑเบšเบกเบฑเบ™. เปƒเบซเป‰เป€เบšเบดเปˆเบ‡ Slave Select, เป€เบŠเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™ STM32 เบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเบ”เป‰เบงเบเป‚เบ›เบฃเปเบเบฃเบก, เป€เบŠเบดเปˆเบ‡เบชเบฐเบ”เบงเบเบ—เบตเปˆเบชเบธเบ”. เบžเบงเบเป€เบฎเบปเบฒเบญเปˆเบฒเบ™เบงเบฑเบเบ‚เบญเบ‡เบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™เบขเบนเปˆเปƒเบ™เบžเบฒเบ 25.3.1 SPI เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ—เบปเปˆเบงเป„เบ›:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบŠเบญเบšเปเบง NSS (SSM = 1) / เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบญเบ‡เปเบกเปˆเบ™เบšเบฑเบ™เบˆเบธเบขเบนเปˆเปƒเบ™ SSI bit เบ‚เบญเบ‡ SPI_CR1 เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™. PIN NSS เบžเบฒเบเบ™เบญเบเบเบฑเบ‡เบ„เบปเบ‡เบšเปเปˆเป€เบชเบเบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบญเบทเปˆเบ™เป†.

เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เปƒเบชเปˆเบ—เบฐเบšเบฝเบ™. เบ‚เป‰เบญเบเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเปƒเบŠเป‰ SPI2, เบŠเบญเบเบซเบฒเบ—เบตเปˆเบขเบนเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ - เปƒเบ™เบžเบฒเบ 3.3 Memory Map:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 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. เบ•เบฑเป‰เบ‡เบ„เบงเบฒเบกเบ–เบตเปˆเบ‚เบญเบ‡เป‚เบกเบ‡ serial เบ”เป‰เบงเบ bits BR[2:0] เปƒเบ™เบ—เบฐเบšเบฝเบ™ SPI_CR1.

เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ–เบทเบเป€เบเบฑเบšเบขเบนเปˆเปƒเบ™เบชเปˆเบงเบ™เบ„เบนเปˆเบกเบทเบญเป‰เบฒเบ‡เบญเบตเบ‡เบ‚เบญเบ‡เบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™. เบ›เปˆเบฝเบ™เบ—เบตเปˆเบขเบนเปˆ (เบ—เบตเปˆเบขเบนเปˆ เบŠเบปเบ”เป€เบŠเบตเบ) เบชเปเบฒเบฅเบฑเบš CR1 โ€“ 0x00, เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ bits เบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เบทเบเบฅเบถเบšเบฅเป‰เบฒเบ‡ (เบ›เบฑเบšเบ„เปˆเบฒ 0x0000):

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8

เบšเบดเบ” BR เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบšเปˆเบ‡เป‚เบกเบ‡เบ„เบงเบšเบ„เบธเบก, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเบ–เบตเปˆเบ‚เบญเบ‡ SPI เบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™. เบ„เบงเบฒเบกเบ–เบตเปˆ STM32 เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบ›เบฑเบ™ 72 MHz, เป„เบ”เป€เบงเบต LED, เบญเบตเบ‡เบ•เบฒเบกเปเบœเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบกเบฑเบ™, เป€เบฎเบฑเบ”เบงเบฝเบเบ”เป‰เบงเบเบ„เบงเบฒเบกเบ–เบตเปˆเป€เบ–เบดเบ‡ 25 MHz, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปเบšเปˆเบ‡เบญเบญเบเบ”เป‰เบงเบเบชเบตเปˆ (BR[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)

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เป€เบšเบดเปˆเบ‡ schematics, เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เปเป‰เบ„เบงเบฒเบกเบ‚เบญเบ‡ CPOL เปเบฅเบฐ CPHA bits เปƒเบ™เบซเบ™เป‰เบฒ 704 (SPI General Description):

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เป„เบฅเบเบฐเป‚เบกเบ‡ เปเบฅเบฐเบ‚เบปเป‰เบงเป‚เบฅเบ
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ CPOL เปเบฅเบฐ CPHA bits เบ‚เบญเบ‡เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ SPI_CR1, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ” programmatically เป€เบฅเบทเบญเบเบชเบตเปˆเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒ. เบšเบดเบ” CPOL (clock polarity) เบ„เบงเบšเบ„เบธเบกเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบ™เป‚เบกเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™. เบšเบดเบ”เบ™เบตเป‰เบ„เบงเบšเบ„เบธเบกเบฎเบนเบšเปเบšเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปเบฅเบฐเบชเปเบฒเบฅเบญเบ‡. เบ–เป‰เบฒ CPOL เบ–เบทเบเบฃเบตเป€เบŠเบฑเบ”, PIN SCK เปเบกเปˆเบ™เบ•เปเปˆเบฒเบขเบนเปˆเปƒเบ™เป‚เปเบ”เบžเบฑเบเบœเปˆเบญเบ™. เบ–เป‰เบฒเบšเบดเบ” CPOL เบ–เบทเบเบ•เบฑเป‰เบ‡, PIN SCK เบˆเบฐเบชเบนเบ‡เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบžเบฑเบเบœเปˆเบญเบ™.
เป€เบกเบทเปˆเบญ CPHA (เป„เบฅเบเบฐเป‚เบกเบ‡) เบšเบดเบ”เบ–เบทเบเบ•เบฑเป‰เบ‡, เบชเบนเบ‡เบšเบดเบ”เบ”เบฑเบ strobe เปเบกเปˆเบ™เบ‚เบญเบšเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบ™ SCK (เบซเบผเบธเบ”เบฅเบปเบ‡เบ–เป‰เบฒ CPOL เบŠเบฑเบ”เป€เบˆเบ™, เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ–เป‰เบฒ CPOL เบ–เบทเบเบ•เบฑเป‰เบ‡). เบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบˆเบฑเบšเป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ„เบฑเป‰เบ‡เบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบ™เป‚เบกเบ‡. เบ–เป‰เบฒเบšเบดเบ”เบ‚เบญเบ‡ CPHA เปเบกเปˆเบ™เบˆเบฐเปเบˆเป‰เบ‡, เบชเบนเบ‡เบšเบดเบ”เบ”เบฑเบ strobe เปเบกเปˆเบ™เบ‚เบญเบšเบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบ™ SCK (เปเบ‚เบšเบซเบผเบธเบ”เบฅเบปเบ‡เบ–เป‰เบฒ CPOL เบ–เบทเบเบ•เบฑเป‰เบ‡, เบ‚เบญเบšเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ–เป‰เบฒ CPOL เบ–เบทเบเบฅเป‰เบฒเบ‡). เบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบˆเบฑเบšเบขเบนเปˆเบ—เบตเปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบ™เป‚เบกเบ‡.

เบกเบตเบเบฒเบ™เบ”เบนเบ”เบŠเบถเบกเบ„เบงเบฒเบกเบฎเบนเป‰เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบกเบฒเบชเบฐเบซเบฅเบธเบšเบงเปˆเบฒเบ—เบฑเบ‡เบชเบญเบ‡เบšเบดเบ”เบ•เป‰เบญเบ‡เบเบฑเบ‡เบ„เบปเบ‡เป€เบ›เบฑเบ™เบชเบนเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒ เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบชเบฑเบ™เบเบฒเบ™ SCK เบเบฑเบ‡เบ„เบปเบ‡เบ•เปเปˆเบฒเป€เบกเบทเปˆเบญเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰, เปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบขเบนเปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡เบเปเบฒเบกเบฐเบˆเบญเบ™ (เป€เบšเบดเปˆเบ‡เบฎเบนเบš. เบ‚เบญเบšโ€‹เป€เบžเบตเปˆเบกโ€‹เบ‚เบถเป‰เบ™ เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ DM634).

เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบปเบšเบเบฑเบšเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเบšเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™ ST เบ—เปเบฒเบญเบดเบ”: เปƒเบ™เบžเบงเบเบกเบฑเบ™เบ„เปเบฒเบงเปˆเบฒ "เบ›เบฑเบšเบšเบดเบ”เป€เบ›เบฑเบ™เบชเบนเบ™" เบ–เบทเบเบ‚เบฝเบ™. เป€เบžเบทเปˆเบญโ€‹เบ›เบฑเบšโ€‹เปƒเบซเบกเปˆโ€‹เป€เบฅเบฑเบโ€‹เบ™เป‰เบญเบโ€‹เปเบฅเบฐเบšเปเปˆ เป€เบžเบทเปˆเบญเบญเบฐเบ™เบฒเป„เบกเป€เบฅเบฑเบเบ™เป‰เบญเบ, เป€เบŠเบฑเปˆเบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, Atmega.

3. เบ•เบฑเป‰เบ‡ DFF bit เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบšเบฅเบฑเบญเบเบ‚เปเป‰เบกเบนเบ™เป€เบ›เบฑเบ™เบฎเบนเบšเปเบšเบš 8-bit เบซเบผเบท 16-bit

เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบญเบปเบฒ 16-bit DM634 เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบฅเบปเบšเบเบงเบ™เบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™ 12-bit PWM, เป€เบŠเบฑเปˆเบ™ DM633. เบกเบฑเบ™เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เบ—เบตเปˆเบˆเบฐเบ•เบฑเป‰เบ‡ DFF เป€เบ›เบฑเบ™เบญเบฑเบ™เบ”เบฝเบง:

#define DFF         0x0800

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

4. เบเบณเบ™เบปเบ”เบ„เปˆเบฒ LSBFIRST bit เบขเบนเปˆเปƒเบ™เบ—เบฐเบšเบฝเบ™ SPI_CR1 เป€เบžเบทเปˆเบญเบเบณเบ™เบปเบ”เบฎเบนเบšเปเบšเบšเบšเบฅเบฑเบญเบ

LSBFIRST, เบ•เบฒเบกเบŠเบทเปˆเบ‚เบญเบ‡เบกเบฑเบ™เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™, เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เบ—เบตเปˆเบกเบตเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เบเปˆเบญเบ™. เปเบ•เปˆ DM634 เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเบ™เป‰เบญเบเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบญเบเปƒเบซเป‰เบกเบฑเบ™เบ•เบฑเป‰เบ‡เปƒเบซเบกเปˆ.

5. เปƒเบ™เป‚เบซเบกเบ”เบฎเบฒเบ”เปเบง, เบ–เป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ PIN NSS, เปƒเบŠเป‰เบชเบฑเบ™เบเบฒเบ™เบชเบนเบ‡เปƒเบชเปˆ PIN NSS เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบฅเปเบฒเบ”เบฑเบšเบเบฒเบ™เป‚เบญเบ™ byte เบ—เบฑเบ‡เบซเบกเบปเบ”. เปƒเบ™เป‚เบซเบกเบ”เบŠเบญเบšเปเบง NSS, เปƒเบซเป‰เบ•เบฑเป‰เบ‡ SSM เปเบฅเบฐ SSI bits เปƒเบ™เบ—เบฐเบšเบฝเบ™ SPI_CR1. เบ–เป‰เบฒ PIN 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 เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เปƒเบซเป‰เบ‚เบฝเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบชเบปเปˆเบ‡ bytes เบเบฑเบšเบ„เบปเบ™เบ‚เบฑเบš. เบชเบทเบšเบ•เปเปˆเบเบฒเบ™เบญเปˆเบฒเบ™ 25.3.3 โ€œเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ SPI เปƒเบ™เบฎเบนเบšเปเบšเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšโ€:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เบ„เปเบฒเบชเบฑเปˆเบ‡เป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™
เบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบกเบทเปˆเบญ byte เบ–เบทเบเบ‚เบฝเบ™เป„เบ›เบ—เบตเปˆ Tx buffer.
byte เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™ loaded เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ shift register at เบ‚เบฐเปœเบฒเบ™ เป‚เบซเบกเบ” (เบˆเบฒเบเบฅเบปเบ”เป€เบกเบžเบฒเบเปƒเบ™) เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เบญเบ‡ bit เบ—เปเบฒเบญเบดเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบ–เบทเบเบชเบปเปˆเบ‡เบเบฑเบš เบฅเบณเบ”เบฑเบš เป‚เปเบ” PIN MOSI, เบšเบดเบ”เบ—เบณเบญเบดเบ” เบซเบผเบทเบชเบธเบ”เบ—เป‰เบฒเบเป„เบ›เบ‚เป‰เบฒเบ‡เปœเป‰เบฒ เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡ LSBFIRST bit เปƒเบ™เบ—เบฐเบšเบฝเบ™ CPI_CR1. เบ—เบธเบ‡ TXE เบ–เบทเบเบ•เบฑเป‰เบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™ เบˆเบฒเบ Tx buffer เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบ—เบฐเบšเบฝเบ™, เปเบฅเบฐเบเบฑเบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ–เป‰เบฒเบšเบดเบ” TXEIE เปƒเบ™เบ—เบฐเบšเบฝเบ™ CPI_CR1 เบ–เบทเบเบ•เบฑเป‰เบ‡.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบชเบญเบ‡เบชเบฒเบกเบ„เปเบฒเปƒเบ™เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒเป€เบžเบทเปˆเบญเบ”เบถเบ‡เบ”เบนเบ”เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” SPI เปƒเบ™เบ•เบปเบงเบ„เบงเบšเบ„เบธเบก STM. เปƒเบ™ Atmega เบ—เบธเบ‡ TXE (Tx เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, tx เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเปเบฅเบฐเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™) เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบžเบฝเบ‡เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบ byte เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบ–เบทเบเบชเบปเปˆเบ‡ เบžเบฒเบเบ™เบญเบ. เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ—เบธเบ‡เบ™เบตเป‰เบ–เบทเบเบ•เบฑเป‰เบ‡เบซเบผเบฑเบ‡เบˆเบฒเบ byte เป„เบ”เป‰เบ–เบทเบเปƒเบชเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ—เบฐเบšเบฝเบ™ shift เบžเบฒเบเปƒเบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบกเบฑเบ™เบ–เบทเบเบเบนเป‰เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบ”เป‰เบงเบเบšเบดเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™ (เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™), เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเป‚เบญเบ™เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš, TXE เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบเปˆเบญเบ™เบ—เบตเปˆ byte เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบซเบกเบปเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒ เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เป„เบ”เป€เบงเบต LED เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เบถเบ‡ pin LAT เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบปเปˆเบ‡ ะฒัะตั… เบ‚เปเป‰เบกเบนเบ™, i.e. เบ—เบธเบ‡ TXE เบขเปˆเบฒเบ‡เบ”เบฝเบงเบˆเบฐเบšเปเปˆเบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ.

เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบธเบ‡เบญเบทเปˆเบ™. เบฅเบญเบ‡เป€เบšเบดเปˆเบ‡ 25.3.7 - โ€œเบ—เบธเบ‡เบชเบฐเบ–เบฒเบ™เบฐโ€:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
<โ€ฆ>
เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เบ—เบธเบ‡ BUSY
เบ—เบธเบ‡ BSY เบ–เบทเบเบ•เบฑเป‰เบ‡เปเบฅเบฐเบ–เบทเบเบฅเบถเบšเบฅเป‰เบฒเบ‡เป‚เบ”เบเบฎเบฒเบ”เปเบง (เบเบฒเบ™เบ‚เบฝเบ™เบกเบฑเบ™เบšเปเปˆเบกเบตเบœเบปเบ™). เบ—เบธเบ‡ BSY เบŠเบตเป‰เบšเบญเบเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบŠเบฑเป‰เบ™เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™ SPI.
เบกเบฑเบ™เบฃเบตเป€เบŠเบฑเบ”:
เป€เบกเบทเปˆเบญโ€‹เบเบฒเบ™โ€‹เป‚เบญเบ™โ€‹เป„เบ”เป‰โ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ” (เบเบปเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ•เบปเป‰เบ™โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เป‚เบญเบ™โ€‹เปเบกเปˆเบ™โ€‹เบ•เปเปˆโ€‹เป€เบ™เบทเปˆเบญเบ‡โ€‹)
เป€เบกเบทเปˆเบญ SPI เบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™
เป€เบกเบทเปˆเบญโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ•เบปเป‰เบ™โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™ (MODF=1โ€‹)
เบ–เป‰เบฒเบเบฒเบ™เป‚เบญเบ™เบšเปเปˆเบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เบ—เบธเบ‡ BSY เบˆเบฐเบ–เบทเบเบฅเบถเบšเบฅเป‰เบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เปเบ•เปˆเบฅเบฐเบเบฒเบ™เป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™

เบ•เบปเบเบฅเบปเบ‡, เบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”. เปƒเบซเป‰เบŠเบญเบเบซเบฒเบšเปˆเบญเบ™เบ—เบตเปˆ Tx buffer เบ•เบฑเป‰เบ‡เบขเบนเปˆ. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบญเปˆเบฒเบ™ "SPI Data Register":

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
Bits 15:0 DR[15:0] เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ‚เปเป‰เบกเบนเบ™
เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบซเบผเบทเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡.
เบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบกเบนเบ™เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบชเบญเบ‡ buffers - เบซเบ™เบถเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฝเบ™ (buffer เบชเบปเปˆเบ‡) เปเบฅเบฐเบซเบ™เบถเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™ (เบฎเบฑเบš buffer). เบเบฒเบ™เบ‚เบฝเบ™เบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบ‚เบฝเบ™เป„เบ›เบ—เบตเปˆ Tx buffer, เปเบฅเบฐเบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบเบ—เบฐเบšเบฝเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบ„เปˆเบฒเบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™ Rx buffer.

เบ”เบต, เปเบฅเบฐเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบš, เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบตเบ—เบธเบ‡ 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 เป€เบ—เบปเปˆเบฒเบชเบญเบ‡ bytes, เบญเบตเบ‡เบ•เบฒเบกเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡ LED driver, เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

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();
}

เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบˆเบฐเบ”เบถเบ‡ PIN LAT เปเบ™เบงเปƒเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒ I/O.

เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบ pins

เปƒเบ™ STM32F1, เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡ pins เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบœเบดเบ”เบ›เบปเบเบเบฐเบ•เบด. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบกเบตเบžเบงเบเบกเบฑเบ™เบซเบผเบฒเบเบเปˆเบงเบฒ Atmega, เปเบ•เปˆเบžเบงเบเบกเบฑเบ™เบเบฑเบ‡เปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบŠเบดเบš STM เบญเบทเปˆเบ™เป†. เบžเบฒเบเบ—เบต 9.1 เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡ GPIO:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เปเบ•เปˆเบฅเบฐเบžเบญเบ” I/O เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ—เบปเปˆเบงเป„เบ› (GPIO) เบกเบตเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบเบณเบ™เบปเบ”เบ„เปˆเบฒ 32-เบšเบดเบ” (GPIOx_CRL เปเบฅเบฐ GPIOx_CRH), เบชเบญเบ‡เบ—เบฐเบšเบฝเบ™เบ‚เปเป‰เบกเบนเบ™ 32-เบšเบดเบ” (GPIOx_IDR เปเบฅเบฐ GPIOx_ODR), เบ—เบฐเบšเบฝเบ™เบŠเบธเบ”/เบฃเบตเป€เบŠเบฑเบ” 32-เบšเบดเบ” (GPIOx_BSRR), เบ—เบฐเบšเบฝเบ™เบฃเบตเป€เบŠเบฑเบ” 16-เบšเบดเบ” (GPIOx_BRR) เปเบฅเบฐ 32- bit blocking register (GPIOx_LCKR).

เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเบญเบ‡เบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบœเบดเบ”เบ›เบปเบเบเบฐเบ•เบด, เปเบฅเบฐเบเบฑเบ‡เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบšเปเปˆเบชเบฐเบ”เบงเบ, เป€เบžเบฒเบฐเบงเปˆเบฒ 16 เบฎเบนเบชเบฝเบšเบ–เบทเบเบเบฐเปเบˆเบเบเบฐเบˆเบฒเบเป„เบ›เบ—เบปเปˆเบงเบžเบงเบเบกเบฑเบ™เปƒเบ™เบฎเบนเบšเปเบšเบš "เบชเบตเปˆเบšเบดเบ”เบ•เปเปˆเบญเป‰เบฒเบ". เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. pins zero เบซเบฒเป€เบˆเบฑเบ”เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ CRL, เปเบฅเบฐเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ CRH. เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเบขเปˆเบฒเบ‡เบชเปเบฒเป€เบฅเบฑเบ”เบœเบปเบ™เบกเบตเบšเบดเบ”เบ‚เบญเบ‡ pins เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเป€เบฎเบทเบญ - เบชเปˆเบงเบ™เบซเบผเบฒเบเปเบกเปˆเบ™เบเบฑเบ‡เป€เบซเบผเบทเบญเป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡ "เบชเบฐเบซเบ‡เบงเบ™".

เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบ, เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ.

เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบฅเบฐเบฃเบตเป€เบŠเบฑเบ”เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ•เบฐเบซเบฅเบปเบเบ—เบตเปˆเบกเบฑเบ™เบŠเปเป‰เบฒเบเบฑเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™: เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบ—เบธเบเบขเปˆเบฒเบ‡เปƒเบ™ BSRR เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™, เบšเปˆเบญเบ™เบ—เบตเปˆ 16 bits เบชเบนเบ‡เบเบงเปˆเบฒเบˆเบฐเบ›เบฑเบš pin เป€เบ›เบฑเบ™เบชเบนเบ™, เปเบฅเบฐเบ•เบปเบงเบ•เปˆเปเบฒเบˆเบฐเบ–เบทเบเบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™ 1, เบซเบผเบทเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”. เปƒเบŠเป‰ BRR, 16 bits เบ•เปˆเปเบฒเบ—เบตเปˆเบžเบฝเบ‡เปเบ•เปˆ reset pin . เบ‚เป‰เบญเบเบกเบฑเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเบชเบญเบ‡. เบ—เบฐเบšเบฝเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ›เบฐเบฅเปเบฒเบกเบฐเบ™เบนเบเบฑเบš pins:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
Atomic Set เบซเบผเบท Reset
เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบดเบ”เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก GPIOx_ODR เปƒเบ™เบฅเบฐเบ”เบฑเบšเบšเบดเบ”: เบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบšเบดเบ”เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ‚เบฝเบ™เบ›เบฐเบฅเปเบฒเบกเบฐเบ™เบนเบ”เบฝเบง APB2. เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบฅเบธเป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบ‚เบฝเบ™ "1" เปƒเบชเปˆเบŠเบธเบ”เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ / เบฃเบตเป€เบŠเบฑเบ” (GPIOx_BSRR เบซเบผเบท, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบžเบฝเบ‡เปเบ•เปˆ, GPIOx_BRR) เบ‚เบญเบ‡เบšเบดเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบšเบดเบ”เบญเบทเปˆเบ™เป†เบˆเบฐเบเบฑเบ‡เบ„เบปเบ‡เบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡.

เบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบกเบนเบ™เบกเบตเบŠเบทเปˆเบญเบฐเบ—เบดเบšเบฒเบเบ•เบปเบ™เป€เบญเบ‡เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡ - IDR = เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™ เบ—เบดเบ”โ€‹เบ—เบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบˆเบปเบ”โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹, เบเบฒเบ™โ€‹เบˆเบปเบ”โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹เบเบฒเบ™โ€‹เบ›เป‰เบญเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹; ODR = เบœเบปเบ™เบœเบฐเบฅเบดเบ” Direction Register, เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบžเบงเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™.

เปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบ, เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™ pins SPI เบ—เบตเบชเบญเบ‡, เบ„เบท PB13, PB14 เปเบฅเบฐ PB15, เบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ™เบ—เบตเป€เบšเบดเปˆเบ‡ CRH:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8

เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบ™ bits เบˆเบฒเบ 20 เบซเบฒ 31.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ„เบดเบ”เบญเบญเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบˆเบฒเบ pins, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเป€เบฎเบฑเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ screenshot, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเป€เบงเบปเป‰เบฒเบงเปˆเบฒ MODE เบเปเบฒเบ™เบปเบ”เบ—เบดเบ”เบ—เบฒเบ‡ (เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เบฑเบ‡เบชเบญเบ‡เบšเบดเบ”เบ–เบทเบเบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™ 0) เปเบฅเบฐเบ„เบงเบฒเบกเป„เบง pin (เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ 50MHz, i.e. เบ—เบฑเบ‡เบชเบญเบ‡ pin เป€เบ›เบฑเบ™ "1"), เปเบฅเบฐ CNF เบเปเบฒเบ™เบปเบ”เบฎเบนเบšเปเบšเบš: เบ›เบปเบเบเบฐเบ•เบด "push-pull" - 00, "เบ—เบฒเบ‡เป€เบฅเบทเบญเบ" - 10. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, pins เบ—เบฑเบ‡เบซเบกเบปเบ”เบกเบตเบšเบดเบ”เบ—เบตเบชเบฒเบกเบˆเบฒเบเบฅเบธเปˆเบกเบชเบธเบ” (CNF0), เบกเบฑเบ™เบ•เบฑเป‰เบ‡เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบขเบนเปˆเปƒเบ™เป‚เบซเบกเบ” เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เปเบšเบšเป€เบฅเบทเปˆเบญเบ™.

เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบญเบทเปˆเบ™เบเบฑเบšเบŠเบดเบšเบ™เบตเป‰, เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒ MODE เปเบฅเบฐ 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

เบ›เบฑเบเปเบธเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเป‰เบ‡เบขเบนเปˆเป€เบ—เบดเบ‡เบžเบญเบ” B (เบ—เบตเปˆเบขเบนเปˆเบ–เบฒเบ™ โ€“ 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 เป‚เบ”เบ inertia, เบกเบฑเบ™เป€เบ›เบฑเบ™เปเบšเบšเบ™เบฑเป‰เบ™เบชเบฐ เป€เปเบต เป„เบ›, เปƒเบซเป‰เบกเบฑเบ™เบขเบนเปˆ)

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ”เบต, เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบœเบปเบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™ STM32, เบžเบงเบเบกเบฑเบ™เบ›เบฐเบซเบเบฑเบ”เป„เบŸเบŸเป‰เบฒ, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบกเบ‡เบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™.

เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบกเบ‡

เป‚เบกเบ‡, เป€เบŠเบดเปˆเบ‡เป€เบญเบตเป‰เบ™เบเบฑเบ™เบงเปˆเบฒเป‚เบกเบ‡, เบกเบตเปœเป‰เบฒเบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเป‚เบกเบ‡. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบ•เบปเบงเบซเบเปเป‰ RCC เปเบฅเป‰เบง. เบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™: เบ™เบตเป‰เปเบกเปˆเบ™ Reset เปเบฅเบฐ Clock Control.

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเป„เบงเป‰เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เป‚เบŠเบเบ”เบต, เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบเบฒเบเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบซเบปเบงเบ‚เปเป‰เป‚เบกเบ‡เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเป‚เบ”เบเบ›เบฐเบŠเบฒเบŠเบปเบ™เบˆเบฒเบ STM, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ‚เปเบ‚เบญเบšเปƒเบˆเบžเบงเบเป€เบ‚เบปเบฒเบซเบผเบฒเบ (เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบ‚เป‰เบญเบเบˆเบฐเปƒเบซเป‰เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš เป€เบงเบฑเบšเป„เบŠเบ—เปŒ Di Halt, เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบกเบฑเบ™เบชเบฑเบšเบชเบปเบ™). เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบเบฒเบ™โ€‹เบˆเบปเบ”โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบฎเบฑเบšโ€‹เบœเบดเบ”โ€‹เบŠเบญเบšโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบ›เบตเบ”โ€‹เปƒเบŠเป‰โ€‹เบ‡เบฒเบ™โ€‹เบเบฒเบ™โ€‹เป‚เบกเบ‡โ€‹เบ•เปเปˆโ€‹เบ‚เป‰เบฒเบ‡ (Peripheral Clock Enable Registers). เบ—เปเบฒเบญเบดเบ”, เปƒเบซเป‰เบŠเบญเบเบซเบฒเบ—เบตเปˆเบขเบนเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡ 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 volts, เบขเปˆเบฒเบฅเบทเบกเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™.

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8

STM8 PWM

PWM เปƒเบ™ STM8

เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบžเบฝเบ‡เปเบ•เปˆเบงเบฒเบ‡เปเบœเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆ, เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบŠเบดเบšเบ—เบตเปˆเบšเปเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบเป‚เบ”เบเปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเปเบœเปˆเบ™เบ‚เปเป‰เบกเบนเบ™, เป€เบžเบทเปˆเบญเบงเปˆเบฒเบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเบชเบดเป‰เบ™เบชเบธเบ”เบ”เป‰เบงเบเบœเบนเป‰เบœเบฐเบฅเบดเบ”เป€เบเบตเบšเป‚เบ”เบเบšเปเปˆเบกเบตเป€เบเบตเบš. STM8 เปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบšเบปเบ”เบšเบฒเบ”เบ™เบตเป‰: เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ‚เป‰เบญเบเบกเบตเบเบฐเบ”เบฒเบ™เบˆเบตเบ™เบชเบญเบ‡เบ„เบนเปˆเบเบฑเบš STM8S103, เปเบฅเบฐเบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเบ™เบดเบเบปเบกเบซเบผเบฒเบ, เบชเบฐเบ™เบฑเป‰เบ™เบเบฒเบ™เบฅเปเป‰เบฅเบงเบ‡เบ—เบตเปˆเบˆเบฐเบญเปˆเบฒเบ™เปเบฅเบฐเบŠเบญเบเบซเบฒเบงเบดเบ—เบตเปเบเป‰เป„เบ‚เปƒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบ‚เบฒเบ”เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

chip เบเบฑเบ‡เบกเบต เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹ ะธ เบ„เบนเปˆเบกเบทเบญเป‰เบฒเบ‡เบญเบตเบ‡ RM0016, เปƒเบ™เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบกเบต pinout เปเบฅเบฐเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบขเบนเปˆ, เปƒเบ™เบ—เบตเบชเบญเบ‡ - เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™. STM8 เบ–เบทเบเบ•เบฑเป‰เบ‡เป‚เบ„เบ‡เบเบฒเบ™เบขเบนเปˆเปƒเบ™ C เปƒเบ™ IDE เบ‚เบตเป‰เบฎเป‰เบฒเบ ST Visual เบžเบฑเบ”เบ—เบฐเบ™เบฒ.

เป‚เบกเบ‡ เปเบฅเบฐ I/O

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, STM8 เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเบ—เบตเปˆเบ„เบงเบฒเบกเบ–เบตเปˆเบ‚เบญเบ‡ 2 MHz, เบ™เบตเป‰เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบฑเบ™เบ—เบต.

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
HSI (High Speed โ€‹โ€‹โ€‹โ€‹Internal) เป‚เบกเบ‡
เบชเบฑเบ™เบเบฒเบ™เป‚เบกเบ‡ HSI เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบžเบฒเบเปƒเบ™ 16 MHz RC oscillator เบ—เบตเปˆเบกเบตเบ•เบปเบงเปเบšเปˆเบ‡เป‚เบ„เบ‡เบเบฒเบ™ (1 เบซเบฒ 8). เบกเบฑเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบ—เบฐเบšเบฝเบ™เบ•เบปเบงเปเบšเปˆเบ‡เป‚เบกเบ‡ (CLK_CKDIVR).
เบซเบกเบฒเบเป€เบซเบ”: เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป€เบ„เบทเปˆเบญเบ‡เบชเบฑเปˆเบ™เบชเบฐเป€เบ—เบทเบญเบ™ HSI RC เบ—เบตเปˆเบกเบตเบ•เบปเบงเปเบšเปˆเบ‡ 8 เบ–เบทเบเป€เบฅเบทเบญเบเป€เบ›เบฑเบ™เปเบซเบผเปˆเบ‡เบ™เปเบฒเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบ™เป‚เบกเบ‡.

เบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเบ—เบตเปˆเบขเบนเปˆเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบขเบนเปˆเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเปƒเบ™ refman เปเบฅเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฅเบถเบšเบฅเป‰เบฒเบ‡:

#define CLK_CKDIVR *(volatile uint8_t *)0x0050C6

CLK_CKDIVR &= ~(0x18);

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ PWM เปเบฅเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ LEDs, เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡ pinout:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8

เบŠเบดเบšเปเบกเปˆเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบซเบผเบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆเบ–เบทเบเป‚เบˆเบฐเบขเบนเปˆเปƒเบ™ pins เบ”เบฝเบงเบเบฑเบ™. เบชเบดเปˆเบ‡เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบงเบปเบ‡เป€เบฅเบฑเบšเบชเบตเปˆเบซเบผเปˆเบฝเบกเปเบกเปˆเบ™ "เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ", เบกเบฑเบ™เบ–เบทเบเบ›เปˆเบฝเบ™เป‚เบ”เบ "เบ—เบฒเบ‡เป€เบฅเบทเบญเบ bytes" (เบ—เบฒเบ‡เป€เบฅเบทเบญเบ bytes) - เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: Atmega fuses. เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบ„เบธเบ™โ€‹เบ„เปˆเบฒโ€‹เบ‚เบญเบ‡โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹, เปเบ•เปˆโ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบšเปเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹, เป€เบžเบฒเบฐโ€‹เบงเปˆเบฒโ€‹ เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบซเบกเปˆเปเบกเปˆเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เบดเบ”เป€เบ›เบตเบ”เปƒเบซเบกเปˆเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เบกเบฑเบ™เบ‡เปˆเบฒเบเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰ ST Visual Programmer (เบ”เบฒเบงเป‚เบซเบผเบ”เบ”เป‰เบงเบ Visual Develop), เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เป„เบšเบ—เปŒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰. pinout เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ pins CH1 เปเบฅเบฐ CH2 เบ‚เบญเบ‡ timer เบ—เปเบฒเบญเบดเบ”เบ–เบทเบเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เปƒเบ™เบงเบปเบ‡เป€เบฅเบฑเบšเบชเบตเปˆเบซเบฅเปˆเบฝเบก; เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ” AFR1 เปเบฅเบฐ AFR0 bits เปƒเบ™ STVP, เปเบฅเบฐเบญเบฑเบ™เบ—เบตเบชเบญเบ‡เบเบฑเบ‡เบˆเบฐเป‚เบญเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ” CH1 เบ‚เบญเบ‡เป‚เบกเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเบ—เบตเบชเบญเบ‡เบˆเบฒเบ PD4 เบเบฑเบš PC5.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, 6 pins เบˆเบฐเบ„เบงเบšเบ„เบธเบก LEDs: PC6, PC7 เปเบฅเบฐ PC3 เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเบ—เปเบฒเบญเบดเบ”, PC5, PD3 เปเบฅเบฐ PA3 เบชเปเบฒเบฅเบฑเบšเบ„เบฑเป‰เบ‡เบ—เบตเบชเบญเบ‡.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ I/O pins เบ”เป‰เบงเบเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบขเบนเปˆเปƒเบ™ STM8 เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบเบงเปˆเบฒเปเบฅเบฐเบกเบตเป€เบซเบ”เบœเบปเบ™เบซเบผเบฒเบเบเปˆเบงเบฒเบขเบนเปˆเปƒเบ™ STM32:

  • เบ„เบธเป‰เบ™เป€เบ„เบตเบเบˆเบฒเบเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™ Atmega DDR (เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™): 1 = เบœเบปเบ™เบœเบฐเบฅเบดเบ”;
  • เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ—เปเบฒเบญเบดเบ” CR1, เป€เบกเบทเปˆเบญเบœเบปเบ™เบœเบฐเบฅเบดเบ”, เบเปเบฒเบ™เบปเบ”เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบŠเบธเบเบเบนเป‰เบเบฒเบ™เบ”เบถเบ‡ (1) เบซเบผเบทเบ—เปเปˆเบฅเบฐเบšเบฒเบเบ™เป‰เปเบฒเป€เบ›เบตเบ” (0); เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ LEDs เบเบฑเบš chip เบเบฑเบš cathodes, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบญเบญเบเบˆเบฒเบเบชเบนเบ™เบ—เบตเปˆเบ™เบตเป‰;
  • เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ—เบตเบชเบญเบ‡ CR2, เป€เบกเบทเปˆเบญเบœเบปเบ™เบœเบฐเบฅเบดเบ”, เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเป„เบงเป‚เบกเบ‡: 1 = 10 MHz

#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

เบ—เปเบฒเบญเบดเบ”, เปƒเบซเป‰เบเปเบฒเบ™เบปเบ”เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”:

  • PWM เบ„เบงเบฒเบกเบ–เบตเปˆ - เบ„เบงเบฒเบกเบ–เบตเปˆเบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเปเบฒเบเบ•เบดเบ;
  • เป‚เบซเบผเบ”เบ„เบทเบ™เปƒเปเปˆเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, AR - เบ„เปˆเบฒ autoloadable เบชเบนเบ‡โ€‹เป€เบ–เบดเบ‡โ€‹เบ—เบตเปˆ timer เบˆเบฐโ€‹เบ™เบฑเบš (เป„เบฅโ€‹เบเบฐโ€‹เบเปเบฒโ€‹เบกเบฐโ€‹เบˆเบญเบ™โ€‹)โ€‹;
  • เบญเบฑเบšเป€เบ”เบ”เป€เบซเบ”เบเบฒเบ™, UEV โ€“ เป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเป‚เบกเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเบ™เบฑเบšเป€เบ›เบฑเบ™ AR;
  • เบงเบปเบ‡เบˆเบญเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ PWM โ€“ เบฎเบญเบšเบงเบฝเบ™เปœเป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡ PWM, เบกเบฑเบเบˆเบฐเป€เบญเบตเป‰เบ™เบงเปˆเบฒ โ€œเบ›เบฑเบ”เป„เบˆเปœเป‰เบฒเบ—เบตเปˆโ€;
  • เบšเบฑเบ™เบ—เบถเบ/เบ›เบฝเบšเบ—เบฝเบšเบกเบนเบ™เบ„เปˆเบฒ - เบกเบนเบ™โ€‹เบ„เปˆเบฒโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบˆเบฑเบšโ€‹เบžเบฒเบš / เบเบฒเบ™โ€‹เบ›เบฝเบšโ€‹เบ—เบฝเบšโ€‹, เบ—เบตเปˆ timer เป„เบ”เป‰โ€‹เบ™เบฑเบšโ€‹ เบˆเบฐเป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡ (เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ PWM, เบกเบฑเบ™ inverts เบชเบฑเบ™เบเบฒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”);
  • เบ„เปˆเบฒเบฅเปˆเบงเบ‡เปœเป‰เบฒ - เบ„เปˆเบฒ preloaded. เบ›เบฝเบšเบ—เบฝเบšเบกเบนเบ™เบ„เปˆเบฒ เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเบ–เบทเบเปเบฒเบ, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบงเบปเบ‡เบˆเบญเบ™ PWM เบˆเบฐเปเบ•เบ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบนเบ™เบ„เปˆเบฒเบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เปƒเบซเบกเปˆเปเบกเปˆเบ™เบ–เบทเบเบˆเบฑเบ”เปƒเบชเปˆเปƒเบ™ buffer เปเบฅเบฐเบ”เบถเบ‡เบญเบญเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ timer เบกเบฒเบฎเบญเบ”เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ™เบฑเบšเบ–เบญเบเบซเบฅเบฑเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เปเบฅเบฐเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบซเบกเปˆ;
  • เบˆเบฑเบ”เบฎเบฝเบ‡เบ‚เบญเบš ะธ เป‚เปเบ”เบˆเบฑเบ”เบฎเบฝเบ‡เบเบฒเบ‡ - เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบงเบฒเบ‡โ€‹เบ•เบฒเบกโ€‹เบŠเบฒเบโ€‹เปเบ”เบ™โ€‹เปเบฅเบฐโ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบชเบนเบ™โ€‹เบเบฒเบ‡โ€‹, เป€เบŠเบฑเปˆเบ™โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบเบฑเบš Atmel เบ‚เบญเบ‡โ€‹ PWM เป„เบง ะธ PWM เป„เบฅเบเบฐเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.
  • OciREF, เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ›เบฝเบšเบ—เบฝเบšเบชเบฑเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡ - เบชเบฑเบ™เบเบฒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบญเป‰เบฒเบ‡เบญเบตเบ‡, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบชเบดเปˆเบ‡เบ—เบตเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ pin เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เปƒเบ™เบฎเบนเบšเปเบšเบš PWM.

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™เบˆเบฒเบ pinout, เบชเบญเบ‡เป‚เบกเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ” PWM - เบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเบ—เบตเบชเบญเบ‡. เบ—เบฑเบ‡เบชเบญเบ‡เปเบกเปˆเบ™ 16-bit, เบ—เปเบฒเบญเบดเบ”เบกเบตเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบซเบผเบฒเบ (เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ™เบฑเบšเป„เบ”เป‰เบ—เบฑเบ‡เบ‚เบถเป‰เบ™เปเบฅเบฐเบฅเบปเบ‡). เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบญเบฑเบ™เบ—เบตเบชเบญเบ‡เบ—เบตเปˆเบ—เบธเบเบเบฒเบเบเบงเปˆเบฒ, เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เปƒเบŠเป‰เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบขเบนเปˆเบšเปˆเบญเบ™เบ™เบฑเป‰เบ™เป‚เบ”เบเบšเบฑเบ‡เป€เบญเบตเบ™. เบšเบฑเบ™เบซเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ PWM เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบ„เบนเปˆเบกเบทเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบšเบปเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบˆเบฑเบšเป€เบงเบฅเบฒเบ—เปเบฒเบญเบดเบ” (17.5.7 PWM Mode), เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฐเป‚เบ”เบ”เบเบฑเบšเบ„เบทเบ™เป„เบ›เบ—เบปเปˆเบงเป€เบญเบเบฐเบชเบฒเบ™เบ•เบฐเบซเบผเบญเบ”เป€เบงเบฅเบฒ.

PWM เปƒเบ™ STM8 เบกเบตเบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบเบงเปˆเบฒ PWM เปƒเบ™ Atmega:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
PWM เบชเบญเบ”เบ„เปˆเบญเบ‡เบ•เบฒเบกเบŠเบฒเบเปเบ”เบ™
เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบšเบฑเบ™เบŠเบตเบˆเบฒเบเบฅเบธเปˆเบกเบซเบฒเป€เบ—เบดเบ‡
เบเบฒเบ™เบ™เบฑเบšเบ‚เบฑเป‰เบ™เบฅเบธเปˆเบกเปเบกเปˆเบ™เปƒเบŠเป‰เป„เบ”เป‰เบ–เป‰เบฒเบšเบดเบ” DIR เปƒเบ™เบ—เบฐเบšเบฝเบ™ TIM_CR1 เบ–เบทเบเบฅเบถเบšเบฅเป‰เบฒเบ‡
เบ•เบปเบงเบขเปˆเบฒเบ‡:
เบ•เบปเบงเบขเปˆเบฒเบ‡เปƒเบŠเป‰เป‚เบซเบกเบ” PWM เบ—เปเบฒเบญเบดเบ”. เบชเบฑเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡ PWM OCiREF เปเบกเปˆเบ™เบ–เบทเบชเบนเบ‡เป€เบ›เบฑเบ™ TIM1_CNT < TIM1_CCRi. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒ. เบ–เป‰เบฒเบ„เปˆเบฒเบ›เบฝเบšเบ—เบฝเบšเบขเบนเปˆเปƒเบ™เบ—เบฐเบšเบฝเบ™ TIM1_CCRi เปเบกเปˆเบ™เปƒเบซเบเปˆเบเบงเปˆเบฒเบ„เปˆเบฒ autoload (เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ TIM1_ARR), เบชเบฑเบ™เบเบฒเบ™ OCiREF เปเบกเปˆเบ™เบ–เบทเบขเบนเปˆเบ—เบตเปˆ 1. เบ–เป‰เบฒเบ„เปˆเบฒเบ›เบฝเบšเบ—เบฝเบšเปเบกเปˆเบ™ 0, OCiREF เบ–เบทเบเบˆเบฑเบ”เบขเบนเปˆเบ—เบตเปˆเบชเบนเบ™....

เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ STM8 เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ เบญเบฑเบšเป€เบ”เบ”เป€เบซเบ”เบเบฒเบ™ เบเบงเบ”เป€เบšเบดเปˆเบ‡เบเปˆเบญเบ™ เบ›เบฝเบšเบ—เบฝเบšเบกเบนเบ™เบ„เปˆเบฒ, เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบœเบฐเบฅเบดเบ”เบชเบฑเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡. เบ•เบปเบงเบˆเบฑเบšเป€เบงเบฅเบฒเบ‚เบญเบ‡ Atmega เบ—เปเบฒเบญเบดเบ” screws เบ‚เบถเป‰เบ™เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ›เบฝเบšเบ—เบฝเบš, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš compare value == 0 เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปเบกเปˆเบ™เป€เบ‚เบฑเบก, เป€เบŠเบดเปˆเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบš somehow (เบ•เบปเบงเบขเปˆเบฒเบ‡, เป‚เบ”เบ programmatically inverting เบ•เบฒเบกเป€เบซเบ”เบœเบปเบ™).

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”: 8-bit PWM (AR == 255), เบ™เบฑเบšเบˆเบฒเบเบฅเบธเปˆเบกเบซเบฒเป€เบ—เบดเบ‡, เบเบฒเบ™เบˆเบฑเบ”เบฅเบฝเบ‡เบ•เบฒเบกเบŠเบฒเบเปเบ”เบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบซเบฅเบญเบ”เป„เบŸเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบŠเบดเบšเป‚เบ”เบ cathodes, PWM เบ„เบงเบ™เบญเบญเบ 0 (LED เป€เบ›เบตเบ”) เบˆเบปเบ™เบเปˆเบงเบฒ. เบ›เบฝเบšเบ—เบฝเบšเบกเบนเบ™เบ„เปˆเบฒ เปเบฅเบฐ 1 เบซเบผเบฑเบ‡.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบญเปˆเบฒเบ™เปเบฅเป‰เบงเบเปˆเบฝเบงเบเบฑเบšเบšเบฒเบ‡ เบฎเบนเบšเปเบšเบš PWM, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡ timer เบ—เบตเบชเบญเบ‡เป‚เบ”เบเบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเปƒเบ™เบ„เบนเปˆเบกเบทเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป‚เบซเบเบเบ™เบตเป‰ (18.6.8 - TIMx_CCMR1):

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
110: เป‚เปเบ” PWM เบ—เบณเบญเบดเบ” โ€“ เป€เบกเบทเปˆเบญเบ™เบฑเบšเบˆเบฒเบเบฅเบธเปˆเบกเบ‚เบถเป‰เบ™เป€เบ—เบดเบ‡, เบŠเปˆเบญเบ‡เบ—เบณเบญเบดเบ”เบˆเบฐเป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ TIMx_CNT < TIMx_CCR1. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบŠเปˆเบญเบ‡เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบšเปเปˆเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. [เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบกเบตเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”เบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ 1] 111: เป‚เบซเบกเบ” PWM เบ—เบตเบชเบญเบ‡ - เป€เบกเบทเปˆเบญเบ™เบฑเบšเบˆเบฒเบเบฅเบธเปˆเบกเบ‚เบถเป‰เบ™เป€เบ—เบดเบ‡, เบŠเปˆเบญเบ‡เบ—เปเบฒเบญเบดเบ”เบšเปเปˆเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ TIMx_CNT < TIMx_CCR1. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบŠเปˆเบญเบ‡เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบงเบฝเบ.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ LEDs เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš MK เป‚เบ”เบ cathodes, เบฎเบนเบšเปเบšเบšเบ—เบตเบชเบญเบ‡เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ (เบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”เบ„เบทเบเบฑเบ™, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบšเปเปˆเบฎเบนเป‰).

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
Bit 3 OC1PE: เป€เบ›เบตเบ”เปƒเบŠเป‰ pin 1 preload
0: Preload register on TIMx_CCR1 is disabled. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เปƒเบชเปˆ TIMx_CCR1 เป„เบ”เป‰เบ—เบธเบเป€เบงเบฅเบฒ. เบกเบนเบ™เบ„เปˆเบฒเปƒเบซเบกเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ—เบฑเบ™เบ—เบต.
1: Preload register on TIMx_CCR1 is enabled. เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เบญเปˆเบฒเบ™ / เบ‚เบฝเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบเบฒเบ™โ€‹เบˆเบปเบ”โ€‹เบ—เบฐโ€‹เบšเบฝเบ™ preload เป„เบ”เป‰โ€‹. เบ„เปˆเบฒ 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;

เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เบเบฒเบ™เบชเบฐเบซเบฅเบธเบšเปเบฅเบฐเบˆเบฑเบšเป€เบงเบฅเบฒเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡. เบšเบฑเบ™เบซเบฒเบ—เปเบฒเบญเบดเบ”เบ–เบทเบเปเบเป‰เป„เบ‚เป‚เบ”เบเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ เบšเบฑเบ™เบ—เบถเบ/เบ›เบฝเบšเบ—เบฝเบš เป€เบ›เบตเบ”เบ™เปเบฒเปƒเบŠเป‰: เบกเบตเบชเบญเบ‡, เบชเบฒเบกเบŠเปˆเบญเบ‡เบเบฐเปเบˆเบเบเบฐเบˆเบฒเบเป„เบ›เบ—เบปเปˆเบงเบžเบงเบเบกเบฑเบ™เบšเปเปˆเบชเบปเบกเบกเบฒเบ”. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบฎเบฝเบ™เบฎเบนเป‰เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ polarity เบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบ™, i.e. เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰ PWM Mode 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(), เป€เบŠเบดเปˆเบ‡เบˆเบฐเป‚เบญเบ™เบ„เปˆเบฒเบ•เบปเบงเบˆเบดเบ‡เปƒเบซเป‰เบเบฑเบš timer เบชเบณเบฅเบฑเบšเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš. เบ—เบฐเบšเบฝเบ™เบกเบตเบŠเบทเปˆเบ—เบตเปˆเบ„เบฒเบ”เป€เบ”เบปเบฒเป„เบ”เป‰ เบšเบฑเบ™เบ—เบถเบ/เบ›เบฝเบšเบ—เบฝเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™, เบกเบตเบชเบญเบ‡เบญเบฑเบ™เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบŠเปˆเบญเบ‡: เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปˆเปเบฒ 8 เบšเบดเบ”เปƒเบ™ TIM2_CCRxL เปเบฅเบฐเบญเบฑเบ™เบ—เบตเปˆเบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡เบชเบนเบ‡เปƒเบ™ TIM2_CCRxH. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡ PWM 8-bit, เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบžเบฝเบ‡เปเบ•เปˆ bits เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”:

#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;
}

เบœเบนเป‰เบญเปˆเบฒเบ™เบ—เบตเปˆเป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต PWM เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบšเบปเบเบœเปˆเบญเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ, เบšเปเปˆเบชเบฒเบกเบฒเบ”เบœเบฐเบฅเบดเบ”เบเบฒเบ™เบ•เบทเปˆเบก 100% (เปƒเบ™เบกเบนเบ™เบ„เปˆเบฒเบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡ 255, เบชเบฑเบ™เบเบฒเบ™เปเบกเปˆเบ™ inverted เบชเปเบฒเบฅเบฑเบšเบงเบปเบ‡เบˆเบญเบ™ timer เบซเบ™เบถเปˆเบ‡). เบชเปเบฒเบฅเบฑเบš LEDs เบ™เบตเป‰เบšเปเปˆเบชเปเบฒเบ„เบฑเบ™, เปเบฅเบฐเบœเบนเป‰เบญเปˆเบฒเบ™เบ—เบตเปˆเป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เป€เบ”เบปเบฒเป„เบ”เป‰เบงเปˆเบฒเบˆเบฐเปเบเป‰เป„เบ‚เบกเบฑเบ™เป„เบ”เป‰เปเบ™เบงเปƒเบ”.

PWM เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเบ—เบตเบชเบญเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ, เปƒเบซเป‰เป€เบฎเบปเบฒเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบ•เบปเบงเบ—เปเบฒเบญเบดเบ”.

เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเบ—เปเบฒเบญเบดเบ”เบกเบตเบšเบดเบ”เบ”เบฝเบงเบเบฑเบ™เบขเบนเปˆเปƒเบ™เบ—เบฐเบšเบฝเบ™เบ”เบฝเบงเบเบฑเบ™ (เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบงเปˆเบฒเบšเบดเบ”เบ—เบตเปˆเบเบฑเบ‡เบ„เบปเบ‡ "เบชเบฐเบซเบ‡เบงเบ™" เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™เปƒเบ™เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบเป‰เบฒเบงเบซเบ™เป‰เบฒ). เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบŠเบญเบเบซเบฒเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบ—เบฐเบšเบฝเบ™เบ”เบฝเบงเบเบฑเบ™เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบ„เบฑเบ”เบฅเบญเบเบฅเบฐเบซเบฑเบ”. เปเบฅเป‰เบง, เบ›เปˆเบฝเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบšเปˆเบ‡เบ„เบงเบฒเบกเบ–เบตเปˆ, เป€เบžเบฒเบฐเบงเปˆเบฒ... เบ•เบปเบงเบˆเบฑเบšเป€เบงเบฅเบฒเบ—เปเบฒเบญเบดเบ”เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบšเปเปˆเปเบกเปˆเบ™เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบ‚เบญเบ‡เบชเบญเบ‡, เปเบ•เปˆเบกเบนเบ™เบ„เปˆเบฒ 16-bit เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เปƒเบ™เบชเบญเบ‡เบ—เบฐเบšเบฝเบ™ Prescaler เบชเบนเบ‡ ะธ เบ•เปˆเปเบฒ. เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบฅเบฐ ... timer เบ—เปเบฒเบญเบดเบ”เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบ. เปเบกเปˆเบ™เบซเบเบฑเบ‡?

เบšเบฑเบ™เบซเบฒเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เป€เบšเบดเปˆเบ‡เบœเปˆเบฒเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ‚เบญเบ‡ timer 1, เบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆ timer เบ—เบตเบชเบญเบ‡เบšเปเปˆเบกเบต. เบˆเบฐโ€‹เบกเบต 17.7.30 เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบžเบฑเบเบœเปˆเบญเบ™ (TIM1_BKR), เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบต bit เบ™เบตเป‰:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เป€เบ›เบตเบ”เปƒเบŠเป‰เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ•เบปเป‰เบ™เบ•เป

#define TIM1_BKR   *(volatile uint8_t *)0x00526D

TIM1_BKR = (1<<7);

เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเปเบฒเบฅเบฑเบšเปเบ™เปˆเบ™เบญเบ™เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบฅเบฐเบซเบฑเบ” เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™.

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8

STM8 Multiplex

Multiplexing เปƒเบ™ STM8

เป‚เบ„เบ‡เบเบฒเบ™ mini เบ—เบตเบชเบฒเบกเปเบกเปˆเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบ›เบ” RGB LEDs เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเบ—เบตเบชเบญเบ‡เปƒเบ™เป‚เบซเบกเบ” PWM เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเบกเบฑเบ™เบชเบฐเปเบ”เบ‡เบชเบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบกเบฑเบ™เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡ LED multiplexing, เป€เบŠเบดเปˆเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบ›เบตเบ”เปเบฅเบฐเบ›เบดเบ” LEDs เบซเบผเบฒเบ, เป„เบง, เบกเบฑเบ™เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเบ•เบฐเบซเบผเบญเบ”เป€เบงเบฅเบฒ (เบ„เบงเบฒเบกเบ„เบปเบ‡เบ—เบปเบ™เบ‚เบญเบ‡เบงเบดเป„เบชเบ—เบฑเบ”, inertia เบ‚เบญเบ‡เบเบฒเบ™เบฎเบฑเบšเบฎเบนเป‰เบชเบฒเบเบ•เบฒ). เบ‚เป‰เบญเบเป€เบ„เบตเบเป€เบฎเบฑเบ” เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰เปƒเบ™ Arduino.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ:

  • เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ anode เบ‚เบญเบ‡ RGB LED เบ—เปเบฒเบญเบดเบ”;
  • lit เบกเบฑเบ™, เบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบเบฑเบš cathodes;
  • เบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบงเบปเบ‡เบˆเบญเบ™ PWM;
  • เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ anode เบ‚เบญเบ‡ LED RGB เบ—เบตเบชเบญเบ‡;
  • เบˆเบนเบ”เบกเบฑเบ™...

เบ”เบต, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เปเบ™เปˆเบ™เบญเบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเบชเบงเบเบ‡เบฒเบก, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ anode เปเบฅเบฐ LED เปเบกเปˆเบ™ "เป„เบŸ" เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™. เบ”เบต, เบซเบผเบทเป€เบเบทเบญเบš. เปƒเบ™เบเปเบฅเบฐเบ™เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบ„เปˆเบฒเปƒเบ™เบชเบฒเบกเบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเบ—เบตเบชเบญเบ‡, เบ›เปˆเบฝเบ™เบžเบงเบเบกเบฑเบ™เป€เบกเบทเปˆเบญ UEV เบกเบฒเบฎเบญเบ”, เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบ›เปˆเบฝเบ™ RGB LED เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบชเบฐเบซเบผเบฑเบš LED เปเบกเปˆเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡ "เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบงเบดเบ”เบตเป‚เบญ" เบ—เบตเปˆเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™. เบ™เบตเป‰เปเบกเปˆเบ™ array เบ‡เปˆเบฒเบเบ”เบฒเบ:

uint8_t colors[8][3];

เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบชเบตเบ‚เบญเบ‡ LED เบชเบฐเป€เบžเบฒเบฐ, เบกเบฑเบ™เบˆเบฐเบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบ„เปˆเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ array เบ™เบตเป‰. เปเบฅเบฐเบ•เบปเบงเปเบ›เบˆเบฐเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ•เปเปˆเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ LED เบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง

uint8_t cnt;

Demux

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ multiplexing เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™, oddly เบžเบฝเบ‡เบžเป, CD74HC238 demultiplexer. Demultiplexer - เบŠเบดเบšเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปƒเบ™เบฎเบฒเบ”เปเบง <<. เป‚เบ”เบเบœเปˆเบฒเบ™เบชเบฒเบก pins input (bits 0, 1 เปเบฅเบฐ 2) เบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เบญเบฒเบซเบฒเบ™เบกเบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบชเบฒเบกเบšเบดเบ” X, เปเบฅเบฐเปƒเบ™เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบกเบฑเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เบˆเปเบฒเบ™เบงเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ” (1<<X). เบงเบฑเบ”เบชเบฐเบ”เบธเบ›เป‰เบญเบ™เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเบ‚เบญเบ‡เบŠเบดเบšเปเบกเปˆเบ™เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ‚เบฐเปœเบฒเบ”เบเบฒเบ™เบญเบญเบเปเบšเบšเบ—เบฑเบ‡เปเบปเบ”. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบŠเบดเบšเบ™เบตเป‰เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบซเบผเบธเบ”เบœเปˆเบญเบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ pins เบ„เบญเบšเบ„เบญเบ‡เบ‚เบญเบ‡ microcontroller เป„เบ”เป‰, เปเบ•เปˆเบเบฑเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž - เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบญเบธเบšเบฑเบ”เบ•เบดเป€เบซเบ”เป€เบ›เบตเบ”เป„เบŸ LEDs เบซเบผเบฒเบเบเปˆเบงเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปเบฅเบฐเบšเปเปˆเป„เบซเบกเป‰ MK เป„เบ”เป‰. เบŠเบดเบšเบกเบตเบฅเบฒเบ„เบฒเป€เบ›เบฑเบ™เป€เบ‡เบดเบ™ เปเบฅเบฐเบ„เบงเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เปƒเบ™เบ•เบนเป‰เบขเบฒเบขเบนเปˆเป€เบฎเบทเบญเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบชเบฐเป€เปเบต.

CD74HC238 เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเปƒเบ™เบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เปเบฎเบ‡เบ”เบฑเบ™เปƒเบซเป‰ anode เบ‚เบญเบ‡ LED เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เปƒเบ™ multiplex เป€เบ•เบฑเบกเบฎเบนเบšเปเบšเบš, เบกเบฑเบ™เบˆเบฐเบชเบฐเบซเบ™เบญเบ‡เปเบฎเบ‡เบ”เบฑเบ™เปƒเบซเป‰เบ–เบฑเบ™เบœเปˆเบฒเบ™ P-MOSFET, เปเบ•เปˆเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เป‚เบ”เบเบเบปเบ‡, เป€เบžเบฒเบฐเบงเปˆเบฒ. เบกเบฑเบ™เปเบ•เป‰เบก 20 mA, เบญเบตเบ‡เบ•เบฒเบก เบ„เบฐเปเบ™เบ™เบชเบนเบ‡เบชเบธเบ”เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡ เบขเบนเปˆเปƒเบ™เปเบœเปˆเบ™เบ‚เปเป‰เบกเบนเบ™. เบˆเบฒเบ เปเบœเปˆเบ™เบ‚เปเป‰เบกเบนเบ™ CD74HC238 เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ pinouts เปเบฅเบฐเปเบœเปˆเบ™ cheat เบ™เบตเป‰:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
H = เบฅเบฐเบ”เบฑเบšเปเบฎเบ‡เบ”เบฑเบ™เบชเบนเบ‡, L = เบฅเบฐเบ”เบฑเบšเปเบฎเบ‡เบ”เบฑเบ™เบ•เปเปˆเบฒ, X โ€“ เบšเปเปˆเบชเบปเบ™เปƒเบˆ

เบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ E2 เปเบฅเบฐ E1 เบเบฑเบšเบ”เบดเบ™, E3, A0, A1 เปเบฅเบฐ A3 เบเบฑเบš pins PD5, PC3, PC4 เปเบฅเบฐ PC5 เบ‚เบญเบ‡ STM8. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบกเบตเบ—เบฑเบ‡เบฅเบฐเบ”เบฑเบšเบ•เปเปˆเบฒ เปเบฅเบฐเบฅเบฐเบ”เบฑเบšเบชเบนเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบเบณเบ™เบปเบ”เบ„เปˆเบฒ pins เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบ›เบฑเบ™ pins push-pull.

PWM

PWM เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเบ—เบตเบชเบญเบ‡เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบกเบตเบชเบญเบ‡เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡:

เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบžเบงเบเป€เบฎเบปเบฒ เบˆเบณ เป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡ เบญเบฑเบšเป€เบ”เบ”เป€เบซเบ”เบเบฒเบ™ (UEV) เป€เบŠเบดเปˆเบ‡เบˆเบฐเป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบชเบฐเบซเบผเบฑเบš LED เบ—เบตเปˆเปƒเบŠเป‰เบงเบฝเบ. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เบšเบดเบ” เบญเบฑเบšเป€เบ”เบ” Interrupt เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™ เปƒเบ™เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบšเบญเบ

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™

#define TIM2_IER   *(volatile uint8_t *)0x005303

//enable interrupt
TIM2_IER = 1;

เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ—เบตเปˆเบชเบญเบ‡เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ›เบฐเบเบปเบ”เบเบฒเบ™ multiplexing, เป€เบŠเบฑเปˆเบ™: เบœเบต - เบเบฒเบเบฒเบเบ‚เบญเบ‡ diodes. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ›เบฒเบเบปเบ”เบเป‰เบญเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ, เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เปƒเบ™ UEV, เบชเบทเบšเบ•เปเปˆเบซเบกเบฒเบเบ•เบดเบ, เปเบฅเบฐเบ•เบปเบงเบˆเบฑเบšเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบšเปเปˆเบกเบตเป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เป„เบŸ LED เบเปˆเบญเบ™เบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบฝเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบชเปˆ pins. เป€เบžเบทเปˆเบญเบ•เป‰เบฒเบ™เบเบฒเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡ invert เบ•เบฒเบกเป€เบซเบ”เบœเบปเบ™ (0 = เบ„เบงเบฒเบกเบชเบฐเบซเบงเปˆเบฒเบ‡เบชเบนเบ‡เบชเบธเบ”, 255 = เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เป€เบ›เบฑเบ™เป„เบŸ) เปเบฅเบฐเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ„เปˆเบฒเบงเบปเบ‡เบˆเบญเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡. เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบซเบผเบฑเบ‡เบˆเบฒเบ UEV, LEDs เบญเบญเบเป„เบ›เบซเบกเบปเบ”เบชเปเบฒเบฅเบฑเบšเบงเบปเบ‡เบˆเบญเบ™ PWM.

เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡ Polarityโ€‹:

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

เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡ r, g เปเบฅเบฐ b เป€เบ›เบฑเบ™ 255 เปเบฅเบฐเบˆเบทเปˆเบˆเปเบฒเบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เบžเบงเบเบกเบฑเบ™เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™.

เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡

เป‚เบ”เบเป€เบ™เบทเป‰เบญเปเบ—เป‰เปเบฅเป‰เบงเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบžเบฒเบเปƒเบ•เป‰เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡ chip เบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ•เบปเป‰เบ™เบ•เปเปเบฅเบฐเป‚เบ—เบซเบฒเบšเบฒเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบžเบฒเบเบ™เบญเบ. เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเป‰เบญเบ™เบญเบดเบ”เบ—เบดเบžเบปเบ™เบžเบฒเบเบ™เบญเบเบซเบผเบทเบžเบฒเบเปƒเบ™, เบฅเบงเบกเบ—เบฑเบ‡เบ•เบปเบงเบˆเบฑเบšเป€เบงเบฅเบฒ.

เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เปเบฒเบญเบดเบ”เปƒเบ™ ST Visual Develop, เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบ main.c เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ—เบตเปˆเบกเบตเป„เบŸเบฅเปŒเบฅเบถเบเบฅเบฑเบš stm8_interrupt_vector.c, เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบฅเบงเบกเบขเบนเปˆเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™. เปƒเบ™เป„เบŸเบฅเปŒเบ™เบตเป‰, เบซเบ™เป‰เบฒเบ—เบตเปˆเบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เปเบ•เปˆเบฅเบฐเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡ NonHandledInterrupt. เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบœเบนเบเบกเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบšเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™.

เปเบœเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เบกเบตเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบญเบ‡ vectors เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡, เบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเบญเบฑเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™:

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8
13 TIM2 เบญเบฑเบšเป€เบ”เบ”/เบฅเบปเป‰เบ™
14 TIM2 เบˆเบฑเบš/เบชเบปเบกเบ—เบฝเบš

เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เป„เบŸ LED เบขเบนเปˆ 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;
}

เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ assembler rim - เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบŠเบญเบเบซเบฒเบกเบฑเบ™เบขเบนเปˆเปƒเบ™ เบ„เบนเปˆเบกเบทเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบก:

//enable interrupts
_asm("rim");

เบ„เปเบฒเบชเบฑเปˆเบ‡เบ›เบฐเบเบญเบšเบญเบทเปˆเบ™เปเบกเปˆเบ™ sim - เบ›เบดเบ”โ€‹เบเบฒเบ™โ€‹เบ‚เบฑเบ”โ€‹เบ‚เบงเบฒเบ‡โ€‹. เบžเบงเบเบกเบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเบ›เบดเบ”เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ„เปˆเบฒเปƒเบซเบกเปˆเบ–เบทเบเบ‚เบฝเบ™เปƒเบชเปˆ "เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบงเบดเบ”เบตเป‚เบญ", เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”เบˆเบฐเบšเปเปˆเบ—เปเบฒเบฅเบฒเบเบญเบฒเป€เบฃ.

เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ” - เปƒเบ™ GitHub.

เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ 2: SPI เปƒเบ™ STM32; PWM, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒ เปเบฅเบฐเบชเบดเปˆเบ‡เบฅเบปเบšเบเบงเบ™เบขเบนเปˆ STM8

เบ–เป‰เบฒเบขเปˆเบฒเบ‡ เปœเป‰เบญเบ เบœเบนเป‰เปƒเบ”เบœเบนเป‰ เปœเบถเปˆเบ‡ เป€เบซเบฑเบ™เบงเปˆเบฒเบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบกเบตเบ›เบฐเป‚เบซเบเบ”, เบ‚เป‰เบญเบเบšเปเปˆเป„เบ”เป‰เบ‚เบฝเบ™เบกเบฑเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”. เบ‚เป‰เบญเบเบˆเบฐเบ”เบตเปƒเบˆเบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ„เปเบฒเบ„เบดเบ”เป€เบซเบฑเบ™เปเบฅเบฐเบ‚เปเป‰เบชเบฑเบ‡เป€เบเบ”, เบ‚เป‰เบญเบเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบ•เบญเบšเบ—เบธเบเบขเปˆเบฒเบ‡.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™