рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

╨Т рдкрд╣рд┐рд▓рд╛ рднрд╛рдЧ рдореА рдЫрдВрдж рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдЕрднрд┐рдпрдВрддреНрдпрд╛рдВрдирд╛ рд╕рд╛рдВрдЧрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдЬреЗ Arduino рдкреЕрдВрдЯрдордзреВрди рдореЛрдареЗ рдЭрд╛рд▓реЗ рдЖрд╣реЗрдд рддреНрдпрд╛рдВрдиреА рдорд╛рдпрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░рд╕рд╛рдареА рдбреЗрдЯрд╛рд╢реАрдЯ рдЖрдгрд┐ рдЗрддрд░ рджрд╕реНрддрдРрд╡рдЬ рдХрд╕реЗ рдЖрдгрд┐ рдХрд╛ рд╡рд╛рдЪрд╛рд╡реЗрдд. рдордЬрдХреВрд░ рдореЛрдард╛ рд╣реЛрддрд╛, рдореНрд╣рдгреВрди рдореА рд╡реЗрдЧрд│реНрдпрд╛ рд▓реЗрдЦрд╛рдд рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдгреЗ рджрд░реНрд╢рд╡рд┐рдгреНрдпрд╛рдЪреЗ рд╡рдЪрди рджрд┐рд▓реЗ. рдмрд░рдВ, рддреЛ рд╕реНрд╡рддрдГрд▓рд╛ рджреВрдз рдорд╢рд░реВрдо рдореНрд╣рдгрддреЛ...

рдЖрдЬ рдореА рддреБрдореНрд╣рд╛рд▓рд╛ STM32 (рдмреНрд▓реВ рдкрд┐рд▓) рдЖрдгрд┐ STM8 рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕рд╡рд░реАрд▓ рдЕрдиреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕, рдЯрд╛рд╕реНрдХрд╕рд╛рдареА рдЕрдЧрджреА рд╕реЛрдкреНрдпрд╛, рдкрдг рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбреЗрдЯрд╛рд╢реАрдЯ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рддреЗ рджрд╛рдЦрд╡рдгрд╛рд░ рдЖрд╣реЗ. рд╕рд░реНрд╡ рдбреЗрдореЛ рдкреНрд░рдХрд▓реНрдк рдорд╛рдЭреНрдпрд╛ рдЖрд╡рдбрддреНрдпрд╛ LEDs рд▓рд╛ рд╕рдорд░реНрдкрд┐рдд рдЖрд╣реЗрдд, рдЖрдореНрд╣реА рддреНрдпрд╛рдВрдирд╛ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдкреНрд░рдХрд╛рд╢ рджреЗрдК, рдЬреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрд╡ рдкреНрд░рдХрд╛рд░рдЪреЗ рдордиреЛрд░рдВрдЬрдХ рдкрд░рд┐рдзреА рд╡рд╛рдкрд░рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓.

рдордЬрдХреВрд░ рдкреБрдиреНрд╣рд╛ рдореЛрдард╛ рдЭрд╛рд▓рд╛, рдореНрд╣рдгреВрди рд╕реЛрдпреАрд╕рд╛рдареА рдореА рд╕рд╛рдордЧреНрд░реА рдмрдирд╡рдд рдЖрд╣реЗ:

STM32 рдмреНрд▓реВ рдкрд┐рд▓: DM16 рдбреНрд░рд╛рдпрд╡реНрд╣рд░рд╕рд╣ 634 LEDs
STM8: рд╕рд╣рд╛ PWM рдкрд┐рди рд╕реЗрдЯ рдХрд░рдгреЗ
STM8: рддреАрди рдкрд┐рдирд╡рд░ 8 RGB LEDs, рд╡реНрдпрддреНрдпрдп

рдЕрд╕реНрд╡реАрдХрд░рдг: рдореА рдЕрднрд┐рдпрдВрддрд╛ рдирд╛рд╣реА, рдореА рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕рдордзреНрдпреЗ рд╕рдЦреЛрд▓ рдЬреНрдЮрд╛рди рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рднрд╛рд╕рд╡рдд рдирд╛рд╣реА, рд▓реЗрдЦ рдорд╛рдЭреНрдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рд╣реМрд╢реАрдВрд╕рд╛рдареА рдЖрд╣реЗ. рдЦрд░рдВ рддрд░, рдореА рджреЛрди рд╡рд░реНрд╖рд╛рдВрдкреВрд░реНрд╡реА рд╕реНрд╡рддрдГрд▓рд╛ рд▓рдХреНрд╖реНрдп рдкреНрд░реЗрдХреНрд╖рдХ рдорд╛рдирдд рд╣реЛрддреЛ. рдЕрдиреЛрд│рдЦреА рдЪрд┐рдкрд╡рд░реАрд▓ рдбреЗрдЯрд╛рд╢реАрдЯреНрд╕ рд╡рд╛рдЪрд╛рдпрд▓рд╛ рдШрд╛рдмрд░рдд рдирд╛рд╣реАрдд, рдЕрд╕реЗ рдХреЛрдгреА рдорд▓рд╛ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рдЕрд╕рддреЗ, рддрд░ рдореА рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░ рдХреЛрдбрдЪреЗ рдХрд╛рд╣реА рддреБрдХрдбреЗ рд╢реЛрдзрдгреНрдпрд╛рдд рдЖрдгрд┐ рдХрд╛рддреНрд░реА рдЖрдгрд┐ рдЪрд┐рдХрдЯ рдЯреЗрдкрдиреЗ рдХреНрд░реЕрдЪ рд╢реЛрдзрдгреНрдпрд╛рдд рдЬрд╛рд╕реНрдд рд╡реЗрд│ рдШрд╛рд▓рд╡рд▓рд╛ рдирд╕рддрд╛.

рдпрд╛ рд▓реЗрдЦрд╛рдЪрд╛ рдлреЛрдХрд╕ рдбреЗрдЯрд╛рд╢реАрдЯрд╡рд░ рдЖрд╣реЗ, рдкреНрд░рдХрд▓реНрдкрд╛рдВрд╡рд░ рдирд╛рд╣реА, рддреНрдпрд╛рдореБрд│реЗ рдХреЛрдб рдлрд╛рд░рд╕рд╛ рдиреАрдЯрдиреЗрдЯрдХрд╛ рдЖрдгрд┐ рдЕрдиреЗрдХрджрд╛ рдЕрд░реБрдВрдж рдирд╕реВ рд╢рдХрддреЛ. рдирд╡реАрди рдЪрд┐рдкрд╕рд╣ рдкреНрд░рдердо рдУрд│рдЦреАрд╕рд╛рдареА рдпреЛрдЧреНрдп рдЕрд╕рд▓реЗ рддрд░реАрд╣реА рдкреНрд░рдХрд▓реНрдк рд╕реНрд╡рддрдГрдЪ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗрдд.

рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рдорд╛рдЭрд╛ рд▓реЗрдЦ рдПрдЦрд╛рджреНрдпрд╛ рдЫрдВрджрд╛рдд рдмреБрдбрдгреНрдпрд╛рдЪреНрдпрд╛ рд╕рдорд╛рди рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рдорджрдд рдХрд░реЗрд▓.

рдПрд╕рдЯреАрдПрдо 32

DM16 рдЖрдгрд┐ SPI рд╕рд╣ 634 LEDs

рдмреНрд▓реВ рдкрд┐рд▓ (STM32F103C8T6) рдЖрдгрд┐ DM634 LED рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рд╡рд╛рдкрд░рдгрд╛рд░рд╛ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░рдХрд▓реНрдк. рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдкрд░реВрди, рдЖрдореНрд╣реА рдбреНрд░рд╛рдпрд╡реНрд╣рд░, STM IO рдкреЛрд░реНрдЯреНрд╕ рд╢реЛрдзреВ рдЖрдгрд┐ SPI рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВ.

DM634

16 16-рдмрд┐рдЯ PWM рдЖрдЙрдЯрдкреБрдЯрд╕рд╣ рддреИрд╡рд╛рдиреА рдЪрд┐рдк, рд╕рд╛рдЦрд│реАрдиреЗ рдЬреЛрдбрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ. рд▓реЛ-рдПрдВрдб 12-рдмрд┐рдЯ рдореЙрдбреЗрд▓ рдШрд░рдЧреБрддреА рдкреНрд░рдХрд▓реНрдкрд╛рддреВрди рдУрд│рдЦрд▓реЗ рдЬрд╛рддреЗ рд▓рд╛рдЗрдЯрдкреЕрдХ. рдПрдХрд╛ рд╡реЗрд│реА, DM63x рдЖрдгрд┐ рд╕реБрдкреНрд░рд╕рд┐рджреНрдз TLC5940 рджрд░рдореНрдпрд╛рди рдирд┐рд╡рдбрддрд╛рдирд╛, рдореА рдЕрдиреЗрдХ рдХрд╛рд░рдгрд╛рдВрд╕рд╛рдареА DM рдирд┐рд╡рдбрд▓реЗ: 1) Aliexpress рд╡рд░ TLC рдирд┐рд╢реНрдЪрд┐рддрдкрдгреЗ рдмрдирд╛рд╡рдЯ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╣реЗ рдирд╛рд╣реА; 2) DM рдХрдбреЗ рд╕реНрд╡рддрдГрдЪреЗ рд╡рд╛рд░рдВрд╡рд╛рд░рддрд╛ рдЬрдирд░реЗрдЯрд░ рдЕрд╕рд▓реЗрд▓реЗ рд╕реНрд╡рд╛рдпрддреНрдд PWM рдЖрд╣реЗ; 3) рдЕрд▓реАрдХрдбреВрди рдкрд╛рд░реНрд╕рд▓рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдгреНрдпрд╛рдРрд╡рдЬреА рддреЗ рдореЙрд╕реНрдХреЛрдордзреНрдпреЗ рд╕реНрд╡рд╕реНрддрд╛рдд рдЦрд░реЗрджреА рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдЖрдгрд┐, рдЕрд░реНрдерд╛рддрдЪ, рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реА рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░рдгреНрдпрд╛рдРрд╡рдЬреА рд╕реНрд╡рддрдГ рдЪрд┐рдк рдХрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рд╛рд╡реЗ рд╣реЗ рд╢рд┐рдХрдгреЗ рдордиреЛрд░рдВрдЬрдХ рд╣реЛрддреЗ. рдЪрд┐рдкреНрд╕ рдЖрддрд╛ рдкреНрд░рд╛рдореБрдЦреНрдпрд╛рдиреЗ SSOP24 рдкреЕрдХреЗрдЬрдордзреНрдпреЗ рд╕рд╛рджрд░ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд; рддреЗ рдЕрдбреЕрдкреНрдЯрд░рд╡рд░ рд╕реЛрд▓реНрдбрд░ рдХрд░рдгреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ.

рдирд┐рд░реНрдорд╛рддрд╛ рддреИрд╡рд╛рдиреА рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдорд╛рд╣рд┐рддреА рдкрддреНрд░рдХ рдЪрд┐рдк рдЪрд┐рдиреА рдЗрдВрдЧреНрд░рдЬреАрдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реА рдЖрд╣реЗ, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдордЬрд╛ рдпреЗрдИрд▓. рдкреНрд░рдердо рдЖрдкрдг рдкрд┐рдирдЖрдЙрдЯ рдкрд╛рд╣рддреЛ (рдкрд┐рди рдХрдиреЗрдХреНрд╢рди) рдХреЛрдгрддрд╛ рдкрд╛рдп рдХрд╢рд╛рд╢реА рдЬреЛрдбрд╛рдпрдЪрд╛ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдкрд┐рдирдЪреЗ рд╡рд░реНрдгрди (рдкрд┐рди рд╡рд░реНрдгрди). 16 рдкрд┐рди:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдбреАрд╕реА рд╕рд┐рдВрдХ рд╕реНрд░реЛрдд (рдУрдкрди рдбреНрд░реЗрди)

рдмреБрдбрдгреЗ / рдУрдкрди-рдбреНрд░реЗрди рдЖрдЙрдЯрдкреБрдЯ - рдирд┐рдЪрд░рд╛; рдкреНрд░рд╡рд╛рд╣реА рдкреНрд░рд╡рд╛рд╣рд╛рдЪрд╛ рд╕реНрддреНрд░реЛрдд; рдЖрдЙрдЯрдкреБрдЯ рд╕рдХреНрд░рд┐рдп рд╕реНрдерд┐рддреАрдд рдЬрдорд┐рдиреАрд╢реА рдЬреЛрдбрд▓реЗрд▓реЗ рдЖрд╣реЗ - рдПрд▓рдИрдбреА рдХреЕрдереЛрдбреНрд╕рджреНрд╡рд╛рд░реЗ рдбреНрд░рд╛рдпрд╡реНрд╣рд░рд╢реА рдЬреЛрдбрд▓реЗрд▓реЗ рдЖрд╣реЗрдд. рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХрд▓реА, рд╣реЗ рдЕрд░реНрдерд╛рддрдЪ "рдУрдкрди рдбреНрд░реЗрди" рдирд╛рд╣реА (рдЙрдШрдбрд╛ рдирд╛рд▓рд╛), рдкрд░рдВрддреБ рдбреЗрдЯрд╛рд╢реАрдЯрдордзреНрдпреЗ рдбреНрд░реЗрди рдореЛрдбрдордзреАрд▓ рдкрд┐рдирд╕рд╛рдареА рд╣реЗ рдкрджрдирд╛рдо рдЕрдиреЗрдХрджрд╛ рдЖрдврд│рддреЗ.

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдЖрдЙрдЯрдкреБрдЯ рдЪрд╛рд▓реВ рдореВрд▓реНрдп рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА REXT рдЖрдгрд┐ GND рдордзреАрд▓ рдмрд╛рд╣реНрдп рдкреНрд░рддрд┐рд░реЛрдзрдХ

REXT рдкрд┐рди рдЖрдгрд┐ рдЧреНрд░рд╛рдЙрдВрдб рджрд░рдореНрдпрд╛рди рдПрдХ рд╕рдВрджрд░реНрдн рдкреНрд░рддрд┐рд░реЛрдзрдХ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ рдЖрдЙрдЯрдкреБрдЯрдЪреНрдпрд╛ рдЕрдВрддрд░реНрдЧрдд рдкреНрд░рддрд┐рдХрд╛рд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЛ, рдбреЗрдЯрд╛рд╢реАрдЯрдЪреНрдпрд╛ рдкреГрд╖реНрда 9 рд╡рд░реАрд▓ рдЖрд▓реЗрдЦ рдкрд╣рд╛. DM634 рдордзреНрдпреЗ, рд╣рд╛ рдкреНрд░рддрд┐рдХрд╛рд░ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░рджреНрд╡рд╛рд░реЗ рджреЗрдЦреАрд▓ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ, рд╕рдВрдкреВрд░реНрдг рдмреНрд░рд╛рдЗрдЯрдиреЗрд╕ (рдЬрд╛рдЧрддрд┐рдХ рдЪрдордХ); рдореА рдпрд╛ рд▓реЗрдЦрд╛рддреАрд▓ рддрдкрд╢реАрд▓рд╛рдд рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реА, рдореА рдпреЗрдереЗ рдлрдХреНрдд 2.2 - 3 kOhm рд░реЗрдЭрд┐рд╕реНрдЯрд░ рдареЗрд╡рддреЛ.

рдЪрд┐рдк рдХрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рд╛рд╡реЗ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА, рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рдЗрдВрдЯрд░рдлреЗрд╕рдЪреЗ рд╡рд░реНрдгрди рдкрд╛рд╣реВрдпрд╛:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

рд╣реЛрдп, рдпреЗрдереЗ рдЖрд╣реЗ, рд╕рд░реНрд╡ рд╡реИрднрд╡рд╛рдд рдЪреАрдиреА рдЗрдВрдЧреНрд░рдЬреА. рд╣реЗ рднрд╛рд╖рд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ рд╕рдорд╕реНрдпрд╛рдкреНрд░рдзрд╛рди рдЖрд╣реЗ, рддреБрдордЪреА рдЗрдЪреНрдЫрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕ рддреБрдореНрд╣реА рддреЗ рд╕рдордЬреВ рд╢рдХрддрд╛, рдкрд░рдВрддреБ рдЖрдгрдЦреА рдПрдХ рдорд╛рд░реНрдЧ рдЖрд╣реЗ - рдХрд╛рд░реНрдпрд╛рддреНрдордХрдкрдгреЗ рд╕рдорд╛рди TLC5940 рдЪреЗ рдХрдиреЗрдХреНрд╢рди рдбреЗрдЯрд╛рд╢реАрдЯрдордзреНрдпреЗ рдХрд╕реЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ рддреЗ рдкрд╣рд╛:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
... рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рдордзреНрдпреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдлрдХреНрдд рддреАрди рдкрд┐рди рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд. SCLK рд╕рд┐рдЧреНрдирд▓рдЪрд╛ рд╡рд╛рдврддрд╛ рдХрд┐рдирд╛рд░рд╛ рдбреЗрдЯрд╛ SIN рдкрд┐рдирдордзреВрди рдЕрдВрддрд░реНрдЧрдд рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рд╣рд▓рд╡рддреЛ. рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рд▓реЛрдб рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдПрдХ рд▓рд╣рд╛рди рдЙрдЪреНрдЪ XLAT рд╕рд┐рдЧреНрдирд▓ рдЕрдВрддрд░реНрдЧрдд рдиреЛрдВрджрдгреАрдВрдордзреНрдпреЗ рдЕрдиреБрдХреНрд░рдореЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗрд▓рд╛ рдбреЗрдЯрд╛ рд▓реЕрдЪ рдХрд░рддреЛ. рдЕрдВрддрд░реНрдЧрдд рд░рдЬрд┐рд╕реНтАНрдЯрд░ рд╣реЗ XLAT рд╕рд┐рдЧреНрдирд▓ рд╕реНтАНрддрд░рд╛рдиреЗ рдЯреНрд░рд┐рдЧрд░ рдХреЗрд▓реЗрд▓реЗ рдЧреЗрдЯ рдЖрд╣реЗрдд. рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рд╕рд░реНрд╡рд╛рдд рд▓рдХреНрд╖рдгреАрдп рдмрд┐рдЯ рдкреНрд░рдердо рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

рдХрдбреА - рдХреБрдВрдбреА/рд▓реЕрдЪ/рд▓реЙрдХ.
рд╡рд╛рдврддреА рдзрд╛рд░ - рдирд╛рдбреАрдЪреА рдЕрдЧреНрд░рдЧрдгреНрдп рдзрд╛рд░
рдкреНрд░рдердо MSB - рд╕рд░реНрд╡рд╛рдд рд▓рдХреНрд╖рдгреАрдп (рдбрд╛рд╡реАрдХрдбреЗ) рдереЛрдбрд╛ рдкреБрдвреЗ.
рдбреЗрдЯрд╛ рдШрдбреНрдпрд╛рд│ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА - рдбреЗрдЯрд╛ рдХреНрд░рдорд╢рдГ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рд╛ (рдереЛрдбреЗ-рдереЛрдбреЗ).

рд╢рдмреНрдж рдХреБрдВрдбреА рдЪрд┐рдкреНрд╕рдЪреНрдпрд╛ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрд╛рдд рдЕрдиреЗрдХрджрд╛ рдЖрдврд│рддреЗ рдЖрдгрд┐ рд╡рд┐рд╡рд┐рдз рдорд╛рд░реНрдЧрд╛рдВрдиреА рднрд╛рд╖рд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рдореНрд╣рдгреВрди рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдореА рд╕реНрд╡рдд: рд▓рд╛ рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ

рдПрдХ рд▓рд╣рд╛рди рд╢реИрдХреНрд╖рдгрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдоLED рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рд╣реЗ рдореВрд▓рдд: рд╢рд┐рдлреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрд╣реЗ. "рд╢рд┐рдлреНрдЯ" (рд╢рд┐рдлреНрдЯ) рдирд╛рд╡рд╛рдд - рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рдЪреНрдпрд╛ рдЖрдд рдбреЗрдЯрд╛рдЪреА рдмрд┐рдЯрд╡рд╛рдЗрдЬ рд╣рд╛рд▓рдЪрд╛рд▓: рдЖрдд рд╣рд▓рд╡рд▓реЗрд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдирд╡реАрди рдмрд┐рдЯ рд╕рдВрдкреВрд░реНрдг рд╕рд╛рдЦрд│реА рддреНрдпрд╛рдЪреНрдпрд╛ рд╕рдореЛрд░ рдкреБрдвреЗ рдврдХрд▓рддреЛ. рд╢рд┐рдлреНрдЯ рджрд░рдореНрдпрд╛рди рдХреЛрдгреАрд╣реА LEDs рдЪреНрдпрд╛ рдЧреЛрдВрдзрд│рд▓реЗрд▓реНрдпрд╛ рдмреНрд▓рд┐рдВрдХрд┐рдВрдЧрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ, рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдбрдБрдкрд░рджреНрд╡рд╛рд░реЗ рдХрд╛рд░реНрдпрд░рдд рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕рдкрд╛рд╕реВрди рд╡рд┐рднрдХреНрдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдмрдлрд░ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рд╣реЛрддреЗ (рдХреБрдВрдбреА) рд╣реА рдПрдХ рдкреНрд░рдХрд╛рд░рдЪреА рд╡реЗрдЯрд┐рдВрдЧ рд░реВрдо рдЖрд╣реЗ рдЬрд┐рдереЗ рдмрд┐рдЯреНрд╕ рдЗрдЪреНрдЫрд┐рдд рдХреНрд░рдорд╛рдиреЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдЬреЗрд╡реНрд╣рд╛ рд╕рд░реНрд╡ рдХрд╛рд╣реА рддрдпрд╛рд░ рд╣реЛрддреЗ, рддреЗрд╡реНрд╣рд╛ рд╢рдЯрд░ рдЙрдШрдбрддреЗ рдЖрдгрд┐ рдорд╛рдЧреАрд▓ рдмреЕрдЪрдЪреНрдпрд╛ рдЬрд╛рдЧреА рдмрд┐рдЯреНрд╕ рдХрд╛рдорд╛рд╡рд░ рдЬрд╛рддрд╛рдд. рд╢рдмреНрдж рдХреБрдВрдбреА рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрдХрд┐рдЯреНрд╕рдЪреНрдпрд╛ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрд╛рдд рдЬрд╡рд│рдЬрд╡рд│ рдиреЗрд╣рдореАрдЪ рдЕрд╢рд╛ рдбрдБрдкрд░рдЪрд╛ рдЕрд░реНрде рд╣реЛрддреЛ, рддреЗ рдХреЛрдгрддреНрдпрд╛ рд╕рдВрдпреЛрдЬрдирд╛рдд рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ рд╣реЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдирд╛рд╣реА.

рддрд░, DM634 рд╡рд░ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рдХреЗрд▓реЗ рдЬрд╛рддреЗ: DAI рдЗрдирдкреБрдЯрд▓рд╛ рджреВрд░рдЪреНрдпрд╛ LED рдЪреНрдпрд╛ рд╕рд░реНрд╡рд╛рдд рд▓рдХреНрд╖рдгреАрдп рдмрд┐рдЯрдЪреНрдпрд╛ рдореВрд▓реНрдпрд╛рд╡рд░ рд╕реЗрдЯ рдХрд░рд╛, DCK рд╡рд░ рдЖрдгрд┐ рдЦрд╛рд▓реА рдЦреЗрдЪрд╛; DAI рдЗрдирдкреБрдЯрд▓рд╛ рдкреБрдвреАрд▓ рдмрд┐рдЯрдЪреНрдпрд╛ рдореВрд▓реНрдпрд╛рд╡рд░ рд╕реЗрдЯ рдХрд░рд╛, DCK рдЦреЗрдЪрд╛; рдЖрдгрд┐ рд╕рд░реНрд╡ рдмрд┐рдЯ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрдИрдкрд░реНрдпрдВрдд (рдШрдбреНрдпрд╛рд│рд╛рдд), рдЬреНрдпрд╛рдирдВрддрд░ рдЖрдореНрд╣реА LAT рдЦреЗрдЪрддреЛ. рд╣реЗ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдХрд░рддрд╛ рдпреЗрддреЗ (рдмрд┐рдЯ-рдмрдБрдЧ), рдкрд░рдВрддреБ рдпрд╛рд╕рд╛рдареА рдЦрд╛рд╕ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓рд╛ SPI рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд╛рдкрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ, рдХрд╛рд░рдг рддреЗ рдЖрдордЪреНрдпрд╛ STM32 рд╡рд░ рджреЛрди рдкреНрд░рддреАрдВрдордзреНрдпреЗ рд╕рд╛рджрд░ рдХреЗрд▓реЗ рдЖрд╣реЗ.

рдмреНрд▓реВ рдкрд┐рд▓ STM32F103

рдкреНрд░рд╛рд╕реНрддрд╛рд╡рд┐рдХ: STM32 рдирд┐рдпрдВрддреНрд░рдХ Atmega328 рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдХреНрд▓рд┐рд╖реНрдЯ рдЖрд╣реЗрдд рдкреЗрдХреНрд╖рд╛ рддреЗ рдХрджрд╛рдЪрд┐рдд рднрд┐рддреАрджрд╛рдпрдХ рд╡рд╛рдЯрддреАрд▓. рд╢рд┐рд╡рд╛рдп, рдКрд░реНрдЬрд╛ рдмрдЪрддреАрдЪреНрдпрд╛ рдХрд╛рд░рдгрд╛рд╕реНрддрд╡, рдЬрд╡рд│рдЬрд╡рд│ рд╕рд░реНрд╡ рдкрд░рд┐рдзреАрдп рдкреНрд░рд╛рд░рдВрднреА рдмрдВрдж рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдШрдбреНрдпрд╛рд│рд╛рдЪреА рд╡рд╛рд░рдВрд╡рд╛рд░рддрд╛ рдЕрдВрддрд░реНрдЧрдд рд╕реНрддреНрд░реЛрддрд╛рдкрд╛рд╕реВрди 8 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЭ рдЖрд╣реЗ. рд╕реБрджреИрд╡рд╛рдиреЗ, рдПрд╕рдЯреАрдПрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рдиреА рдХреЛрдб рд▓рд┐рд╣рд┐рд▓рд╛ рдЬреЛ рдЪрд┐рдк рд▓рд╛ тАЬрдЧрдгрд┐рддтАЭ 72 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЭ рдкрд░реНрдпрдВрдд рдЖрдгрддреЛ рдЖрдгрд┐ рдорд▓рд╛ рдорд╛рд╣рд┐рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ IDE рдЪреНрдпрд╛ рд▓реЗрдЦрдХрд╛рдВрдиреА рд╕реБрд░реБрд╡рд╛рддреАрдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рддреНрдпрд╛рдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдХреЗрд▓рд╛ рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдЖрдореНрд╣рд╛рд▓рд╛ рдШрдбреНрдпрд╛рд│ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА (рдкрд░рдВрддреБ рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд░реЛрдЦрд░ рд╣рд╡реЗ рдЕрд╕рд▓реНрдпрд╛рд╕ рддреБрдореНрд╣реА рдХрд░реВ рд╢рдХрддрд╛). рдкрд░рдВрддреБ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреЗрд░рд┐рдлреЗрд░рд▓реНрд╕ рдЪрд╛рд▓реВ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓.

рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг: рдмреНрд▓реВ рдкрд┐рд▓ рд▓реЛрдХрдкреНрд░рд┐рдп STM32F103C8T6 рдЪрд┐рдкрд╕рд╣ рд╕реБрд╕рдЬреНрдЬ рдЖрд╣реЗ, рддреНрдпрд╛рд╕рд╛рдареА рджреЛрди рдЙрдкрдпреБрдХреНрдд рдХрд╛рдЧрджрдкрддреНрд░реЗ рдЖрд╣реЗрдд:

рдбреЗрдЯрд╛рд╢реАрдЯрдордзреНрдпреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕реВ рд╢рдХрддреЗ:

  • рдкрд┐рдирдЖрдЙрдЯреНрд╕ тАУ рдЪрд┐рдк рдкрд┐рдирдЖрдЙрдЯреНрд╕ тАУ рдЬрд░ рдЖрдореНрд╣реА рдмреЛрд░реНрдб рд╕реНрд╡рддрдГ рдмрдирд╡рд╛рдпрдЪреЗ рдард░рд╡рд▓реЗ рддрд░;
  • рдореЗрдорд░реА рдореЕрдк - рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд┐рдкрд╕рд╛рдареА рдореЗрдорд░реА рдореЕрдк. рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрд┐рдХрд╛рдордзреНрдпреЗ рд╕рдВрдкреВрд░реНрдг рдУрд│реАрдЪрд╛ рдирдХрд╛рд╢рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдд рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдирд╕рд▓реЗрд▓реНрдпрд╛ рдиреЛрдВрджрдгреАрдВрдЪрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЖрд╣реЗ.
  • рдкрд┐рди рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕рд╛рд░рдгреА тАУ рдкрд┐рдирдЪреА рдореБрдЦреНрдп рдЖрдгрд┐ рдкрд░реНрдпрд╛рдпреА рдХрд╛рд░реНрдпреЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдгреЗ; "рдмреНрд▓реВ рдкрд┐рд▓" рд╕рд╛рдареА рдЖрдкрдг рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░ рдкрд┐рди рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реВрдЪреАрд╕рд╣ рдЕрдзрд┐рдХ рд╕реЛрдпреАрд╕реНрдХрд░ рдЪрд┐рддреНрд░реЗ рд╢реЛрдзреВ рд╢рдХрддрд╛. рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА рддрд╛рдмрдбрддреЛрдм рдмреНрд▓реВ рдкрд┐рд▓ рдкрд┐рдирдЖрдЙрдЯ рдЧреБрдЧрд▓ рдХрд░рддреЛ рдЖрдгрд┐ рд╣реЗ рдЪрд┐рддреНрд░ рд╣рд╛рддрд╛рдд рдареЗрд╡рддреЛ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
NB: рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░реАрд▓ рдЪрд┐рддреНрд░рд╛рдд рдПрдХ рддреНрд░реБрдЯреА рдЖрд▓реА, рдЬреА рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рдиреЛрдВрджрд╡рд▓реА рдЧреЗрд▓реА, рддреНрдпрд╛рдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж. рдЪрд┐рддреНрд░ рдмрджрд▓рд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╣рд╛ рдПрдХ рдзрдбрд╛ рдЖрд╣реЗ - рдбреЗрдЯрд╛рд╢реАрдЯрдордзреВрди рдорд╛рд╣рд┐рддреА рддрдкрд╛рд╕рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ.

рдЖрдореНрд╣реА рдбреЗрдЯрд╛рд╢реАрдЯ рдХрд╛рдвреВрди рдЯрд╛рдХрддреЛ, рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрд┐рдХрд╛ рдЙрдШрдбрддреЛ рдЖрдгрд┐ рдЖрддрд╛рдкрд╛рд╕реВрди рдЖрдореНрд╣реА рддреЗрдЪ рд╡рд╛рдкрд░рддреЛ.
рдкреНрд░рдХреНрд░рд┐рдпрд╛: рдЖрдореНрд╣реА рдорд╛рдирдХ рдЗрдирдкреБрдЯ/рдЖрдЙрдЯрдкреБрдЯ рд╣рд╛рддрд╛рд│рддреЛ, SPI рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рддреЛ, рдЖрд╡рд╢реНрдпрдХ рдкреЗрд░рд┐рдлреЗрд░рд▓реНрд╕ рдЪрд╛рд▓реВ рдХрд░рддреЛ.

рдЗрдирдкреБрдЯ рдЖрдЙрдЯрдкреБрдЯ

Atmega328 рд╡рд░, I/O рдЕрддреНрдпрдВрдд рд╕реЛрдкреНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рдореНрд╣рдгреВрдирдЪ STM32 рдкрд░реНрдпрд╛рдпрд╛рдВрдЪреА рд╡рд┐рдкреБрд▓рддрд╛ рдЧреЛрдВрдзрд│рд╛рдд рдЯрд╛рдХрдгрд╛рд░реА рдЕрд╕реВ рд╢рдХрддреЗ. рдЖрддрд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдлрдХреНрдд рдирд┐рд╖реНрдХрд░реНрд╖рд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдпрд╛рдХрдбреЗ рдЪрд╛рд░ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдУрдкрди рдбреНрд░реЗрди, рдкреБрд╢-рдкреБрд▓, рдкрд░реНрдпрд╛рдпреА рдкреБрд╢-рдкреБрд▓, рдкрд░реНрдпрд╛рдпреА рдУрдкрди рдбреНрд░реЗрди

"рдУрдврд╛ рдврдХрд▓рд╛" (рдврдХрд▓рд╛ рдУрдврд╛) рд╣реЗ Arduino рдЪреЗ рдиреЗрд╣рдореАрдЪреЗ рдЖрдЙрдЯрдкреБрдЯ рдЖрд╣реЗ, рдкрд┐рди рдЙрдЪреНрдЪ рдХрд┐рдВрд╡рд╛ рдХрдореА рдореВрд▓реНрдп рдШреЗрдК рд╢рдХрддреЗ. рдкрдг "рдУрдкрди рдбреНрд░реЗрди" рд╕рд╣ рдЖрд╣реЗрдд рдЕрдбрдЪрдгреА, рдЬрд░реА рдпреЗрдереЗ рд╕рд░реНрд╡ рдХрд╛рд╣реА рд╕реЛрдкреЗ рдЖрд╣реЗ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдЖрдЙрдЯрдкреБрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди / рдЬреЗрд╡реНрд╣рд╛ рдкреЛрд░реНрдЯ рдЖрдЙрдЯрдкреБрдЯрд▓рд╛ рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ: / рдЖрдЙрдЯрдкреБрдЯ рдмрдлрд░ рд╕рдХреНрд╖рдо: / тАУ рдУрдкрди рдбреНрд░реЗрди рдореЛрдб: рдЖрдЙрдЯрдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреАрд▓ тАЬ0тАЭ N-MOS рд╕рдХреНрд╖рдо рдХрд░рддреЗ, рдЖрдЙрдЯрдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреАрд▓ тАЬ1тАЭ рдкреЛрд░реНрдЯрд▓рд╛ рд╣рд╛рдп-Z рдореЛрдбрдордзреНрдпреЗ рд╕реЛрдбрддреЗ ( P-MOS рд╕рдХреНрд░рд┐рдп рдХреЗрд▓реЗрд▓реЗ рдирд╛рд╣реА ) / тАУ рдкреБрд╢-рдкреБрд▓ рдореЛрдб: рдЖрдЙрдЯрдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреАрд▓ тАЬ0тАЭ N-MOS рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ, рдЖрдЙрдЯрдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреАрд▓ тАЬ1тАЭ P-MOS рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ.

рдУрдкрди рдбреНрд░реЗрдирдордзреАрд▓ рд╕рд░реНрд╡ рдлрд░рдХ (рдЙрдШрдбрд╛ рдирд╛рд▓рд╛) "рдкреБрд╢-рдкреБрд▓" рд╡рд░реВрди (рдврдХрд▓рд╛ рдУрдврд╛) рдореНрд╣рдгрдЬреЗ рдкрд╣рд┐рд▓реНрдпрд╛ рдкрд┐рдирдордзреНрдпреЗ рдЙрдЪреНрдЪ рд╕реНрдерд┐рддреА рд╕реНрд╡реАрдХрд╛рд░рддрд╛ рдпреЗрдд рдирд╛рд╣реА: рдЖрдЙрдЯрдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░рд╡рд░ рдПрдХ рд▓рд┐рд╣рд┐рддрд╛рдирд╛, рддреЗ рдЙрдЪреНрдЪ рдкреНрд░рддрд┐рдХрд╛рд░ рдореЛрдбрдордзреНрдпреЗ рдЬрд╛рддреЗ (рдЙрдЪреНрдЪ рдкреНрд░рддрд┐рдмрд╛рдзрд╛, рд╣рд╛рдп-рдЭреЗрдб). рд╢реВрдиреНрдп рд▓рд┐рд╣рд┐рддрд╛рдирд╛, рдкрд┐рди рддрд╛рд░реНрдХрд┐рдХ рдЖрдгрд┐ рд╡рд┐рджреНрдпреБрддреАрдп рджреЛрдиреНрд╣реА рдореЛрдбрдордзреНрдпреЗ рд╕рд╛рд░рдЦреЗрдЪ рд╡рд╛рдЧрддреЗ.

рд╕рд╛рдорд╛рдиреНрдп рдЖрдЙрдЯрдкреБрдЯ рдореЛрдбрдордзреНрдпреЗ, рдкрд┐рди рдлрдХреНрдд рдЖрдЙрдЯрдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреАрд▓ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЛ. "рдкрд░реНрдпрд╛рдпреА" рдордзреНрдпреЗ рддреЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рдзреАрдВрджреНрд╡рд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ (рдкрд╣рд╛ 9.1.4):

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдкреЛрд░реНрдЯ рдмрд┐рдЯ рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрдВрдХреНрд╢рди рдкрд┐рди рдореНрд╣рдгреВрди рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рдкрд┐рди рд░рдЬрд┐рд╕реНрдЯрд░ рдЕрдХреНрд╖рдо рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдкрд┐рди рдкреЗрд░рд┐рдлреЗрд░рд▓ рдкрд┐рдирд╢реА рдЬреЛрдбрд▓реЗрд▓реЗ рдЕрд╕рддреЗ.

рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдирдЪреНрдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ рдкрд┐рди рд╡реНрдпрд╛рдЦреНрдпрд╛ рдбреЗрдЯрд╛рд╢реАрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдореЗрд╡рд░ рдЖрд╣реЗ. рдкрд┐рдирдордзреНрдпреЗ рдЕрдиреЗрдХ рдкрд░реНрдпрд╛рдпреА рдХрд╛рд░реНрдпреЗ рдЕрд╕рд▓реНрдпрд╛рд╕ рдХрд╛рдп рдХрд░рд╛рд╡реЗ рдпрд╛ рдкреНрд░рд╢реНрдирд╛рдЪреЗ рдЙрддреНрддрд░ рдбреЗрдЯрд╛рд╢реАрдЯрдордзреАрд▓ рддрд│рдЯреАрдкрджреНрд╡рд╛рд░реЗ рджрд┐рд▓реЗ рдЬрд╛рддреЗ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдкреЗрд░рд┐рдлреЗрд░рд▓ рд╕рдорд╛рди рдкрд┐рди рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдкрд░реНрдпрд╛рдпреА рдлрдВрдХреНрд╢рдиреНрд╕рдордзреАрд▓ рд╕рдВрдШрд░реНрд╖ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА, рдПрдХрд╛ рд╡реЗрд│реА рдлрдХреНрдд рдПрдХ рдкреЗрд░рд┐рдлреЗрд░рд▓ рд╡рд╛рдкрд░рд╛рд╡реЗ, рдкрд░рд┐рдзреАрдп рдШрдбреНрдпрд╛рд│ рд╕рдХреНрд╖рдо рдмрд┐рдЯ рд╡рд╛рдкрд░реВрди рдЯреЙрдЧрд▓ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ (рдпреЛрдЧреНрдп RCC рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ).

рд╢реЗрд╡рдЯреА, рдЖрдЙрдЯрдкреБрдЯ рдореЛрдбрдордзреАрд▓ рдкрд┐рдирдордзреНрдпреЗ рдШрдбреНрдпрд╛рд│рд╛рдЪрд╛ рд╡реЗрдЧ рджреЗрдЦреАрд▓ рдЕрд╕рддреЛ. рд╣реЗ рдЖрдгрдЦреА рдПрдХ рдКрд░реНрдЬрд╛ рдмрдЪрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЖрд╣реЗ; рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдЖрдореНрд╣реА рддреЗ рдЬрд╛рд╕реНрддреАрдд рдЬрд╛рд╕реНрдд рд╕реЗрдЯ рдХрд░рддреЛ рдЖрдгрд┐ рд╡рд┐рд╕рд░рддреЛ.

рддрд░: рдЖрдореНрд╣реА SPI рд╡рд╛рдкрд░рдд рдЖрд╣реЛрдд, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рджреЛрди рдкрд┐рди (рдбреЗрдЯрд╛ рдЖрдгрд┐ рдШрдбреНрдпрд╛рд│рд╛рдЪреНрдпрд╛ рд╕рд┐рдЧреНрдирд▓рд╕рд╣) "рдкрд░реНрдпрд╛рдпреА рдкреБрд╢-рдкреБрд▓ рдлрдВрдХреНрд╢рди" рдЕрд╕рд╛рд╡реНрдпрд╛рдд рдЖрдгрд┐ рджреБрд╕рд░рд╛ (LAT) "рдирд┐рдпрдорд┐рдд рдкреБрд╢-рдкреБрд▓" рдЕрд╕рд╛рд╡рд╛. рдкрд░рдВрддреБ рддреНрдпрд╛рдВрдирд╛ рдирд┐рдпреБрдХреНрдд рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, SPI рдмрд░реЛрдмрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реВрдпрд╛.

рдПрд╕рдкреАрдЖрдп

рдЖрдгрдЦреА рдПрдХ рд▓рд╣рд╛рди рд╢реИрдХреНрд╖рдгрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо

рдПрд╕рдкреАрдЖрдп рдХрд┐рдВрд╡рд╛ рд╕реАрд░рд┐рдпрд▓ рдкреЗрд░рд┐рдлреЗрд░рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ (рд╕реАрд░рд┐рдпрд▓ рдкреЗрд░рд┐рдлреЗрд░рд▓ рдЗрдВрдЯрд░рдлреЗрд╕) рдПрдХ MK рдЗрддрд░ MK рдЖрдгрд┐ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рдмрд╛рд╣реЗрд░реАрд▓ рдЬрдЧрд╛рд╢реА рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕рд╛рдзрд╛ рдЖрдгрд┐ рдЕрддрд┐рд╢рдп рдкреНрд░рднрд╛рд╡реА рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрд╣реЗ. рддреНрдпрд╛рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдЪреЗ рддрддреНрддреНрд╡ рдЖрдзреАрдЪ рд╡рд░ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗрдереЗ рдЪреАрдиреА рдПрд▓рдИрдбреА рдбреНрд░рд╛рдпрд╡реНрд╣рд░рдмрджреНрджрд▓ (рд╕рдВрджрд░реНрдн рдореЕрдиреНрдпреБрдЕрд▓рдордзреНрдпреЗ, рд╡рд┐рднрд╛рдЧ 25 рдкрд╣рд╛). рдПрд╕рдкреАрдЖрдп рдорд╛рд╕реНрдЯрд░ (тАЬрдорд╛рд╕реНрдЯрд░тАЭ) рдЖрдгрд┐ рд╕реНрд▓реЗрд╡реНрд╣ (тАЬрд╕реНрд▓реЗрд╡реНрд╣тАЭ) рдореЛрдбрдордзреНрдпреЗ рдХрд╛рдо рдХрд░реВ рд╢рдХрддреЗ. SPI рдордзреНрдпреЗ рдЪрд╛рд░ рдореВрд▓рднреВрдд рдЪреЕрдиреЗрд▓ рдЖрд╣реЗрдд, рддреНрдпрд╛рдкреИрдХреА рд╕рд░реНрд╡ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реАрдд:

  • MOSI, рдорд╛рд╕реНрдЯрд░ рдЖрдЙрдЯрдкреБрдЯ / рд╕реНрд▓реЗрд╡реНрд╣ рдЗрдирдкреБрдЯ: рд╣рд╛ рдкрд┐рди рдорд╛рд╕реНрдЯрд░ рдореЛрдбрдордзреНрдпреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЛ рдЖрдгрд┐ рд╕реНрд▓реЗрд╡реНрд╣ рдореЛрдбрдордзреНрдпреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЛ;
  • рдПрдордЖрдпрдПрд╕рдУ, рдорд╛рд╕реНрдЯрд░ рдЗрдирдкреБрдЯ / рд╕реНрд▓реЗрд╡реНрд╣ рдЖрдЙрдЯрдкреБрдЯ: рддреНрдпрд╛рдЙрд▓рдЯ, рддреЗ рдорд╛рд╕реНрдЯрд░рдордзреНрдпреЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рдЖрдгрд┐ рд╕реНрд▓реЗрд╡реНрд╣рдордзреНрдпреЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддреЗ;
  • SCK, рд╕реАрд░рд┐рдпрд▓ рдХреНрд▓реЙрдХ: рдорд╛рд╕реНрдЯрд░рдордзреНрдпреЗ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рд╢рдирдЪреА рд╡рд╛рд░рдВрд╡рд╛рд░рддрд╛ рд╕реЗрдЯ рдХрд░рддреЗ рдХрд┐рдВрд╡рд╛ рд╕реНрд▓реЗрд╡реНрд╣рдордзреНрдпреЗ рдШрдбреНрдпрд╛рд│ рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ. рдореВрд▓рдд: рдорд╛рд░рдгреЗ;
  • рдПрд╕рдПрд╕, рд╕реНрд▓реЗрд╡реНрд╣ рд╕рд┐рд▓реЗрдХреНрдЯ: рдпрд╛ рдЪреЕрдиреЗрд▓рдЪреНрдпрд╛ рдорджрддреАрдиреЗ, рдЧреБрд▓рд╛рдорд╛рд▓рд╛ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ рдХреА рддреНрдпрд╛рдЪреНрдпрд╛рдХрдбреВрди рдХрд╛рд╣реАрддрд░реА рд╣рд╡реЗ рдЖрд╣реЗ. STM32 рд╡рд░ рддреНрдпрд╛рд▓рд╛ NSS рдЕрд╕реЗ рдореНрд╣рдгрддрд╛рдд, рдЬреЗрдереЗ N = рдирдХрд╛рд░рд╛рддреНрдордХ, рдореНрд╣рдгрдЬреЗ. рдпрд╛ рдЪреЕрдиреЗрд▓рдордзреНрдпреЗ рдЧреНрд░рд╛рдЙрдВрдб рдЕрд╕рд▓реНрдпрд╛рд╕ рдХрдВрдЯреНрд░реЛрд▓рд░ рдЧреБрд▓рд╛рдо рдмрдирддреЛ. рд╣реЗ рдУрдкрди рдбреНрд░реЗрди рдЖрдЙрдЯрдкреБрдЯ рдореЛрдбрд╕рд╣ рдЪрд╛рдВрдЧрд▓реЗ рдПрдХрддреНрд░ рдХрд░рддреЗ, рдкрд░рдВрддреБ рддреА рджреБрд╕рд░реА рдХрдерд╛ рдЖрд╣реЗ.

рдЗрддрд░ рд╕рд░реНрд╡ рдЧреЛрд╖реНрдЯреАрдВрдкреНрд░рдорд╛рдгреЗ, STM32 рд╡рд░реАрд▓ SPI рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдиреЗ рд╕рдореГрджреНрдз рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рддреЗ рд╕рдордЬрдгреЗ рдХрд╛рд╣реАрд╕реЗ рдХрдареАрдг рд╣реЛрддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреЗ рдХреЗрд╡рд│ SPI рдмрд░реЛрдмрд░рдЪ рдирд╛рд╣реА рддрд░ I2S рдЗрдВрдЯрд░рдлреЗрд╕рд╕рд╣ рджреЗрдЦреАрд▓ рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрддреЗ рдЖрдгрд┐ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрд╛рдд рддреНрдпрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдорд┐рд╢реНрд░рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ, рд╡реЗрд│реЗрд╡рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдкреВрди рдЯрд╛рдХрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдордЪреЗ рдХрд╛рд░реНрдп рдЕрддреНрдпрдВрдд рд╕реЛрдкреЗ рдЖрд╣реЗ: рдЖрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд MOSI рдЖрдгрд┐ SCK рд╡рд╛рдкрд░реВрди рдбреЗрдЯрд╛ рдкрд╛рдард╡рд╛рдпрдЪрд╛ рдЖрд╣реЗ. рдЖрдореНрд╣реА рд╡рд┐рднрд╛рдЧ 25.3.4 (рдЕрд░реНрдз-рдбреБрдкреНрд▓реЗрдХреНрд╕ рдХрдореНрдпреБрдирд┐рдХреЗрд╢рди, рд╣рд╛рдл-рдбреБрдкреНрд▓реЗрдХреНрд╕ рдХрдореНрдпреБрдирд┐рдХреЗрд╢рди) рд╡рд░ рдЬрд╛рддреЛ, рдЬрд┐рдереЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдврд│рддреЗ 1 рдШрдбреНрдпрд╛рд│ рдЖрдгрд┐ 1 рджрд┐рд╢рд╛рд╣реАрди рдбреЗрдЯрд╛ рд╡рд╛рдпрд░ (1 рдШрдбреНрдпрд╛рд│ рд╕рд┐рдЧреНрдирд▓ рдЖрдгрд┐ 1 рджрд┐рд╢рд╛рд╣реАрди рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣):

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдпрд╛ рдореЛрдбрдордзреНрдпреЗ, рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдлрдХреНрдд рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ рдХрд┐рдВрд╡рд╛ рд░рд┐рд╕рд┐рд╡реНрд╣-рдУрдирд▓реА рдореЛрдбрдордзреНрдпреЗ SPI рд╡рд╛рдкрд░рддреЛ. / рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ-рдУрдиреНрд▓реА рдореЛрдб рдбреБрдкреНрд▓реЗрдХреНрд╕ рдореЛрдбрд╕рд╛рд░рдЦрд╛рдЪ рдЖрд╣реЗ: рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ рдкрд┐рдирд╡рд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ (рдорд╛рд╕реНрдЯрд░ рдореЛрдбрдордзреНрдпреЗ MOSI рдХрд┐рдВрд╡рд╛ рд╕реНрд▓реЗрд╡реНрд╣ рдореЛрдбрдордзреНрдпреЗ MISO), рдЖрдгрд┐ рд░рд┐рд╕реАрд╡реНрд╣ рдкрд┐рди (рдЕрдиреБрдХреНрд░рдореЗ MISO рдХрд┐рдВрд╡рд╛ MOSI) рдирд┐рдпрдорд┐рдд I/O рдкрд┐рди рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. . рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕ рдХреЗрд╡рд│ Rx рдмрдлрд░рдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ (рдЬрд░ рддреЗ рд╡рд╛рдЪрд▓реЗ рдЕрд╕реЗрд▓ рддрд░ рддреЗрдереЗ рдХреЛрдгрддрд╛рд╣реА рдбреЗрдЯрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реА).

рдЫрд╛рди, MISO рдкрд┐рди рд╡рд┐рдирд╛рдореВрд▓реНрдп рдЖрд╣реЗ, рдЪрд▓рд╛ LAT рд╕рд┐рдЧреНрдирд▓ рддреНрдпрд╛рдЪреНрдпрд╛рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░реВрдпрд╛. рдЪрд▓рд╛ рд╕реНрд▓реЗрд╡реНрд╣ рд╕рд┐рд▓реЗрдХреНрдЯ рдкрд╛рд╣реВ, рдЬреЗ STM32 рд╡рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдореЕрдЯрд┐рдХрд░рд┐рддреНрдпрд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдЬреЗ рдЕрддреНрдпрдВрдд рд╕реЛрдпреАрд╕реНрдХрд░ рдЖрд╣реЗ. рдЖрдореНрд╣реА рд╡рд┐рднрд╛рдЧ 25.3.1 рдордзреНрдпреЗ рддреНрдпрд╛рдЪ рдирд╛рд╡рд╛рдЪрд╛ рдкрд░рд┐рдЪреНрдЫреЗрдж рд╡рд╛рдЪрддреЛ SPI рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдгрди:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдирд┐рдпрдВрддреНрд░рдг NSS (SSM = 1) / рд╕реНрд▓реЗрд╡реНрд╣ рдирд┐рд╡рдб рдорд╛рд╣рд┐рддреА SPI_CR1 рд░рдЬрд┐рд╕реНрдЯрд░рдЪреНрдпрд╛ SSI рдмрд┐рдЯрдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. рдмрд╛рд╣реНрдп NSS рдкрд┐рди рдЗрддрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЧрд░рдЬрд╛рдВрд╕рд╛рдареА рд╡рд┐рдирд╛рдореВрд▓реНрдп рд░рд╛рд╣рддреЗ.

рд░рдЬрд┐рд╕реНрдЯрд░рд╡рд░ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ. рдореА SPI2 рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреЗ рдард░рд╡рд▓реЗ, рддреНрдпрд╛рдЪрд╛ рдмреЗрд╕ рдкрддреНрддрд╛ рдбреЗрдЯрд╛рд╢реАрдЯрдордзреНрдпреЗ рд╢реЛрдзрд╛ - рд╡рд┐рднрд╛рдЧ 3.3 рдореЗрдорд░реА рдореЕрдкрдордзреНрдпреЗ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

рдмрд░рдВ, рдЪрд▓рд╛ рд╕реБрд░реБрд╡рд╛рдд рдХрд░реВрдпрд╛:

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

"рдорд╛рд╕реНрдЯрд░ рдореЛрдбрдордзреНрдпреЗ рдПрд╕рдкреАрдЖрдп рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ" рд╕реНрд╡рдпрдВ-рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╛рддреНрдордХ рд╢реАрд░реНрд╖рдХрд╛рд╕рд╣ рд╡рд┐рднрд╛рдЧ 25.3.3 рдЙрдШрдбрд╛:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

1. SPI_CR2 рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рдмрд┐рдЯреНрд╕ BR[0:1] рд╕рд╣ рдХреНрд░рдорд┐рдХ рдШрдбреНрдпрд╛рд│ рд╡рд╛рд░рдВрд╡рд╛рд░рддрд╛ рд╕реЗрдЯ рдХрд░рд╛.

рд░рдЬрд┐рд╕реНрдЯрд░ рддреНрдпрд╛рдЪ рдирд╛рд╡рд╛рдЪреНрдпрд╛ рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрд┐рдХрд╛ рд╡рд┐рднрд╛рдЧрд╛рдд рдЧреЛрд│рд╛ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдкрддреНрддрд╛ рд╢рд┐рдлреНрдЯ (рдкрддреНрддрд╛ рдСрдлрд╕реЗрдЯ) CR1 - 0x00 рд╕рд╛рдареА, рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд╕рд░реНрд╡ рдмрд┐рдЯреНрд╕ рд╕рд╛рдл рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд (рдореВрд▓реНрдп рд░реАрд╕реЗрдЯ рдХрд░рд╛ 0x0000):

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

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 рд╡рд░реАрд▓ рдЖрдХреГрддреА рдкрд╣рд╛)

рдЖрдореНрд╣реА рдпреЗрдереЗ рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ рдЖрдгрд┐ рд╕реНрдХреАрдореЕрдЯрд┐рдХреНрд╕ рдкрд╛рд╣рдд рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ, рдкреГрд╖реНрда 704 (SPI рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдгрди) рд╡рд░реАрд▓ CPOL рдЖрдгрд┐ CPHA рдмрд┐рдЯреНрд╕рдЪреЗ рдордЬрдХреВрд░ рд╡рд░реНрдгрди рдЬрд╡рд│реВрди рдкрд╛рд╣реВ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдШрдбреНрдпрд╛рд│рд╛рдЪреА рдЕрд╡рд╕реНрдерд╛ рдЖрдгрд┐ рдзреНрд░реБрд╡реАрдпрддрд╛
SPI_CR1 рд░рдЬрд┐рд╕реНрдЯрд░рдЪреЗ CPOL рдЖрдгрд┐ CPHA рдмрд┐рдЯреНрд╕ рд╡рд╛рдкрд░реВрди, рддреБрдореНрд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдкрджреНрдзрддреАрдиреЗ рдЪрд╛рд░ рдЯрд╛рдпрдорд┐рдВрдЧ рд╕рдВрдмрдВрдз рдирд┐рд╡рдбреВ рд╢рдХрддрд╛. CPOL (рдШрдбреНрдпрд╛рд│ рдзреНрд░реБрд╡реАрдпрддрд╛) рдмрд┐рдЯ рдЬреЗрд╡реНрд╣рд╛ рдХреЛрдгрддрд╛рд╣реА рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдд рдирд╛рд╣реА рддреЗрд╡реНрд╣рд╛ рдШрдбреНрдпрд╛рд│ рд╕рд┐рдЧреНрдирд▓рдЪреА рд╕реНрдерд┐рддреА рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ. рд╣рд╛ рдмрд┐рдЯ рдорд╛рд╕реНрдЯрд░ рдЖрдгрд┐ рд╕реНрд▓реЗрд╡реНрд╣ рдореЛрдб рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЛ. CPOL рд░реАрд╕реЗрдЯ рдХреЗрд▓реНрдпрд╛рд╕, SCK рдкрд┐рди рд╡рд┐рд╢реНрд░рд╛рдВрддреА рдореЛрдбрдордзреНрдпреЗ рдХрдореА рдЖрд╣реЗ. CPOL рдмрд┐рдЯ рд╕реЗрдЯ рдХреЗрд▓реНрдпрд╛рд╕, рд╡рд┐рд╢реНрд░рд╛рдВрддреА рдореЛрдб рджрд░рдореНрдпрд╛рди SCK рдкрд┐рди рдЬрд╛рд╕реНрдд рдЕрд╕рддреЛ.
рдЬреЗрд╡реНрд╣рд╛ CPHA (рдШрдбреНрдпрд╛рд│рд╛рдЪрд╛ рдЯрдкреНрдкрд╛) рдмрд┐рдЯ рд╕реЗрдЯ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рддреЗрд╡реНрд╣рд╛ рдЙрдЪреНрдЪ рдмрд┐рдЯ рдЯреНрд░реЕрдк рд╕реНрдЯреНрд░реЛрдм рд╣рд╛ SCK рд╕рд┐рдЧреНрдирд▓рдЪрд╛ рджреБрд╕рд░рд╛ рдХрд┐рдирд╛рд░рд╛ рдЕрд╕рддреЛ (CPOL рд╕реНрдкрд╖реНрдЯ рдЕрд╕рд▓реНрдпрд╛рд╕ рдкрдбрдгреЗ, CPOL рд╕реЗрдЯ рдХреЗрд▓реНрдпрд╛рд╕ рд╡рд╛рдврдгреЗ). рдбреЗрдЯрд╛ рдШрдбреНрдпрд╛рд│ рд╕рд┐рдЧреНрдирд▓рдордзреАрд▓ рджреБрд╕рд▒реНрдпрд╛ рдмрджрд▓рд╛рджреНрд╡рд╛рд░реЗ рдХреЕрдкреНрдЪрд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. CPHA рдмрд┐рдЯ рд╕реНрдкрд╖реНрдЯ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЙрдЪреНрдЪ рдмрд┐рдЯ рдЯреНрд░реЕрдк рд╕реНрдЯреНрд░реЛрдм рд╣рд╛ SCK рд╕рд┐рдЧреНрдирд▓рдЪрд╛ рд╡рд╛рдврддрд╛ рдХрд┐рдирд╛рд░рд╛ рдЕрд╕рддреЛ (CPOL рд╕реЗрдЯ рдХреЗрд▓реНрдпрд╛рд╕ рдкрдбрдгрд╛рд░реА рдХрд┐рдирд╛рд░, CPOL рд╕рд╛рдл рдХреЗрд▓реНрдпрд╛рд╕ рд╡рд╛рдврдгрд╛рд░реА рдХрд┐рдирд╛рд░). рдШрдбреНрдпрд╛рд│рд╛рдЪреНрдпрд╛ рд╕рд┐рдЧреНрдирд▓рдордзреАрд▓ рдкрд╣рд┐рд▓реНрдпрд╛ рдмрджрд▓рд╛рд╡рд░ рдбреЗрдЯрд╛ рдХреЕрдкреНрдЪрд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

рд╣реЗ рдЬреНрдЮрд╛рди рдЖрддреНрдорд╕рд╛рдд рдХреЗрд▓реНрдпрд╛рд╡рд░, рдЖрдореНрд╣реА рдпрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рд╛рд╡рд░ рдкреЛрд╣реЛрдЪрддреЛ рдХреА рджреЛрдиреНрд╣реА рдмрд┐рдЯреНрд╕ рд╢реВрдиреНрдпрдЪ рд░рд╛рд╣рд┐рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд, рдХрд╛рд░рдг SCK рд╕рд┐рдЧреНрдирд▓ рд╡рд╛рдкрд░рд╛рдд рдирд╕рддрд╛рдирд╛ рдХрдореА рд░рд╛рд╣рд╛рд╡реЗ рдЖрдгрд┐ рдирд╛рдбреАрдЪреНрдпрд╛ рд╡рд╛рдврддреНрдпрд╛ рдХрд╛рдард╛рд╡рд░ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рд╡рд╛ рдЕрд╢реА рдЖрдордЪреА рдЗрдЪреНрдЫрд╛ рдЖрд╣реЗ (рдЪрд┐рддреНрд░ рдкрд╣рд╛. рд░рд╛рдЗрдЬрд┐рдВрдЧ рдПрдЬ DM634 рдбреЗрдЯрд╛рд╢реАрдЯрдордзреНрдпреЗ).

рддрд╕реЗ, рдпреЗрдереЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рдердо рдПрд╕рдЯреА рдбреЗрдЯрд╛рд╢реАрдЯрдордзреАрд▓ рд╢рдмреНрджрд╕рдВрдЧреНрд░рд╣рд╛рдЪреЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЖрдврд│рд▓реЗ: рддреНрдпрд╛рдордзреНрдпреЗ "рдмрд┐рдЯ рд╢реВрдиреНрдпрд╛рд╡рд░ рд░реАрд╕реЗрдЯ рдХрд░рд╛" рд╣рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ. рдереЛрдбрд╛ рд░реАрд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареАрдкрдг рдирд╛рд╣реА рдереЛрдбреЗ рд╕рд╛рдл рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Atmega.

3. рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ 8-рдмрд┐рдЯ рдХрд┐рдВрд╡рд╛ 16-рдмрд┐рдЯ рдлреЙрд░рдореЕрдЯ рдЖрд╣реЗ рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА DFF рдмрд┐рдЯ рд╕реЗрдЯ рдХрд░рд╛

рдореА рд╡рд┐рд╢реЗрд╖рддрдГ 16-рдмрд┐рдЯ DM634 рдШреЗрддрд▓рд╛ рдЬреЗрдгреЗрдХрд░реВрди DM12 рдкреНрд░рдорд╛рдгреЗ 633-рдмрд┐рдЯ PWM рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рдд рддреНрд░рд╛рд╕ рд╣реЛрдК рдирдпреЗ. DFF рдПрдХ рд╡рд░ рд╕реЗрдЯ рдХрд░рдгреЗ рдЕрд░реНрдердкреВрд░реНрдг рдЖрд╣реЗ:

#define DFF         0x0800

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

4. рдмреНрд▓реЙрдХ рдлреЙрд░рдореЕрдЯ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА SPI_CR1 рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ LSBFIRST рдмрд┐рдЯ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рд╛

LSBFIRST, рддреНрдпрд╛рдЪреНрдпрд╛ рдирд╛рд╡рд╛рдкреНрд░рдорд╛рдгреЗ, рдХрдореАрдд рдХрдореА рд▓рдХреНрд╖рдгреАрдп рдмрд┐рдЯрд╕рд╣ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рд╢рди рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рддреЗ. рдкрд░рдВрддреБ DM634 рд╕рд░реНрд╡рд╛рдд рд▓рдХреНрд╖рдгреАрдп рдмрд┐рдЯ рдкрд╛рд╕реВрди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдЖрд╣реЗ. рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА рддреЗ рд░реАрд╕реЗрдЯ рд╕реЛрдбрддреЛ.

5. рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдореЛрдбрдордзреНрдпреЗ, NSS рдкрд┐рдирдордзреВрди рдЗрдирдкреБрдЯ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рд╕рдВрдкреВрд░реНрдг рдмрд╛рдЗрдЯ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдХреНрд░рдорд╛рджрд░рдореНрдпрд╛рди NSS рдкрд┐рдирд╡рд░ рдЙрдЪреНрдЪ рд╕рд┐рдЧреНрдирд▓ рд▓рд╛рдЧреВ рдХрд░рд╛. NSS рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдореЛрдбрдордзреНрдпреЗ, SPI_CR1 рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ SSM рдЖрдгрд┐ SSI рдмрд┐рдЯреНрд╕ рд╕реЗрдЯ рдХрд░рд╛. NSS рдкрд┐рди рдЖрдЙрдЯрдкреБрдЯ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд╛рдпрдЪрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рдлрдХреНрдд SSOE рдмрд┐рдЯ рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

NSS рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдореЛрдб рд╡рд┐рд╕рд░рдгреНрдпрд╛рд╕рд╛рдареА SSM рдЖрдгрд┐ SSI рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛:

#define SSI         0x0100
#define SSM         0x0200

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

6. MSTR рдЖрдгрд┐ SPE рдмрд┐рдЯреНрд╕ рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ (рддреЗ рдлрдХреНрдд NSS рд╕рд┐рдЧреНрдирд▓ рдЬрд╛рд╕реНрдд рдЕрд╕рд▓реНрдпрд╛рд╕ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд)

рд╡рд╛рд╕реНрддрд╡рд┐рдХ, рдпрд╛ рдмрд┐рдЯреНрд╕рд╕рд╣ рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ SPI рд▓рд╛ рдорд╛рд╕реНрдЯрд░ рдореНрд╣рдгреВрди рдирд┐рдпреБрдХреНрдд рдХрд░рддреЛ рдЖрдгрд┐ рддреЗ рдЪрд╛рд▓реВ рдХрд░рддреЛ:

#define MSTR        0x0004
#define SPE         0x0040

_SPI2_ (_SPI_CR1) |= MSTR; //SPI master
//╨║╨╛╨│╨┤╨░ ╨▓╤Б╨╡ ╨│╨╛╤В╨╛╨▓╨╛, ╨▓╨║╨╗╤О╤З╨░╨╡╨╝ SPI
_SPI2_ (_SPI_CR1) |= SPE;

SPI рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЖрд╣реЗ, рдЪрд▓рд╛ рддрд╛рдмрдбрддреЛрдм рдлрдВрдХреНрд╢рдиреНрд╕ рд▓рд┐рд╣реВ рдЬреЗ рдбреНрд░рд╛рдпрд╡реНрд╣рд░рд▓рд╛ рдмрд╛рдЗрдЯ рдкрд╛рдард╡рддрд╛рдд. 25.3.3 рд╡рд╛рдЪрди рд╕реБрд░реВ рдареЗрд╡рд╛ тАЬрдорд╛рд╕реНрдЯрд░ рдореЛрдбрдордзреНрдпреЗ SPI рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗтАЭ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдСрд░реНрдбрд░
Tx рдмрдлрд░рд╡рд░ рдмрд╛рдЗрдЯ рд▓рд┐рд╣рд┐рд▓реНрдпрд╛рд╡рд░ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рд╢рди рд╕реБрд░реВ рд╣реЛрддреЗ.
рдбреЗрдЯрд╛ рдмрд╛рдЗрдЯ рдпреЗрдереЗ рд╢рд┐рдлреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рд╕рдорд╛рдВрддрд░ рдореЛрдб (рдЕрдВрддрд░реНрдЧрдд рдмрд╕рдордзреВрди) рдкрд╣рд┐рд▓реНрдпрд╛ рдмрд┐рдЯрдЪреНрдпрд╛ рдкреНрд░рд╕рд╛рд░рдгрд╛рджрд░рдореНрдпрд╛рди, рдЬреНрдпрд╛рдирдВрддрд░ рддреЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ MOSI рдкрд┐рди рдореЛрдб, CPI_CR1 рд░рдЬрд┐рд╕реНрдЯрд░рдордзреАрд▓ LSBFIRST рдмрд┐рдЯрдЪреНрдпрд╛ рд╕реЗрдЯрд┐рдВрдЧрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдкрд╣рд┐рд▓рд╛ рдХрд┐рдВрд╡рд╛ рд╢реЗрд╡рдЯрдЪрд╛ рдмрд┐рдЯ рдлреЙрд░рд╡рд░реНрдб. рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рд╢рдирдирдВрддрд░ TXE рдзреНрд╡рдЬ рд╕реЗрдЯ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ Tx рдмрдлрд░ рдкрд╛рд╕реВрди рд╢рд┐рдлреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрд░реНрдпрдВрдд, рдЖрдгрд┐ CPI_CR1 рд░рдЬрд┐рд╕реНрдЯрд░рдордзреАрд▓ TXEIE рдмрд┐рдЯ рд╕реЗрдЯ рдХреЗрд▓реНрдпрд╛рд╕ рд╡реНрдпрддреНрдпрдп рджреЗрдЦреАрд▓ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЛ.

STM рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕рдордзреАрд▓ SPI рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдПрдХрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдХрдбреЗ рд▓рдХреНрд╖ рд╡реЗрдзрдгреНрдпрд╛рд╕рд╛рдареА рдореА рднрд╛рд╖рд╛рдВрддрд░рд╛рддреАрд▓ рдХрд╛рд╣реА рд╢рдмреНрдж рд╣рд╛рдпрд▓рд╛рдЗрдЯ рдХреЗрд▓реЗ. Atmega рд╡рд░ TXE рдзреНрд╡рдЬ (Tx рд░рд┐рдХреНрдд, Tx рд░рд┐рдХреНрдд рдЖрд╣реЗ рдЖрдгрд┐ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдЖрд╣реЗ) рд╕рдВрдкреВрд░реНрдг рдмрд╛рдЗрдЯ рдкрд╛рдард╡рд┐рд▓реНрдпрд╛рдирдВрддрд░рдЪ рд╕реЗрдЯ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдмрд╛рд╣реЗрд░. рдЖрдгрд┐ рдпреЗрдереЗ рд╣рд╛ рдзреНрд╡рдЬ рдЕрдВрддрд░реНрдЧрдд рд╢рд┐рдлреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рдмрд╛рдЗрдЯ рдЯрд╛рдХрд▓реНрдпрд╛рдирдВрддрд░ рд╕реЗрдЯ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рддреЗ рдПрдХрд╛рдЪ рд╡реЗрд│реА рд╕рд░реНрд╡ рдмрд┐рдЯреНрд╕рд╕рд╣ рддреЗрдереЗ рдврдХрд▓рд▓реЗ рдЬрд╛рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ (рд╕рдорд╛рдВрддрд░) рдЖрдгрд┐ рдирдВрддрд░ рдбреЗрдЯрд╛ рдЕрдиреБрдХреНрд░рдореЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдмрд╛рдЗрдЯ рдкреВрд░реНрдгрдкрдгреЗ рдкрд╛рдард╡рдгреНрдпрд╛рдкреВрд░реНрд╡реА TXE рд╕реЗрдЯ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рд╣реЗ рдорд╣рддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ рдХрд╛рд░рдг рдЖрдордЪреНрдпрд╛ LED рдбреНрд░рд╛рдпрд╡реНрд╣рд░рдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдЖрдореНрд╣рд╛рд▓рд╛ рдкрд╛рдард╡рд▓реНрдпрд╛рдирдВрддрд░ LAT рдкрд┐рди рдЦреЗрдЪрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ ╨▓╤Б╨╡╤Е рдбреЗрдЯрд╛, рдореНрд╣рдгрдЬреЗ рдПрдХрдЯрд╛ TXE рдзреНрд╡рдЬ рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рдкреБрд░реЗрд╕рд╛ рдирд╛рд╣реА.

рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрдгрдЦреА рдПрдХ рдзреНрд╡рдЬ рд╣рд╡рд╛ рдЖрд╣реЗ. рдЪрд▓рд╛ 25.3.7 - "рд╕реНрдерд┐рддреА рдзреНрд╡рдЬ" рдкрд╛рд╣реВ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
<тАж>
рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рд╡реНрдпрд╕реНрдд рдзреНрд╡рдЬ
BSY рдзреНрд╡рдЬ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░рджреНрд╡рд╛рд░реЗ рд╕реЗрдЯ рдЖрдгрд┐ рд╕рд╛рдл рдХреЗрд▓рд╛ рдЬрд╛рддреЛ (рддреНрдпрд╛рд╡рд░ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪрд╛ рдХреЛрдгрддрд╛рд╣реА рдкрд░рд┐рдгрд╛рдо рд╣реЛрдд рдирд╛рд╣реА). BSY рдзреНрд╡рдЬ SPI рдХрдореНрдпреБрдирд┐рдХреЗрд╢рди рд▓реЗрдпрд░рдЪреА рд╕реНрдерд┐рддреА рджрд░реНрд╢рд╡рддреЛ.
рддреЗ рд░реАрд╕реЗрдЯ рдХрд░рддреЗ:
рдЬреЗрд╡реНрд╣рд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдкреВрд░реНрдг рд╣реЛрддреЗ (рд╣рд╕реНрддрд╛рдВрддрд░рдг рдирд┐рд░рдВрддрд░ рдЕрд╕рд▓реНрдпрд╛рд╕ рдорд╛рд╕реНрдЯрд░ рдореЛрдбрдордзреНрдпреЗ рд╡рдЧрд│рддрд╛)
рдЬреЗрд╡реНрд╣рд╛ SPI рдЕрдХреНрд╖рдо рдХреЗрд▓реЗ рдЬрд╛рддреЗ
рдЬреЗрд╡реНрд╣рд╛ рдорд╛рд╕реНрдЯрд░ рдореЛрдб рддреНрд░реБрдЯреА рдпреЗрддреЗ (MODF=1)
рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╕рддрдд рдирд╕рд▓реНрдпрд╛рд╕, рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдгрд╛рджрд░рдореНрдпрд╛рди BSY рдзреНрд╡рдЬ рд╕рд╛рдл рдХреЗрд▓рд╛ рдЬрд╛рддреЛ

рдареАрдХ рдЖрд╣реЗ, рд╣реЗ рдЙрдкрдпреБрдХреНрдд рдард░реЗрд▓. Tx рдмрдлрд░ рдХреБрдареЗ рдЖрд╣реЗ рддреЗ рд╢реЛрдзреВрдпрд╛. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, тАЬSPI рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░тАЭ рд╡рд╛рдЪрд╛:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдмрд┐рдЯреНрд╕ 15:0 DR[15:0] рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░
рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реЗрд▓рд╛ рдбреЗрдЯрд╛ рдХрд┐рдВрд╡рд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдгрд╛рд░ рдЖрд╣реЗ.
рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рджреЛрди рдмрдлрд░рдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ - рдПрдХ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕рд╛рдареА (рдмрдлрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рд╛) рдЖрдгрд┐ рдПрдХ рд╡рд╛рдЪрдгреНрдпрд╛рд╕рд╛рдареА (рдмрдлрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рд╛). рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░рд╡рд░ рд▓рд┐рд╣рд┐рдгреЗ Tx рдмрдлрд░рд▓рд╛ рд▓рд┐рд╣рд┐рддреЗ, рдЖрдгрд┐ рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреВрди рд╡рд╛рдЪрдгреЗ Rx рдмрдлрд░рдордзреНрдпреЗ рдЕрд╕рд▓реЗрд▓реЗ рдореВрд▓реНрдп рдкрд░рдд рдХрд░реЗрд▓.

рдмрд░рдВ, рдЖрдгрд┐ рд╕реНрдЯреЗрдЯрд╕ рд░рдЬрд┐рд╕реНрдЯрд░, рдЬрд┐рдереЗ TXE рдЖрдгрд┐ BSY рдзреНрд╡рдЬ рдЖрдврд│рддрд╛рдд:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

рдЖрдореНрд╣реА рд▓рд┐рд╣рд┐рддреЛ:

#define _SPI_DR  0x0C
#define _SPI_SR  0x08

#define BSY         0x0080
#define TXE         0x0002

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

рдмрд░рдВ, рдПрд▓рдИрдбреА рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рдЖрдЙрдЯрдкреБрдЯрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреБрд╕рд╛рд░, рдЖрдореНрд╣рд╛рд▓рд╛ 16 рд╡реЗрд│рд╛ рджреЛрди рдмрд╛рдЗрдЯ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ, рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА:

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

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

    LAT_pulse();
}

рдкрд░рдВрддреБ рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрджреНрдпрд╛рдк LAT рдкрд┐рди рдХрд╕рд╛ рдХрд╛рдврд╛рдпрдЪрд╛ рд╣реЗ рдорд╛рд╣рд┐рдд рдирд╛рд╣реА, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА I/O рд╡рд░ рдкрд░рдд рдЬрд╛рдК.

рдкрд┐рди рдирд┐рдпреБрдХреНрдд рдХрд░рдгреЗ

STM32F1 рдордзреНрдпреЗ, рдкрд┐рдирдЪреНрдпрд╛ рд╕реНрдерд┐рддреАрд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕рд▓реЗрд▓реЗ рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕ рдЦреВрдкрдЪ рдЕрд╕рд╛рдорд╛рдиреНрдп рдЖрд╣реЗрдд. рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ рдХреА рддреНрдпрд╛рдд Atmega рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЖрд╣реЗрдд, рдкрд░рдВрддреБ рддреЗ рдЗрддрд░ STM рдЪрд┐рдкреНрд╕рдкреЗрдХреНрд╖рд╛ рд╡реЗрдЧрд│реЗ рдЖрд╣реЗрдд. рд╡рд┐рднрд╛рдЧ 9.1 GPIO рдЪреЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдгрди:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢ I/O рдкреЛрд░реНрдЯ (GPIO) рджреЛрди 32-рдмрд┐рдЯ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд░рдЬрд┐рд╕реНрдЯрд░ (GPIOx_CRL рдЖрдгрд┐ GPIOx_CRH), рджреЛрди 32-рдмрд┐рдЯ рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕ (GPIOx_IDR рдЖрдгрд┐ GPIOx_ODR), рдПрдХ 32-рдмрд┐рдЯ рд╕реЗрдЯ/рд░реАрд╕реЗрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ (GPIOx_BSRR), рдПрдХ 16-рдмрд┐рдЯ рд░реАрд╕реЗрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ (GPIOx_32BR) рдЖрдгрд┐ GPIOx_XNUMXBR. рдмрд┐рдЯ рдмреНрд▓реЙрдХрд┐рдВрдЧ рд░рдЬрд┐рд╕реНрдЯрд░ (GPIOx_LCKR).

рдкрд╣рд┐рд▓реЗ рджреЛрди рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕ рдЕрд╕рд╛рдорд╛рдиреНрдп рдЖрд╣реЗрдд, рдЖрдгрд┐ рдЦреВрдк рдЧреИрд░рд╕реЛрдпреАрдЪреЗрд╣реА рдЖрд╣реЗрдд, рдХрд╛рд░рдг 16 рдкреЛрд░реНрдЯ рдкрд┐рди рддреНрдпрд╛рдВрдЪреНрдпрд╛рдордзреНрдпреЗ тАЬрдЪрд╛рд░ рдмрд┐рдЯ рдкреНрд░рддрд┐ рднрд╛рдКтАЭ рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рд╡рд┐рдЦреБрд░рд▓реЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд. рддреНрдпрд╛. рд╢реВрдиреНрдп рддреЗ рд╕рд╛рдд рдкрд┐рди рд╕реАрдЖрд░рдПрд▓рдордзреНрдпреЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рдЙрд░реНрд╡рд░рд┐рдд рд╕реАрдЖрд░рдПрдЪрдордзреНрдпреЗ рдЖрд╣реЗрдд. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдЙрд░реНрд╡рд░рд┐рдд рдиреЛрдВрджрдгреАрдВрдордзреНрдпреЗ рдкреЛрд░реНрдЯрдЪреНрдпрд╛ рд╕рд░реНрд╡ рдкрд┐рдирдЪреЗ рдмрд┐рдЯреНрд╕ рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдЕрд╕рддрд╛рдд - рдмрд╣реБрддреЗрдХ рд╡реЗрд│рд╛ рдЕрд░реНрдзреЗ "рдЖрд░рдХреНрд╖рд┐рдд" рдЕрд╕рддрд╛рдд.

рд╕рд╛рдзреЗрдкрдгрд╛рд╕рд╛рдареА, рд╕реВрдЪреАрдЪреНрдпрд╛ рд╢реЗрд╡рдЯрд╛рдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░реВрдпрд╛.

рдЖрдореНрд╣рд╛рд▓рд╛ рдмреНрд▓реЙрдХрд┐рдВрдЧ рд░рдЬрд┐рд╕реНрдЯрд░рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА.

рд╕реЗрдЯ рдЖрдгрд┐ рд░реАрд╕реЗрдЯ рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕ рдЦреВрдкрдЪ рдордЬреЗрджрд╛рд░ рдЖрд╣реЗрдд рдХрд╛рд░рдг рддреЗ рдПрдХрдореЗрдХрд╛рдВрдирд╛ рдЕрдВрд╢рддрдГ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рддрд╛рдд: рддреБрдореНрд╣реА рд╕рд░реНрд╡рдХрд╛рд╣реА рдлрдХреНрдд BSRR рдордзреНрдпреЗ рд▓рд┐рд╣реВ рд╢рдХрддрд╛, рдЬрд┐рдереЗ рдЙрдЪреНрдЪ 16 рдмрд┐рдЯ рдкрд┐рдирд▓рд╛ рд╢реВрдиреНрдпрд╛рд╡рд░ рд░реАрд╕реЗрдЯ рдХрд░рддреАрд▓ рдЖрдгрд┐ рдЦрд╛рд▓рдЪреЗ 1 рд╡рд░ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓, рдХрд┐рдВрд╡рд╛ рддреБрдореНрд╣реА рджреЗрдЦреАрд▓ рдХрд░реВ рд╢рдХрддрд╛. BRR рд╡рд╛рдкрд░рд╛, рддреНрдпрд╛рддреАрд▓ рдЦрд╛рд▓рдЪреЗ 16 рдмрд┐рдЯ рдлрдХреНрдд рдкрд┐рди рд░реАрд╕реЗрдЯ рдХрд░рддрд╛рдд. рдорд▓рд╛ рджреБрд╕рд░рд╛ рдкрд░реНрдпрд╛рдп рдЖрд╡рдбрд▓рд╛. рд╣реЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗрдд рдХрд╛рд░рдг рддреЗ рдкрд┐рдирд╡рд░ рдЕрдгреБ рдкреНрд░рд╡реЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдЕрдгреВ рд╕реЗрдЯ рдХрд┐рдВрд╡рд╛ рд░реАрд╕реЗрдЯ
рдмрд┐рдЯ рд╕реНрддрд░рд╛рд╡рд░ GPIOx_ODR рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░рддрд╛рдирд╛ рд╡реНрдпрддреНрдпрдп рдЕрдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА: рдПрдХ рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рдмрд┐рдЯ рдПрдХрд╛ рдЕрдгреБ рд▓реЗрдЦрди рдСрдкрд░реЗрд╢рди APB2 рд╕рд╣ рдмрджрд▓рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рд╣реЗ рдмрджрд▓рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдмрд┐рдЯрдЪреНрдпрд╛ рд╕реЗрдЯ/рд░реАрд╕реЗрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ (GPIOx_BSRR рдХрд┐рдВрд╡рд╛, рдлрдХреНрдд рд░реАрд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, GPIOx_BRR) рд╡рд░ "1" рд▓рд┐рд╣реВрди рд╕рд╛рдзреНрдп рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдЗрддрд░ рдмрд┐рдЯреНрд╕ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╛рд╣рддреАрд▓.

рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕рдордзреНрдпреЗ рд╕реНрд╡-рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╛рддреНрдордХ рдирд╛рд╡реЗ рдЖрд╣реЗрдд - IDR = рдЗрдирдкреБрдЯ рджрд┐рд╢рд╛ рдиреЛрдВрджрд╡рд╣реА, рдЗрдирдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░; ODR = рдЙрддреНрдкрд╛рджрди рджрд┐рд╢рд╛ рдиреЛрдВрджрд╡рд╣реА, рдЖрдЙрдЯрдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░. рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдд рдЖрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдВрдЪреА рдЧрд░рдЬ рднрд╛рд╕рдгрд╛рд░ рдирд╛рд╣реА.

рдЖрдгрд┐ рд╢реЗрд╡рдЯреА, рдирд┐рдпрдВрддреНрд░рдг рдиреЛрдВрджрдгреА. рдЖрдореНрд╣рд╛рд▓рд╛ PB13, PB14 рдЖрдгрд┐ PB15 рдпрд╛ рджреБрд╕рд▒реНрдпрд╛ SPI рдкрд┐рдирдордзреНрдпреЗ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрдореНрд╣реА рд▓рдЧреЗрдЪ CRH рдкрд╛рд╣рддреЛ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

рдЖрдгрд┐ рдЖрдкрдг рдкрд╛рд╣рддреЛ рдХреА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ 20 рддреЗ 31 рдкрд░реНрдпрдВрдд рдмрд┐рдЯреНрд╕рдордзреНрдпреЗ рдХрд╛рд╣реАрддрд░реА рд▓рд┐рд╣рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓.

рдкрд┐рдирдордзреВрди рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рд╣рд╡реЗ рдЖрд╣реЗ рддреЗ рдЖрдореНрд╣реА рдЖрдзреАрдЪ рд╢реЛрдзреВрди рдХрд╛рдврд▓реЗ рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдореА рдпреЗрдереЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯрд╢рд┐рд╡рд╛рдп рдХрд░реВ, рдореА рдлрдХреНрдд рдЕрд╕реЗ рдореНрд╣рдгреЗрди рдХреА MODE рджрд┐рд╢рд╛ (рджреЛрдиреНрд╣реА рдмрд┐рдЯ 0 рд╡рд░ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЕрд╕рд▓реНрдпрд╛рд╕ рдЗрдирдкреБрдЯ) рдЖрдгрд┐ рдкрд┐рди рдЧрддреА (рдЖрдореНрд╣рд╛рд▓рд╛ 50MHz рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЙрджрд╛. рджреЛрдиреНрд╣реА рдкрд┐рди тАЬ1тАЭ рд╡рд░), рдЖрдгрд┐ CNF рдореЛрдб рд╕реЗрдЯ рдХрд░рддреЗ: рдирд┐рдпрдорд┐рдд тАЬрдкреБрд╢-рдкреБрд▓тАЭ тАУ 00, тАЬрдкрд░реНрдпрд╛рдпреАтАЭ тАУ 10. рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рдЖрдкрдг рд╡рд░ рдкрд╛рд╣рд┐рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рд╕рд░реНрд╡ рдкрд┐рдирдордзреНрдпреЗ рддрд│рд╛рдкрд╛рд╕реВрди рддрд┐рд╕рд░рд╛ рдмрд┐рдЯ рдЕрд╕рддреЛ (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 рдлрдХреНрдд рдЬрдбрддреНрд╡рд╛рдиреЗ, рд╣реЗ рдиреЗрд╣рдореАрдЪ рдЕрд╕реЗрдЪ рд╣реЛрддреЗ, рддреЗ рд░рд╛рд╣реВ рджреНрдпрд╛)

рдЖрддрд╛ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЫрд╛рди рдЖрд╣реЗ, рдкрд░рдВрддреБ рддреЗ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА. рдХрд╛рд░рдг рд╣реЗ STM32 рдЖрд╣реЗ, рддреЗ рд╡рд┐рдЬреЗрдЪреА рдмрдЪрдд рдХрд░рддрд╛рдд, рдпрд╛рдЪрд╛ рдЕрд░реНрде рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдкреЗрд░рд┐рдлреЗрд░рд▓реНрд╕рдЪреЗ рдХреНрд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдШрдбреНрдпрд╛рд│ рдЪрд╛рд▓реВ рдХрд░рд╛

рдШрдбреНрдпрд╛рд│, рдЬреНрдпрд╛рд▓рд╛ рдШрдбреНрдпрд╛рд│ рдореНрд╣рдгреВрди рджреЗрдЦреАрд▓ рдУрд│рдЦрд▓реЗ рдЬрд╛рддреЗ, рдШрдбреНрдпрд╛рд│рд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЖрд╣реЗ. рдЖрдгрд┐ рдЖрд░рд╕реАрд╕реА рд╣реЗ рд╕рдВрдХреНрд╖реЗрдк рдЖрдореНрд╣реА рдЖрдзреАрдЪ рд▓рдХреНрд╖рд╛рдд рдШреЗрдК рд╢рдХрддреЛ. рдЖрдореНрд╣реА рддреЗ рдХрд╛рдЧрджрдкрддреНрд░рд╛рдВрдордзреНрдпреЗ рд╢реЛрдзрддреЛ: рд╣реЗ рд░реАрд╕реЗрдЯ рдЖрдгрд┐ рдШрдбреНрдпрд╛рд│ рдирд┐рдпрдВрддреНрд░рдг рдЖрд╣реЗ.

рд╡рд░ рдореНрд╣рдЯрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рд╕реБрджреИрд╡рд╛рдиреЗ, рдХреНрд▓реЙрдХрд┐рдВрдЧ рд╡рд┐рд╖рдпрд╛рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рдХрдареАрдг рднрд╛рдЧ рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рдПрд╕рдЯреАрдПрдордЪреНрдпрд╛ рд▓реЛрдХрд╛рдВрдиреА рдХреЗрд▓рд╛ рд╣реЛрддрд╛, рдЬреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рддреНрдпрд╛рдВрдЪреЗ рдЦреВрдк рдЖрднрд╛рд░реА рдЖрд╣реЛрдд (рдкреБрдиреНрд╣рд╛ рдПрдХрджрд╛ рдореА рдПрдХ рд▓рд┐рдВрдХ рджреЗрдИрди Di Halt рдЪреА рд╡реЗрдмрд╕рд╛рдЗрдЯ, рддреЗ рдХрд┐рддреА рдЧреЛрдВрдзрд│рд╛рдд рдЯрд╛рдХрдгрд╛рд░реЗ рдЖрд╣реЗ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА). рдЖрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдкреЗрд░рд┐рдлреЗрд░рд▓ рдХреНрд▓реЙрдХрд┐рдВрдЧ (рдкреЗрд░рд┐рдлреЗрд░рд▓ рдХреНрд▓реЙрдХ рд╕рдХреНрд╖рдо рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕) рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдиреЛрдВрджрдгреАрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдкреНрд░рдердо, RCC рдЪрд╛ рдореВрд│ рдкрддреНрддрд╛ рд╢реЛрдзреВ, рддреЛ тАЬрдореЗрдорд░реА рдореЕрдктАЭ рдЪреНрдпрд╛ рдЕрдЧрджреА рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдЖрд╣реЗ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

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

рдЖрдгрд┐ рдирдВрддрд░ рдПрдХрддрд░ рддреНрдпрд╛ рджреБрд╡реНрдпрд╛рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рд╛ рдЬрд┐рдереЗ рддреБрдореНрд╣реА рдкреНрд▓реЗрдЯрдордзреНрдпреЗ рдХрд╛рд╣реАрддрд░реА рд╢реЛрдзрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддрд╛, рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рдЪрд╛рдВрдЧрд▓реЗ, рдмрджреНрджрд▓рдЪреНрдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдВрдордзреАрд▓ рд╕рдХреНрд╖рдо рдиреЛрдВрджрдгреАрдЪреНрдпрд╛ рд╡рд░реНрдгрдирд╛рдВрдордзреВрди рдЬрд╛. рдиреЛрдВрджрдгреА рд╕рдХреНрд╖рдо рдХрд░рд╛. рдЬрд┐рдереЗ рдЖрдореНрд╣рд╛рд▓рд╛ RCC_APB1ENR рдЖрдгрд┐ RCC_APB2ENR рдорд┐рд│реЗрд▓:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

рдЖрдгрд┐ рддреНрдпрд╛рдиреБрд╕рд╛рд░, рддреНрдпрд╛рдордзреНрдпреЗ рдмрд┐рдЯреНрд╕ рдЕрд╕рддрд╛рдд рдЬреНрдпрд╛рдд SPI2, IOPB (I/O рдкреЛрд░реНрдЯ B) рдЖрдгрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрдВрдХреНрд╢рдиреНрд╕ (AFIO) рдЪреНрдпрд╛ рдХреНрд▓реЙрдХрд┐рдВрдЧрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реЛрддреЛ.

#define _APB2ENR 0x18
#define _APB1ENR 0x1C

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

//╨▓╨║╨╗╤О╤З╨░╨╡╨╝ ╤В╨░╨║╤В╨╕╤А╨╛╨▓╨░╨╜╨╕╨╡ ╨┐╨╛╤А╤В╨░ B ╨╕ ╨░╨╗╤М╤В. ╤Д╤Г╨╜╨║╤Ж╨╕╨╣
_RCC_(_APB2ENR) |= IOPBEN | AFIOEN;

//╨▓╨║╨╗╤О╤З╨░╨╡╨╝  ╤В╨░╨║╤В╨╕╤А╨╛╨▓╨░╨╜╨╕╨╡ SPI2
_RCC_(_APB1ENR) |= SPI2EN;

рдЕрдВрддрд┐рдо рдХреЛрдб рдЖрдврд│реВ рд╢рдХрддреЛ рдпреЗрдереЗ.

рддреБрдореНрд╣рд╛рд▓рд╛ рдЪрд╛рдЪрдгреА рдХрд░рдгреНрдпрд╛рдЪреА рд╕рдВрдзреА рдЖрдгрд┐ рдЗрдЪреНрдЫрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, DM634 рдпрд╛рдкреНрд░рдорд╛рдгреЗ рдХрдиреЗрдХреНрдЯ рдХрд░рд╛: DAI рддреЗ PB15, DCK рддреЗ PB13, LAT рддреЗ PB14. рдЖрдореНрд╣реА рдбреНрд░рд╛рдпрд╡реНрд╣рд░рд▓рд╛ 5 рд╡реНрд╣реЛрд▓реНрдЯреНрд╕рдкрд╛рд╕реВрди рдкреЙрд╡рд░ рдХрд░рддреЛ, рдЧреНрд░рд╛рдЙрдВрдб рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕ рд╡рд┐рд╕рд░реВ рдирдХрд╛.

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

STM8 PWM

STM8 рд╡рд░ PWM

рдЬреЗрд╡реНрд╣рд╛ рдореА рдлрдХреНрдд рдпрд╛ рд▓реЗрдЦрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрдЦрдд рд╣реЛрддреЛ, рддреЗрд╡реНрд╣рд╛ рдореА рдард░рд╡рд▓реЗ рдХреА, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди, рдХреЗрд╡рд│ рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдкрд░реВрди рдЕрдкрд░рд┐рдЪрд┐рдд рдЪрд┐рдкрдЪреА рдХрд╛рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдорд╛рд╕реНрдЯрд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рд╛, рдЬреЗрдгреЗрдХрд░реВрди рдореА рдмреВрдЯ рдирд╕рд▓реЗрд▓реНрдпрд╛ рд╢реВрдореЗрдХрд░рд╕рд╣ рд╕рдорд╛рдкреНрдд рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА. рдПрд╕рдЯреАрдПрдо 8 рдпрд╛ рднреВрдорд┐рдХреЗрд╕рд╛рдареА рдЖрджрд░реНрд╢ рд╣реЛрддрд╛: рдкреНрд░рдердо, рдорд╛рдЭреНрдпрд╛рдХрдбреЗ рдПрд╕рдЯреАрдПрдо 8 рдПрд╕ 103 рд╕рд╣ рджреЛрди рдЪрд┐рдиреА рдмреЛрд░реНрдб рд╣реЛрддреЗ рдЖрдгрд┐ рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рддреЗ рдлрд╛рд░рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╛рд╣реА рдЖрдгрд┐ рдореНрд╣рдгреВрдирдЪ рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░ рд╡рд╛рдЪрдгреНрдпрд╛рдЪрд╛ рдЖрдгрд┐ рддреНрдпрд╛рд╡рд░ рдЙрдкрд╛рдп рд╢реЛрдзрдгреНрдпрд╛рдЪрд╛ рдореЛрд╣ рдпрд╛ рд╕рдорд╛рдзрд╛рдирд╛рдВрдЪреНрдпрд╛ рдЕрднрд╛рд╡рд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ.

рдЪрд┐рдк рджреЗрдЦреАрд▓ рдЖрд╣реЗ рдорд╛рд╣рд┐рддреА рдкрддреНрд░рдХ ╨╕ рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрд┐рдХрд╛ RM0016, рдкрд╣рд┐рд▓реНрдпрд╛рдордзреНрдпреЗ рдкрд┐рдирдЖрдЙрдЯ рдЖрдгрд┐ рдиреЛрдВрджрдгреА рдкрддреНрддреЗ рдЖрд╣реЗрдд, рджреБрд╕рд▒реНрдпрд╛рдордзреНрдпреЗ - рдЗрддрд░ рд╕рд░реНрд╡ рдХрд╛рд╣реА. STM8 рдПрдХ рднрдпрд╛рдирдХ IDE рдордзреНрдпреЗ C рдордзреНрдпреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗрд▓реЗ рдЖрд╣реЗ рдПрд╕рдЯреА рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рдбреЗрд╡реНрд╣рд▓рдк рдХрд░рд╛.

рдХреНрд▓реЙрдХрд┐рдВрдЧ рдЖрдгрд┐ I/O

рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, STM8 2 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЭрдЪреНрдпрд╛ рд╡рд╛рд░рдВрд╡рд╛рд░рддреЗрд╡рд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ, рд╣реЗ рддреНрд╡рд░рд┐рдд рджреБрд░реБрд╕реНрдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
HSI (рд╣рд╛рдп рд╕реНрдкреАрдб рдЕрдВрддрд░реНрдЧрдд) рдШрдбреНрдпрд╛рд│
рдПрдЪрдПрд╕рдЖрдп рдШрдбреНрдпрд╛рд│ рд╕рд┐рдЧреНрдирд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рд╡рд┐рднрд╛рдЬрдХ (16 рддреЗ 1) рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЕрдВрддрд░реНрдЧрдд 8 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЭ рдЖрд░рд╕реА рдСрд╕рд┐рд▓реЗрдЯрд░рдордзреВрди рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рд╣реЗ рдХреНрд▓реЙрдХ рдбрд┐рд╡реНрд╣рд╛рдпрдбрд░ рд░рдЬрд┐рд╕реНрдЯрд░ (CLK_CKDIVR) рдордзреНрдпреЗ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ.
рдЯреАрдк: рд╕реБрд░рд╡рд╛рддреАрд▓рд╛, рдШрдбреНрдпрд╛рд│ рд╕рд┐рдЧреНрдирд▓рдЪрд╛ рдЕрдЧреНрд░рдЧрдгреНрдп рд╕реНрддреНрд░реЛрдд рдореНрд╣рдгреВрди 8 рдЪрд╛ рд╡рд┐рднрд╛рдЬрдХ рдЕрд╕рд▓реЗрд▓рд╛ HSI RC рдСрд╕рд┐рд▓реЗрдЯрд░ рдирд┐рд╡рдбрд▓рд╛ рдЬрд╛рддреЛ.

рдЖрдореНрд╣рд╛рд▓рд╛ рдбреЗрдЯрд╛рд╢реАрдЯрдордзреНрдпреЗ рд░рдЬрд┐рд╕реНрдЯрд░рдЪрд╛ рдкрддреНрддрд╛, рд░реЗрдлрдореЕрдирдордзреАрд▓ рд╡рд░реНрдгрди рд╕рд╛рдкрдбрддреЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рдкрд╛рд╣рддреЛ рдХреА рд░рдЬрд┐рд╕реНрдЯрд░ рд╕рд╛рдл рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

#define CLK_CKDIVR *(volatile uint8_t *)0x0050C6

CLK_CKDIVR &= ~(0x18);

рдЖрдкрдг PWM рдЪрд╛рд▓рд╡рдгрд╛рд░ рдЖрд╣реЛрдд рдЖрдгрд┐ LEDs рдЬреЛрдбрдгрд╛рд░ рдЖрд╣реЛрдд, рдЪрд▓рд╛ рдкрд┐рдирдЖрдЙрдЯ рдкрд╛рд╣реВ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

рдЪрд┐рдк рд▓рд╣рд╛рди рдЖрд╣реЗ, рддреНрдпрд╛рдЪ рдкрд┐рдирд╡рд░ рдЕрдиреЗрдХ рдлрдВрдХреНрд╢рдиреНрд╕ рдирд┐рд▓рдВрдмрд┐рдд рдЖрд╣реЗрдд. рдЪреМрд░рд╕ рдХрдВрд╕рд╛рдд рдЬреЗ рдЖрд╣реЗ рддреЗ "рдкрд░реНрдпрд╛рдпреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛" рдЖрд╣реЗ, рддреЗ "рдкрд░реНрдпрд╛рдп рдмрд╛рдЗрдЯреНрд╕" рджреНрд╡рд╛рд░реЗ рд╕реНрд╡рд┐рдЪ рдХреЗрд▓реЗ рдЖрд╣реЗ (рдкрд░реНрдпрд╛рдп рдмрд╛рдЗрдЯреНрд╕) тАУ Atmega fuses рд╕рд╛рд░рдЦреЗ рдХрд╛рд╣реАрддрд░реА. рддреБрдореНрд╣реА рддреНрдпрд╛рдВрдЪреА рдореВрд▓реНрдпреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХрд▓реА рдмрджрд▓реВ рд╢рдХрддрд╛, рдкрд░рдВрддреБ рддреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА, рдХрд╛рд░рдг рдирд╡реАрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд░реАрдмреВрдЯ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░рдЪ рд╕рдХреНрд░рд┐рдп рдХреЗрд▓реА рдЬрд╛рддреЗ. рдПрд╕рдЯреА рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ (рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рдбреЗрд╡реНрд╣рд▓рдкрд╕рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗрд▓реЗ) рд╡рд╛рдкрд░рдгреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ, рдЬреЗ рд╣реЗ рдмрд╛рдЗрдЯреНрд╕ рдмрджрд▓реВ рд╢рдХрддрд╛рдд. рдкрд┐рдирдЖрдЙрдЯ рджрд░реНрд╢рд╡рд┐рддреЗ рдХреА рдкрд╣рд┐рд▓реНрдпрд╛ рдЯрд╛рдЗрдорд░рдЪреЗ CH1 рдЖрдгрд┐ CH2 рдкрд┐рди рдЪреМрдХреЛрдиреА рдХрдВрд╕рд╛рдд рд▓рдкрд▓реЗрд▓реЗ рдЖрд╣реЗрдд; STVP рдордзреНрдпреЗ AFR1 рдЖрдгрд┐ AFR0 рдмрд┐рдЯреНрд╕ рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ рджреБрд╕рд░рд╛ рджреБрд╕рд░рд╛ рдЯрд╛рдЗрдорд░рдЪреЗ CH1 рдЖрдЙрдЯрдкреБрдЯ PD4 рд╡рд░реВрди PC5 рдордзреНрдпреЗ рджреЗрдЦреАрд▓ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░реЗрд▓.

рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, 6 рдкрд┐рди LEDs рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреАрд▓: PC6, PC7 рдЖрдгрд┐ PC3 рдкрд╣рд┐рд▓реНрдпрд╛ рдЯрд╛рдЗрдорд░рд╕рд╛рдареА, PC5, PD3 рдЖрдгрд┐ PA3 рджреБрд╕рд▒реНрдпрд╛рд╕рд╛рдареА.

STM8 рд╡рд░ рд╕реНрд╡рддрдГ I/O рдкрд┐рди рд╕реЗрдЯ рдХрд░рдгреЗ STM32 рдкреЗрдХреНрд╖рд╛ рд╕реЛрдкреЗ рдЖрдгрд┐ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рдЖрд╣реЗ:

  • Atmega DDR рдбреЗрдЯрд╛ рджрд┐рд╢рд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрд╛рд╕реВрди рдкрд░рд┐рдЪрд┐рдд (рдбреЗрдЯрд╛ рдбрд╛рдпрд░реЗрдХреНрд╢рди рд░рдЬрд┐рд╕реНрдЯрд░): 1 = рдЖрдЙрдЯрдкреБрдЯ;
  • рдкреНрд░рдердо рдирд┐рдпрдВрддреНрд░рдг рд░рдЬрд┐рд╕реНрдЯрд░ CR1, рдЬреЗрд╡реНрд╣рд╛ рдЖрдЙрдЯрдкреБрдЯ, рдкреБрд╢-рдкреБрд▓ рдореЛрдб (1) рдХрд┐рдВрд╡рд╛ рдУрдкрди рдбреНрд░реЗрди (0) рд╕реЗрдЯ рдХрд░рддреЗ; рдореА рдХреЕрдереЛрдбреНрд╕рд╕рд╣ LEDs рдЪрд┐рдкрд╢реА рдЬреЛрдбрд▓реНрдпрд╛рдореБрд│реЗ, рдореА рдпреЗрдереЗ рд╢реВрдиреНрдп рд╕реЛрдбрддреЛ;
  • рджреБрд╕рд░реЗ рдХрдВрдЯреНрд░реЛрд▓ рд░рдЬрд┐рд╕реНрдЯрд░ 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 рд╕реЗрдЯрд┐рдВрдЧ

рдкреНрд░рдердо, рдЕрдЯреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реВрдпрд╛:

  • рдкреАрдбрдмреНрд▓реНрдпреВрдПрдо рдлреНрд░рд┐рдХреНрд╡реЗрдиреНрд╕реА - рд╡рд╛рд░рдВрд╡рд╛рд░рддрд╛ рдЬреНрдпрд╛рд╕рд╣ рдЯрд╛рдЗрдорд░ рдЯрд┐рдХрддреЛ;
  • рдСрдЯреЛ-рд░реАрд▓реЛрдб, AR - рдСрдЯреЛрд▓реЛрдб рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдореВрд▓реНрдп рдЬреНрдпрд╛рдкрд░реНрдпрдВрдд рдЯрд╛рдЗрдорд░ рдореЛрдЬреЗрд▓ (рдкрд▓реНрд╕ рдХрд╛рд▓рд╛рд╡рдзреА);
  • рдЕрдкрдбреЗрдЯ рдЗрд╡реНрд╣реЗрдВрдЯ, UEV - рдЯрд╛рдЗрдорд░рдиреЗ рдПрдЖрд░рдордзреНрдпреЗ рдореЛрдЬрд▓реЗ рдЬрд╛рддреЗ рддреЗрд╡реНрд╣рд╛ рдШрдбрдгрд╛рд░реА рдШрдЯрдирд╛;
  • PWM рдбреНрдпреВрдЯреА рд╕рд╛рдпрдХрд▓ - PWM рдбреНрдпреВрдЯреА рд╕рд╛рдпрдХрд▓, рдЬреНрдпрд╛рд▓рд╛ "рдбреНрдпреВрдЯреА рдлреЕрдХреНрдЯрд░" рдореНрд╣рдгрддрд╛рдд;
  • рдореВрд▓реНрдп рдХреЕрдкреНрдЪрд░/рддреБрд▓рдирд╛ - рдХреЕрдкреНрдЪрд░/рддреБрд▓рдиреЗрд╕рд╛рдареА рдореВрд▓реНрдп, рдЬреНрдпрд╛рд╡рд░ рдЯрд╛рдЗрдорд░рдиреЗ рдореЛрдЬрд▓реЗ рдЖрд╣реЗ рдХрд╛рд╣реАрддрд░реА рдХрд░реЗрд▓ (PWM рдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рддреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рдЙрд▓рдЯрддреЗ);
  • рдкреНрд░реАрд▓реЛрдб рдореВрд▓реНрдп - рдкреНрд░реАрд▓реЛрдб рдХреЗрд▓реЗрд▓реЗ рдореВрд▓реНрдп. рдореВрд▓реНрдпрд╛рдЪреА рддреБрд▓рдирд╛ рдХрд░рд╛ рдЯрд╛рдЗрдорд░ рдЯрд┐рдХрдд рдЕрд╕рддрд╛рдирд╛ рдмрджрд▓реВ рд╢рдХрдд рдирд╛рд╣реА, рдЕрдиреНрдпрдерд╛ PWM рд╕рд╛рдпрдХрд▓ рдЦрдВрдбрд┐рдд рд╣реЛрдИрд▓. рдореНрд╣рдгреВрди, рдирд╡реАрди рдкреНрд░рд╕рд╛рд░рд┐рдд рдореВрд▓реНрдпреЗ рдмрдлрд░рдордзреНрдпреЗ рдареЗрд╡рд▓реА рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдЬреЗрд╡реНрд╣рд╛ рдЯрд╛рдЗрдорд░ рддреНрдпрд╛рдЪреНрдпрд╛ рдХрд╛рдЙрдВрдЯрдбрд╛рдЙрдирдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдкреЛрд╣реЛрдЪрддреЛ рдЖрдгрд┐ рд░реАрд╕реЗрдЯ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рддреЗрд╡реНрд╣рд╛ рдмрд╛рд╣реЗрд░ рдХрд╛рдврд▓рд╛ рдЬрд╛рддреЛ;
  • рдХрд╛рда-рд╕рдВрд░реЗрдЦрд┐рдд ╨╕ рдордзреНрдпрднрд╛рдЧреА рд╕рдВрд░реЗрдЦрд┐рдд рдореЛрдб - рд╕реАрдореЗрд╡рд░ рдЖрдгрд┐ рдордзреНрдпрднрд╛рдЧреА рд╕рдВрд░реЗрдЦрди, Atmel рдЪреНрдпрд╛ рд╕рдорд╛рди рд╡реЗрдЧрд╡рд╛рди PWM ╨╕ рдлреЗрдЬ-рдпреЛрдЧреНрдп PWM.
  • OCiREF, рдЖрдЙрдЯрдкреБрдЯ рддреБрд▓рдирд╛ рд╕рдВрджрд░реНрдн рд╕рд┐рдЧреНрдирд▓ - рд╕рдВрджрд░реНрдн рдЖрдЙрдЯрдкреБрдЯ рд╕рд┐рдЧреНрдирд▓, рдЦрд░рдВ рддрд░, PWM рдореЛрдбрдордзреАрд▓ рд╕рдВрдмрдВрдзрд┐рдд рдкрд┐рдирд╡рд░ рдХрд╛рдп рджрд┐рд╕рддреЗ.

рдкрд┐рдирдЖрдЙрдЯрд╡рд░реВрди рдЖрдзреАрдЪ рд╕реНрдкрд╖реНрдЯ рдХреЗрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рджреЛрди рдЯрд╛рдпрдорд░рдордзреНрдпреЗ PWM рдХреНрд╖рдорддрд╛ рдЖрд╣реЗрдд - рдкрд╣рд┐рд▓рд╛ рдЖрдгрд┐ рджреБрд╕рд░рд╛. рджреЛрдиреНрд╣реА 16-рдмрд┐рдЯ рдЖрд╣реЗрдд, рдкрд╣рд┐рд▓реНрдпрд╛рдордзреНрдпреЗ рдмрд░реАрдЪ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЖрд╣реЗрдд (рд╡рд┐рд╢реЗрд╖рддрдГ, рддреЗ рд╡рд░ рдЖрдгрд┐ рдЦрд╛рд▓реА рджреЛрдиреНрд╣реА рдореЛрдЬреВ рд╢рдХрддрд╛рдд). рдЖрдореНрд╣рд╛рд▓рд╛ рджреЛрдШрд╛рдВрдиреАрд╣реА рд╕рдорд╛рди рд░реАрддреАрдиреЗ рдХрд╛рдо рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдореА рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдЧрд░реАрдм рджреБрд╕рд░реНтАНрдпрд╛рдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛, рдЬреЗрдгреЗрдХрд░реВрди рддреЗрдереЗ рдирд╕рд▓реЗрд▓реА рдПрдЦрд╛рджреА рдЧреЛрд╖реНрдЯ рдЪреБрдХреВрдирд╣реА рд╡рд╛рдкрд░реВ рдирдпреЗ. рдХрд╛рд╣реА рд╕рдорд╕реНрдпрд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрд┐рдХрд╛рдордзреАрд▓ рд╕рд░реНрд╡ рдЯрд╛рдЗрдорд░рдЪреНрдпрд╛ PWM рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рд╡рд░реНрдгрди рдкрд╣рд┐рд▓реНрдпрд╛ рдЯрд╛рдЗрдорд░ (17.5.7 PWM рдореЛрдб) рдмрджреНрджрд▓рдЪреНрдпрд╛ рдЕрдзреНрдпрд╛рдпрд╛рдд рдЖрд╣реЗ, рддреНрдпрд╛рдореБрд│реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рдВрдкреВрд░реНрдг рджрд╕реНрддрдРрд╡рдЬрд╛рдд рдиреЗрд╣рдореА рдорд╛рдЧреЗ-рдкреБрдвреЗ рдЬрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓.

рдПрд╕рдЯреАрдПрдо 8 рд╡рд░реАрд▓ рдкреАрдбрдмреНрд▓реНрдпреВрдПрдордЪрд╛ рдПрдЯрдореЗрдЧрд╛рд╡рд░реАрд▓ рдкреАрдбрдмреНрд▓реНрдпреВрдПрдордкреЗрдХреНрд╖рд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдлрд╛рдпрджрд╛ рдЖрд╣реЗ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рд╕реАрдорд╛ рд╕рдВрд░реЗрдЦрд┐рдд PWM
рдЦрд╛рд▓рдкрд╛рд╕реВрди рд╡рд░рдкрд░реНрдпрдВрдд рдЦрд╛рддреЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди
TIM_CR1 рд░рдЬрд┐рд╕реНрдЯрд░рдордзреАрд▓ DIR рдмрд┐рдЯ рд╕рд╛рдл рдХреЗрд▓реНрдпрд╛рд╕ рддрд│рд╛рд╢реА рдореЛрдЬрдгреА рд╕рдХреНрд░рд┐рдп рдЕрд╕рддреЗ
рдЙрджрд╛рд╣рд░рдг:
рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдердо PWM рдореЛрдб рд╡рд╛рдкрд░рддреЗ. PWM рд╕рдВрджрд░реНрдн рд╕рд┐рдЧреНрдирд▓ OCiREF рдЬреЛрдкрд░реНрдпрдВрдд TIM1_CNT < TIM1_CCRi рдкрд░реНрдпрдВрдд рдЙрдЪреНрдЪ рдзрд░рд▓рд╛ рдЬрд╛рддреЛ. рдирд╛рд╣реАрддрд░ рдЦрд╛рд▓рдЪреА рдкрд╛рддрд│реА рд▓рд╛рдЧрддреЗ. TIM1_CCRi рд░рдЬрд┐рд╕реНрдЯрд░рдордзреАрд▓ рддреБрд▓рдирд╛ рдореВрд▓реНрдп рдСрдЯреЛрд▓реЛрдб рдореВрд▓реНрдп (TIM1_ARR рд░рдЬрд┐рд╕реНрдЯрд░) рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЕрд╕рд▓реНрдпрд╛рд╕, OCiREF рд╕рд┐рдЧреНрдирд▓ 1 рд╡рд░ рдзрд░рд▓рд╛ рдЬрд╛рддреЛ. рддреБрд▓рдирд╛ рдореВрд▓реНрдп 0 рдЕрд╕рд▓реНрдпрд╛рд╕, OCiREF рд╢реВрдиреНрдпрд╛рд╡рд░ рдзрд░рд▓реЗ рдЬрд╛рддреЗ....

рджрд░рдореНрдпрд╛рди STM8 рдЯрд╛рдЗрдорд░ рдШрдЯрдирд╛ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рд╛ рдкреНрд░рдердо рддрдкрд╛рд╕рддреЛ рдореВрд▓реНрдпрд╛рдЪреА рддреБрд▓рдирд╛ рдХрд░рд╛, рдЖрдгрд┐ рддреНрдпрд╛рдирдВрддрд░рдЪ рдПрдХ рд╕рдВрджрд░реНрдн рд╕рд┐рдЧреНрдирд▓ рддрдпрд╛рд░ рдХрд░рддреЗ. Atmega рдЪрд╛ рдЯрд╛рдЗрдорд░ рдкреНрд░рдердо рд╕реНрдХреНрд░реВ рдХрд░рддреЛ рдЖрдгрд┐ рдирдВрддрд░ рддреБрд▓рдирд╛ рдХрд░рддреЛ, рдкрд░рд┐рдгрд╛рдореА compare value == 0 рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рд╕реБрдИ рдЖрд╣реЗ, рдЬреНрдпрд╛рдЪрд╛ рдХрд╕рд╛ рддрд░реА рд╕рд╛рдордирд╛ рдХреЗрд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреНрд░реЛрдЧреНрд░рд╛рдореЕрдЯрд┐рдХрд░рд┐рддреНрдпрд╛ рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░ рдЙрд▓рдЯ рдХрд░реВрди).

рддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ: 8-рдмрд┐рдЯ PWM (AR == 255), рддрд│рд╛рдкрд╛рд╕реВрди рд╡рд░рдкрд░реНрдпрдВрдд рдореЛрдЬрдгреЗ, рд╕реАрдореЗрд╡рд░ рд╕рдВрд░реЗрдЦрди. рд▓рд╛рдЗрдЯ рдмрд▓реНрдм рдЪрд┐рдкрд╢реА рдХреЕрдереЛрдбреНрд╕рджреНрд╡рд╛рд░реЗ рдЬреЛрдбрд▓реЗрд▓реЗ рдЕрд╕рд▓реНрдпрд╛рдиреЗ, PWM рдиреЗ 0 (LED рдЪрд╛рд▓реВ) рдкрд░реНрдпрдВрдд рдЖрдЙрдЯрдкреБрдЯ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдореВрд▓реНрдпрд╛рдЪреА рддреБрд▓рдирд╛ рдХрд░рд╛ рдЖрдгрд┐ 1 рдирдВрддрд░.

рдЖрдореНрд╣реА рдЖрдзреАрдЪ рдХрд╛рд╣реА рдмрджреНрджрд▓ рд╡рд╛рдЪрд▓реЗ рдЖрд╣реЗ рдкреАрдбрдмреНрд▓реНрдпреВрдПрдо рдореЛрдб, рдореНрд╣рдгреВрди рдЖрдореНрд╣рд╛рд▓рд╛ рдпрд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢рд╛рд╕рд╛рдареА рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрд┐рдХрд╛ рдордзреНрдпреЗ рд╢реЛрдзреВрди рджреБрд╕рд▒реНрдпрд╛ рдЯрд╛рдЗрдорд░рдЪреЗ рдЖрд╡рд╢реНрдпрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕рд╛рдкрдбрддреЗ (18.6.8 - TIMx_CCMR1):

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
110: рдкрд╣рд┐рд▓рд╛ PWM рдореЛрдб тАУ рддрд│рд╛рдкрд╛рд╕реВрди рд╡рд░рдкрд░реНрдпрдВрдд рдореЛрдЬрддрд╛рдирд╛, TIMx_CNT < TIMx_CCR1 рдЕрд╕рддрд╛рдирд╛ рдкрд╣рд┐рд▓реЗ рдЪреЕрдирд▓ рд╕рдХреНрд░рд┐рдп рдЕрд╕рддреЗ. рдЕрдиреНрдпрдерд╛, рдкреНрд░рдердо рдЪреЕрдиреЗрд▓ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЖрд╣реЗ. [рдкреБрдвреЗ рджрд╕реНрддрдРрд╡рдЬрд╛рдд рдЯрд╛рдЗрдорд░ 1 рд╡рд░реВрди рдПрдХ рдЪреБрдХреАрдЪреА рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдЖрд╣реЗ] 111: рджреБрд╕рд░рд╛ PWM рдореЛрдб тАУ рддрд│рд╛рдкрд╛рд╕реВрди рд╡рд░рдкрд░реНрдпрдВрдд рдореЛрдЬрддрд╛рдирд╛, рдкрд╣рд┐рд▓рд╛ рдЪреЕрдирд▓ TIMx_CNT < TIMx_CCR1 рдЕрд╕рддрд╛рдирд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЕрд╕рддреЛ. рдЕрдиреНрдпрдерд╛, рдкреНрд░рдердо рдЪреЕрдиреЗрд▓ рд╕рдХреНрд░рд┐рдп рдЖрд╣реЗ.

LEDs MK рд╢реА рдХреЕрдереЛрдбреНрд╕ рджреНрд╡рд╛рд░реЗ рдЬреЛрдбрд▓реЗрд▓реЗ рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рджреБрд╕рд░рд╛ рдореЛрдб рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрдиреБрдХреВрд▓ рдЖрд╣реЗ (рдкрд╣рд┐рд▓рд╛ рджреЗрдЦреАрд▓, рдкрд░рдВрддреБ рдЖрдореНрд╣рд╛рд▓рд╛ рддреЗ рдЕрджреНрдпрд╛рдк рдорд╛рд╣рд┐рдд рдирд╛рд╣реА).

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдмрд┐рдЯ 3 OC1PE: рдкрд┐рди 1 рдкреНрд░реАрд▓реЛрдб рд╕рдХреНрд╖рдо рдХрд░рд╛
0: TIMx_CCR1 рд╡рд░ рдкреНрд░реАрд▓реЛрдб рдиреЛрдВрджрдгреА рдЕрдХреНрд╖рдо рдХреЗрд▓реА рдЖрд╣реЗ. рддреБрдореНрд╣реА TIMx_CCR1 рд╡рд░ рдХрдзреАрд╣реА рд▓рд┐рд╣реВ рд╢рдХрддрд╛. рдирд╡реАрди рдореВрд▓реНрдп рддреНрд╡рд░рд┐рдд рдХрд╛рд░реНрдп рдХрд░рддреЗ.
1: TIMx_CCR1 рд╡рд░ рдкреНрд░реАрд▓реЛрдб рдиреЛрдВрджрдгреА рд╕рдХреНрд╖рдо рдХреЗрд▓реА рдЖрд╣реЗ. рдкреНрд░реАрд▓реЛрдб рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рд╡рд╛рдЪрд╛/рд▓реЗрдЦрди рдСрдкрд░реЗрд╢рдиреНрд╕ рдНрдХреНрд╕реЗрд╕ рдХрд░рд╛. рдкреНрд░реАрд▓реЛрдб рдХреЗрд▓реЗрд▓реЗ рдореВрд▓реНрдп TIMx_CCR1 рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдбреЗрдЯ рдЗрд╡реНрд╣реЗрдВрдЯ рджрд░рдореНрдпрд╛рди рд╢реЕрдбреЛ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рд▓реЛрдб рдХреЗрд▓реЗ рдЬрд╛рддреЗ.
*рдЯреАрдк: PWM рдореЛрдб рдпреЛрдЧреНрдпрд░рд┐рддреАрдиреЗ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдкреНрд░реАрд▓реЛрдб рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕ рд╕рдХреНрд╖рдо рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╕рд┐рдВрдЧрд▓ рд╕рд┐рдЧреНрдирд▓ рдореЛрдбрдордзреНрдпреЗ рд╣реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА (OPM рдмрд┐рдЯ TIMx_CR1 рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рд╕реЗрдЯ рдХреЗрд▓реЗрд▓рд╛ рдЖрд╣реЗ).

рдареАрдХ рдЖрд╣реЗ, рджреБрд╕рд▒реНрдпрд╛ рдЯрд╛рдЗрдорд░рдЪреНрдпрд╛ рддреАрди рдЪреЕрдиреЗрд▓рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реА рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯ рдЪрд╛рд▓реВ рдХрд░реВрдпрд╛:

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

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

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

рдПрдЖрд░рдордзреНрдпреЗ рджреЛрди рдЖрда-рдмрд┐рдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдЕрд╕рддрд╛рдд, рд╕рд░реНрд╡рдХрд╛рд╣реА рд╕реЛрдкреЗ рдЖрд╣реЗ:

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

TIM2_ARRH = 0;
TIM2_ARRL = 255;

рджреБрд╕рд░рд╛ рдЯрд╛рдЗрдорд░ рдлрдХреНрдд рддрд│рд╛рдкрд╛рд╕реВрди рд╡рд░рдкрд░реНрдпрдВрдд рдореЛрдЬреВ рд╢рдХрддреЛ, рд╕реАрдореЗрд╡рд░ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░реВ рд╢рдХрддреЛ, рдХрд╛рд╣реАрд╣реА рдмрджрд▓рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА. рдЪрд▓рд╛ рд╡рд╛рд░рдВрд╡рд╛рд░рддрд╛ рд╡рд┐рднрд╛рдЬрдХ рд╕реЗрдЯ рдХрд░реВ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, 256. рджреБрд╕рд▒реНрдпрд╛ рдЯрд╛рдЗрдорд░рд╕рд╛рдареА, рд╡рд┐рднрд╛рдЬрдХ TIM2_PSCR рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рд╕реЗрдЯ рдХреЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреА рд╢рдХреНрддреА рджреЛрди рдЖрд╣реЗ:

#define TIM2_PSCR  *(volatile uint8_t *)0x00530E

TIM2_PSCR = 8;

рдлрдХреНрдд рдирд┐рд╖реНрдХрд░реНрд╖ рдЖрдгрд┐ рджреБрд╕рд░рд╛ рдЯрд╛рдЗрдорд░ рдЪрд╛рд▓реВ рдХрд░рдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ. рдкрд╣рд┐рд▓реА рд╕рдорд╕реНрдпрд╛ рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕рджреНрд╡рд╛рд░реЗ рд╕реЛрдбрд╡рд▓реА рдЬрд╛рддреЗ рдХреЕрдкреНрдЪрд░/рддреБрд▓рдирд╛ рд╕рдХреНрд╖рдо рдХрд░рд╛: рддреЗрдереЗ рджреЛрди, рддреАрди рдЪреЕрдиреЗрд▓ рдЕрд╕рдордорд┐рддрдкрдгреЗ рд╡рд┐рдЦреБрд░рд▓реЗрд▓реЗ рдЖрд╣реЗрдд. рдпреЗрдереЗ рдЖрдкрдг рд╣реЗ рджреЗрдЦреАрд▓ рд╢рд┐рдХреВ рд╢рдХрддреЛ рдХреА рд╕рд┐рдЧреНрдирд▓рдЪреА рдзреНрд░реБрд╡реАрдпрддрд╛ рдмрджрд▓рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ, рдореНрд╣рдгрдЬреЗ. рддрддреНрд╡рддрдГ, PWM рдореЛрдб 1 рд╡рд╛рдкрд░рдгреЗ рд╢рдХреНрдп рд╣реЛрддреЗ. рдЖрдореНрд╣реА рд▓рд┐рд╣рд┐рддреЛ:

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

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

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

рдЖрдгрд┐ рд╢реЗрд╡рдЯреА, рдЖрдореНрд╣реА TIMx_CR1 рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рдЯрд╛рдЗрдорд░ рд╕реБрд░реВ рдХрд░рддреЛ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

#define TIM2_CR1   *(volatile uint8_t *)0x005300

TIM2_CR1 |= 1;

рдЪрд▓рд╛ AnalogWrite() рдЪреЗ рдПрдХ рд╕рд╛рдзреЗ рдЕреЕрдирд╛рд▓реЙрдЧ рд▓рд┐рд╣реВ, рдЬреЗ рддреБрд▓рдирд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдпреЗ рдЯрд╛рдЗрдорд░рдордзреНрдпреЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░реЗрд▓. рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕рдирд╛ рдЕрдВрджрд╛рдЬрд╛рдиреБрд╕рд╛рд░ рдирд╛рд╡реЗ рджрд┐рд▓реА рдЬрд╛рддрд╛рдд рдиреЛрдВрджреА рдХреЕрдкреНрдЪрд░/рддреБрд▓рдирд╛ рдХрд░рд╛, рдкреНрд░рддреНрдпреЗрдХ рдЪреЕрдиреЗрд▓рд╕рд╛рдареА рддреНрдпрд╛рдкреИрдХреА рджреЛрди рдЖрд╣реЗрдд: TIM8_CCRxL рдордзреАрд▓ рд▓реЛ-рдСрд░реНрдбрд░ 2 рдмрд┐рдЯ рдЖрдгрд┐ TIM2_CCRxH рдордзреАрд▓ рдЙрдЪреНрдЪ-рдСрд░реНрдбрд░. рдЖрдореНрд╣реА 8-рдмрд┐рдЯ рдкреАрдбрдмреНрд▓реВрдПрдо рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рдореБрд│реЗ, рдлрдХреНрдд рдХрдореАрддрдХрдореА рд▓рдХреНрд╖рдгреАрдп рдмрд┐рдЯреНрд╕ рд▓рд┐рд╣рд┐рдгреЗ рдкреБрд░реЗрд╕реЗ рдЖрд╣реЗ:

#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 рдЪреНрдпрд╛ рдХрдорд╛рд▓ рдореВрд▓реНрдпрд╛рд╡рд░, рдПрдХрд╛ рдЯрд╛рдЗрдорд░ рд╕рд╛рдпрдХрд▓рд╕рд╛рдареА рд╕рд┐рдЧреНрдирд▓ рдЙрд▓рдЯрд▓реЗрд▓рд╛ рдЖрд╣реЗ). LEDs рд╕рд╛рдареА рд╣реЗ рдХрд╛рд╣реА рдлрд░рдХ рдкрдбрдд рдирд╛рд╣реА рдЖрдгрд┐ рд▓рдХреНрд╖ рджреЗрдгрд╛рд░рд╛ рд╡рд╛рдЪрдХ рдЖрдзреАрдЪ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡реВ рд╢рдХрддреЛ рдХреА рддреНрдпрд╛рдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд╕реЗ рдХрд░рд╛рд╡реЗ.

рджреБрд╕рд▒реНрдпрд╛ рдЯрд╛рдпрдорд░рд╡рд░реАрд▓ PWM рдХрд╛рд░реНрдп рдХрд░рддреЗ, рдЪрд▓рд╛ рдкрд╣рд┐рд▓реНрдпрд╛рдХрдбреЗ рдЬрд╛рдКрдпрд╛.

рдкрд╣рд┐рд▓реНрдпрд╛ рдЯрд╛рдЗрдорд░рдордзреНрдпреЗ рддреНрдпрд╛рдЪ рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕рдордзреНрдпреЗ рдЕрдЧрджреА рд╕рдорд╛рди рдмрд┐рдЯреНрд╕ рдЕрд╕рддрд╛рдд (рдЗрддрдХреЗрдЪ рдХреА рджреБрд╕рд▒реНрдпрд╛ рдЯрд╛рдпрдорд░рдордзреНрдпреЗ "рдЖрд░рдХреНрд╖рд┐рдд" рд░рд╛рд╣рд┐рд▓реЗрд▓реЗ рдмрд┐рдЯреНрд╕ рд╕рд░реНрд╡ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдкреНрд░рдЧрдд рдЧреЛрд╖реНрдЯреАрдВрд╕рд╛рдареА рдкрд╣рд┐рд▓реНрдпрд╛рдордзреНрдпреЗ рд╕рдХреНрд░рд┐рдпрдкрдгреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддрд╛рдд). рдореНрд╣рдгреВрди, рдбреЗрдЯрд╛рд╢реАрдЯрдордзреНрдпреЗ рд╕рдорд╛рди рдиреЛрдВрджрдгреАрдЪреЗ рдкрддреНрддреЗ рд╢реЛрдзрдгреЗ рдЖрдгрд┐ рдХреЛрдб рдХреЙрдкреА рдХрд░рдгреЗ рдкреБрд░реЗрд╕реЗ рдЖрд╣реЗ. рдмрд░рдВ, рд╡рд╛рд░рдВрд╡рд╛рд░рддрд╛ рд╡рд┐рднрд╛рдЬрдХрд╛рдЪреЗ рдореВрд▓реНрдп рдмрджрд▓рд╛, рдХрд╛рд░рдг... рдкрд╣рд┐рд▓реНрдпрд╛ рдЯрд╛рдЗрдорд░рд▓рд╛ рджреЛрди рдкреЙрд╡рд░ рдирд╛рд╣реА рддрд░ рджреЛрди рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ рдЕрдЪреВрдХ 16-рдмрд┐рдЯ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ Prescaler рдЙрдЪреНрдЪ ╨╕ рдХрдореА. рдЖрдореНрд╣реА рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд░рддреЛ рдЖрдгрд┐... рдкрд╣рд┐рд▓рд╛ рдЯрд╛рдЗрдорд░ рдХрд╛рдо рдХрд░рдд рдирд╛рд╣реА. рдХрд╛рдп рдЭрд▓рд╛?

рдЯрд╛рдЗрдорд░ 1 рдЪреНрдпрд╛ рдХрдВрдЯреНрд░реЛрд▓ рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕рдмрджреНрджрд▓ рд╕рдВрдкреВрд░реНрдг рд╡рд┐рднрд╛рдЧ рдкрд╛рд╣реВрдирдЪ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдЬрд┐рдереЗ рдЖрдореНрд╣реА рджреБрд╕рд░рд╛ рдЯрд╛рдЗрдорд░ рдирд╕рд▓реЗрд▓рд╛ рдПрдХ рд╢реЛрдзрддреЛ. рдЕрд╕рддреАрд▓ 17.7.30 рдмреНрд░реЗрдХ рд░рдЬрд┐рд╕реНрдЯрд░ (TIM1_BKR), рдЬрд┐рдереЗ рд╣рд╛ рдмрд┐рдЯ рдЖрд╣реЗ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рдореБрдЦреНрдп рдЖрдЙрдЯрдкреБрдЯ рд╕рдХреНрд╖рдо рдХрд░рд╛

#define TIM1_BKR   *(volatile uint8_t *)0x00526D

TIM1_BKR = (1<<7);

рдЖрддрд╛ рд╣реЗ рд╕рд░реНрд╡ рдирд┐рд╢реНрдЪрд┐рдд рдЖрд╣реЗ, рдХреЛрдб рддреЗрдереЗ.

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

STM8 рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕

STM8 рд╡рд░ рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдВрдЧ

рддрд┐рд╕рд░рд╛ рдорд┐рдиреА-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореНрд╣рдгрдЬреЗ рдЖрда RGB LEDs рджреБрд╕рд▒реНрдпрд╛ рдЯрд╛рдпрдорд░рд▓рд╛ PWM рдореЛрдбрдордзреНрдпреЗ рдЬреЛрдбрдгреЗ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реЗ рд░рдВрдЧ рджрд╛рдЦрд╡рдгреЗ. рд╣реЗ LED рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдВрдЧрдЪреНрдпрд╛ рд╕рдВрдХрд▓реНрдкрдиреЗрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗ, рдореНрд╣рдгрдЬреЗ рдЬрд░ рддреБрдореНрд╣реА LEDs рдЦреВрдк рд▓рд╡рдХрд░, рдЦреВрдк рд▓рд╡рдХрд░ рдЪрд╛рд▓реВ рдЖрдгрд┐ рдмрдВрдж рдХреЗрд▓реЗ рддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рддреЗ рд╕рддрдд рдЪрд╛рд▓реВ рдЕрд╕рддрд╛рдд (рджреГрд╖реНрдЯреАрдЪреА рджреГрдврддрд╛, рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕рдордЬ рдЬрдбрддреНрд╡). рдореА рдПрдХрджрд╛ рдХреЗрд▓реЗ Arduino рд╡рд░ рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА.

рдХрд╛рд░реНрдп рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЕрд╕реЗ рджрд┐рд╕рддреЗ:

  • рдкрд╣рд┐рд▓реНрдпрд╛ рдЖрд░рдЬреАрдмреА рдПрд▓рдИрдбреАрдЪрд╛ рдПрдиреЛрдб рдЬреЛрдбрд▓рд╛;
  • рдХреЕрдереЛрдбреНрд╕рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рд╕рд┐рдЧреНрдирд▓ рдкрд╛рдард╡реВрди рддреЗ рдкреЗрдЯрд╡рд╛;
  • PWM рд╕рд╛рдпрдХрд▓ рд╕рдВрдкреЗрдкрд░реНрдпрдВрдд рд╡рд╛рдЯ рдкрд╛рд╣рд┐рд▓реА;
  • рджреБрд╕рд▒реНрдпрд╛ рдЖрд░рдЬреАрдмреА рдПрд▓рдИрдбреАрдЪрд╛ рдПрдиреЛрдб рдЬреЛрдбрд▓рд╛;
  • рдкреЗрдЯрд╡рд▓реЗ...

рд╡рд┐рд╣реАрд░, рдЗ. рдЕрд░реНрдерд╛рдд, рд╕реБрдВрджрд░ рдСрдкрд░реЗрд╢рдирд╕рд╛рдареА рдПрдиреЛрдб рдЬреЛрдбрд▓реЗрд▓реЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ LED рддреНрдпрд╛рдЪ рд╡реЗрд│реА "рдкреНрд░рдЬреНрд╡рд▓рд┐рдд" рдЖрд╣реЗ. рдмрд░рдВ, рдХрд┐рдВрд╡рд╛ рдЬрд╡рд│рдЬрд╡рд│. рдХреЛрдгрддреНрдпрд╛рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдХреЛрдб рд▓рд┐рд╣рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓ рдЬреЛ рджреБрд╕рд░реНтАНрдпрд╛ рдЯрд╛рдЗрдорд░рдЪреНрдпрд╛ рддреАрди рдЪреЕрдиреЗрд▓рдордзреНрдпреЗ рдореВрд▓реНрдпреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрд▓, UEV рдкреЛрд╣реЛрдЪрд▓реНрдпрд╛рд╡рд░ рддреЗ рдмрджрд▓реЗрд▓ рдЖрдгрд┐ рддреНрдпрд╛рдЪ рд╡реЗрд│реА рд╕рдзреНрдпрд╛ рд╕рдХреНрд░рд┐рдп RGB LED рдмрджрд▓реЗрд▓.

рдПрд▓рдИрдбреА рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрдореНрд╣рд╛рд▓рд╛ "рд╡реНрд╣рд┐рдбрд┐рдУ рдореЗрдорд░реА" рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреВрди рдЗрдВрдЯрд░рдкреНрдЯ рд╣рдБрдбрд▓рд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрд▓. рд╣реЗ рдПрдХ рд╕рд╛рдзреЗ рдЕреЕрд░реЗ рдЖрд╣реЗ:

uint8_t colors[8][3];

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрд▓рдИрдбреАрдЪрд╛ рд░рдВрдЧ рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА, рдпрд╛ рдЕреЕрд░реЗрдордзреНрдпреЗ рдЖрд╡рд╢реНрдпрдХ рдореВрд▓реНрдпреЗ рд▓рд┐рд╣рд┐рдгреЗ рдкреБрд░реЗрд╕реЗ рдЕрд╕реЗрд▓. рдЖрдгрд┐ рд╕рдХреНрд░рд┐рдп рдПрд▓рдИрдбреАрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрд╕рд╛рдареА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕реЗрд▓

uint8_t cnt;

Demux

рдпреЛрдЧреНрдп рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдВрдЧрд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рдЪрд┐рддреНрд░рдкрдгреЗ, CD74HC238 рдбрд┐рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕рд░рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдбрд┐рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕рд░ - рдПрдХ рдЪрд┐рдк рдЬреА рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░рдордзреНрдпреЗ рдСрдкрд░реЗрдЯрд░рд▓рд╛ рд▓рд╛рдЧреВ рдХрд░рддреЗ <<. рддреАрди рдЗрдирдкреБрдЯ рдкрд┐рди (рдмрд┐рдЯреНрд╕ 0, 1 рдЖрдгрд┐ 2) рджреНрд╡рд╛рд░реЗ рдЖрдореНрд╣реА рддреНрдпрд╛рд▓рд╛ рддреАрди-рдмрд┐рдЯ рдХреНрд░рдорд╛рдВрдХ X рдлреАрдб рдХрд░рддреЛ рдЖрдгрд┐ рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдд рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреНрд░рдорд╛рдВрдХ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЛ (1<<X). рдЪрд┐рдкрдЪреЗ рдЙрд░реНрд╡рд░рд┐рдд рдЗрдирдкреБрдЯ рд╕рдВрдкреВрд░реНрдг рдбрд┐рдЭрд╛рдЗрди рдореЛрдЬрдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддрд╛рдд. рдЖрдореНрд╣рд╛рд▓рд╛ рд╣реА рдЪрд┐рдк рдХреЗрд╡рд│ рдорд╛рдпрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░рдЪреНрдпрд╛ рд╡реНрдпрд╛рдкрд▓реЗрд▓реНрдпрд╛ рдкрд┐рдирдЪреА рд╕рдВрдЦреНрдпрд╛ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареАрдЪ рдирд╛рд╣реА рддрд░ рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрд╕рд╛рдареА рджреЗрдЦреАрд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ - рдЬреЗрдгреЗрдХрд░реВрди рдЪреБрдХреВрди рд╢рдХреНрдпрддреЗрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдПрд▓рдИрдбреА рдЪрд╛рд▓реВ рд╣реЛрдК рдирдпреЗрдд рдЖрдгрд┐ MK рдЬрд│реВ рдирдпреЗ. рдЪрд┐рдкрдЪреА рдХрд┐рдВрдордд рдПрдХ рдкреИрд╕рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреА рдиреЗрд╣рдореА рддреБрдордЪреНрдпрд╛ рд╣реЛрдо рдореЗрдбрд┐рд╕рд┐рди рдХреЕрдмрд┐рдиреЗрдЯрдордзреНрдпреЗ рдареЗрд╡рд╛рд╡реА.

рдЖрдордЪреЗ CD74HC238 рдЗрдЪреНрдЫрд┐рдд рдПрд▓рдИрдбреАрдЪреНрдпрд╛ рдПрдиреЛрдбрд▓рд╛ рд╡реНрд╣реЛрд▓реНрдЯреЗрдЬ рдкреБрд░рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕реЗрд▓. рдкреВрд░реНрдг рд╡рд╛рдв рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕рдордзреНрдпреЗ, рддреЗ P-MOSFET рджреНрд╡рд╛рд░реЗ рд╕реНрддрдВрднрд╛рд▓рд╛ рд╡реНрд╣реЛрд▓реНрдЯреЗрдЬ рдкреБрд░рд╡реЗрд▓, рдкрд░рдВрддреБ рдпрд╛ рдбреЗрдореЛрдордзреНрдпреЗ рддреЗ рдереЗрдЯ рд╢рдХреНрдп рдЖрд╣реЗ, рдХрд╛рд░рдг рддреЗ 20 mA рдХрд╛рдврддреЗ, рддреНрдпрд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рдкреВрд░реНрдг рдХрдорд╛рд▓ рд░реЗрдЯрд┐рдВрдЧ рдбреЗрдЯрд╛рд╢реАрдЯрдордзреНрдпреЗ. рдкрд╛рд╕реВрди рдбреЗрдЯрд╛рд╢реАрдЯ CD74HC238 рдЖрдореНрд╣рд╛рд▓рд╛ рдкрд┐рдирдЖрдЙрдЯреНрд╕ рдЖрдгрд┐ рд╣реА рдлрд╕рд╡рдгреВрдХ рдкрддреНрд░рдХ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
H = рдЙрдЪреНрдЪ рд╡реНрд╣реЛрд▓реНрдЯреЗрдЬ рдкрд╛рддрд│реА, L = рдХрдореА рд╡реНрд╣реЛрд▓реНрдЯреЗрдЬ рдкрд╛рддрд│реА, X - рдХрд╛рд│рдЬреА рдХрд░реВ рдирдХрд╛

рдЖрдореНрд╣реА E2 рдЖрдгрд┐ E1 рд▓рд╛ рдЬрдорд┐рдиреАрд╡рд░, E3, A0, A1 рдЖрдгрд┐ A3 рд▓рд╛ STM5 рдЪреНрдпрд╛ PD3, PC4, PC5 рдЖрдгрд┐ PC8 рд▓рд╛ рдЬреЛрдбрддреЛ. рд╡рд░реАрд▓ рд╕рд╛рд░рдгреАрдордзреНрдпреЗ рдирд┐рдореНрди рдЖрдгрд┐ рдЙрдЪреНрдЪ рдкрд╛рддрд│реА рджреЛрдиреНрд╣реА рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрдореНрд╣реА рдпрд╛ рдкрд┐рди рдкреБрд╢-рдкреБрд▓ рдкрд┐рди рдореНрд╣рдгреВрди рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рддреЛ.

PWM

рджреБрд╕рд▒реНрдпрд╛ рдЯрд╛рдЗрдорд░рд╡рд░реАрд▓ PWM рдорд╛рдЧреАрд▓ рдХрдереЗрдкреНрд░рдорд╛рдгреЗрдЪ рджреЛрди рдлрд░рдХрд╛рдВрд╕рд╣ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЖрд╣реЗ:

рдкреНрд░рдердо, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╡реНрдпрддреНрдпрдп рдЪрд╛рд▓реВ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЗрд╡реНрд╣реЗрдВрдЯ рдЕрдкрдбреЗрдЯ рдХрд░рд╛ (UEV) рдЬреЗ рд╕рдХреНрд░рд┐рдп LED рдЯреЙрдЧрд▓ рдХрд░рдгрд╛рд░реЗ рдлрдВрдХреНрд╢рди рдХреЙрд▓ рдХрд░реЗрд▓. рд╣реЗ рдмрд┐рдЯ рдмрджрд▓реВрди рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЕрдкрдбреЗрдЯ рдЗрдВрдЯрд░рдкреНрдЯ рд╕рдХреНрд╖рдо рдХрд░рд╛ рд╕рд╛рдВрдЧрдгрд╛рд▒реНрдпрд╛ рдирд╛рд╡рд╛рд╕рд╣ рд░рдЬрд┐рд╕реНрдЯрд░рдордзреНрдпреЗ

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
рд╡реНрдпрддреНрдпрдп рд╕рдХреНрд╖рдо рдиреЛрдВрджрдгреА

#define TIM2_IER   *(volatile uint8_t *)0x005303

//enable interrupt
TIM2_IER = 1;

рджреБрд╕рд░рд╛ рдлрд░рдХ рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдВрдЧрдЪреНрдпрд╛ рдШрдЯрдиреЗрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ, рдЬрд╕реЗ рдХреА рднреБрддрд╛рдЯрдХреА - рдбрд╛рдпреЛрдбрдЪреА рдкрд░рдЬреАрд╡реА рдЪрдордХ. рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рд╣реЗ рджрд┐рд╕реВрди рдпреЗрддреЗ рдХреА рдЯрд╛рдЗрдорд░, рдпреВрдИрд╡реНрд╣реАрд╡рд░ рд╡реНрдпрддреНрдпрдп рдЖрдгрд▓реНрдпрд╛рдореБрд│реЗ, рдЯрд┐рдХ рдХрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡рддреЗ рдЖрдгрд┐ рдЯрд╛рдЗрдорд░рдиреЗ рдкрд┐рдирд╡рд░ рдХрд╛рд╣реАрддрд░реА рд▓рд┐рд╣рд┐рдгреЗ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдЗрдВрдЯрд░рдкреНрдЯ рд╣рдБрдбрд▓рд░рд▓рд╛ рдПрд▓рдИрдбреА рд╕реНрд╡рд┐рдЪ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡реЗрд│ рдирд╕рддреЛ. рдпрд╛рдЪрд╛ рд╕рд╛рдордирд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рддрд░реНрдХ рдЙрд▓рдЯреЗ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓ (0 = рдХрдорд╛рд▓ рдЪрдордХ, 255 = рдХрд╛рд╣реАрд╣реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╛рд╣реА) рдЖрдгрд┐ рдЕрддреНрдпрдВрдд рдХрд░реНрддрд╡реНрдп рдЪрдХреНрд░ рдореВрд▓реНрдпреЗ рдЯрд╛рд│рд╛рд╡реА рд▓рд╛рдЧрддреАрд▓. рддреНрдпрд╛. UEV рдирдВрддрд░ LEDs рдПрдХрд╛ PWM рд╕рд╛рдпрдХрд▓рд╕рд╛рдареА рдкреВрд░реНрдгрдкрдгреЗ рдмрд╛рд╣реЗрд░ рдЬрд╛рддреАрд▓ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛.

рдзреНрд░реБрд╡реАрдпрддрд╛ рдмрджрд▓рдгреЗ:

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

r, g рдЖрдгрд┐ b 255 рд╡рд░ рд╕реЗрдЯ рдХрд░рдгреЗ рдЯрд╛рд│рд╛ рдЖрдгрд┐ рддреЗ рд╡рд╛рдкрд░рддрд╛рдирд╛ рддреНрдпрд╛рдВрдирд╛ рдЙрд▓рдЯреЗ рдХрд░рдгреЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛.

рд╡реНрдпрддреНрдпрдп рдЖрдгрддреЛ

рд╡реНрдпрддреНрдпрдпрд╛рдЪреЗ рд╕рд╛рд░ рдЕрд╕реЗ рдЖрд╣реЗ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рдЪрд┐рдк рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреЗ рдерд╛рдВрдмрд╡рддреЗ рдЖрдгрд┐ рдХрд╛рд╣реА рдмрд╛рд╣реНрдп рдХрд╛рд░реНрдп рдХреЙрд▓ рдХрд░рддреЗ. рдЯрд╛рдЗрдорд░рд╕рд╣ рдмрд╛рд╣реНрдп рдХрд┐рдВрд╡рд╛ рдЕрдВрддрд░реНрдЧрдд рдкреНрд░рднрд╛рд╡рд╛рдВрдореБрд│реЗ рд╡реНрдпрддреНрдпрдп рдпреЗрддреЛ.

рдЬреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рдкреНрд░рдердо рдПрд╕рдЯреА рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рдбреЗрд╡реНрд╣рд▓рдкрдордзреНрдпреЗ рдПрдХ рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХреЗрд▓рд╛, рддреНрдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд main.c рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХ рд░рд╣рд╕реНрдпрдордп рдлрд╛рдЗрд▓ рдЕрд╕рд▓реЗрд▓реА рд╡рд┐рдВрдбреЛ рдорд┐рд│рд╛рд▓реА stm8_interrupt_vector.c, рдЖрдкреЛрдЖрдк рдкреНрд░рдХрд▓реНрдкрд╛рдд рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗ. рдпрд╛ рдлрд╛рдЗрд▓рдордзреНрдпреЗ, рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрддреНрдпрдпрд╛рд▓рд╛ рдПрдХ рдлрдВрдХреНрд╢рди рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рдЖрд╣реЗ NonHandledInterrupt. рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреЗ рдХрд╛рд░реНрдп рдЗрдЪреНрдЫрд┐рдд рд╡реНрдпрддреНрдпрдпрд╛рд╢реА рдмрд╛рдВрдзрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.

рдбреЗрдЯрд╛рд╢реАрдЯрдордзреНрдпреЗ рд╡реНрдпрддреНрдпрдп рд╡реЗрдХреНрдЯрд░рдЪреА рд╕рд╛рд░рдгреА рдЖрд╣реЗ, рдЬрд┐рдереЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реЗ рдЖрдврд│рддрд╛рдд:

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп
13 TIM2 рдЕрджреНрдпрддрди/рдУрд╡реНрд╣рд░рдлреНрд▓реЛ
14 TIM2 рдХреЕрдкреНрдЪрд░/рддреБрд▓рдирд╛

рдЖрдореНрд╣рд╛рд▓рд╛ UEV рд╡рд░ LED рдмрджрд▓рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдЖрдореНрд╣рд╛рд▓рд╛ рд╡реНрдпрддреНрдпрдп #13 рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рддреНрдпрд╛рдиреБрд╕рд╛рд░, рдкреНрд░рдердо, рдлрд╛рдЗрд▓рдордзреНрдпреЗ stm8_interrupt_vector.c рд╡реНрдпрддреНрдпрдп рдХреНрд░рдорд╛рдВрдХ 13 (IRQ13) рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлрдВрдХреНрд╢рдирдЪреЗ рдбреАрдлреЙрд▓реНрдЯ рдирд╛рд╡ рдмрджрд▓рд╛:

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

рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдПрдХ рдлрд╛рдИрд▓ рддрдпрд╛рд░ рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓ main.h рдЦрд╛рд▓реАрд▓ рд╕рд╛рдордЧреНрд░реАрд╕рд╣:

#ifndef __MAIN_H
#define __MAIN_H

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

рдЖрдгрд┐ рд╢реЗрд╡рдЯреА, рд╣реЗ рдлрдВрдХреНрд╢рди рддреБрдордЪреНрдпрд╛ рдордзреНрдпреЗ рд▓рд┐рд╣рд╛ main.c:

@far @interrupt void TIM2_Overflow (void)
{
    PD_ODR &= ~(1<<5); // ╨▓╤Л╤А╤Г╨▒╨░╨╡╨╝ ╨┤╨╡╨╝╤Г╨╗╤М╤В╨╕╨┐╨╗╨╡╨║╤Б╨╛╤А
    PC_ODR = (cnt<<3); // ╨╖╨░╨┐╨╕╤Б╤Л╨▓╨░╨╡╨╝ ╨▓ ╨┤╨╡╨╝╤Г╨╗╤М╤В╨╕╨┐╨╗╨╡╨║╤Б╨╛╤А ╨╜╨╛╨▓╨╛╨╡ ╨╖╨╜╨░╤З╨╡╨╜╨╕╨╡
    PD_ODR |= (1<<5); // ╨▓╨║╨╗╤О╤З╨░╨╡╨╝ ╨┤╨╡╨╝╤Г╨╗╤М╤В╨╕╨┐╨╗╨╡╨║╤Б╨╛╤А

    TIM2_SR1 = 0; // ╤Б╨▒╤А╨░╤Б╤Л╨▓╨░╨╡╨╝ ╤Д╨╗╨░╨│ Update Interrupt Pending

    cnt++; 
    cnt &= 7; // ╨┤╨▓╨╕╨│╨░╨╡╨╝ ╤Б╤З╨╡╤В╤З╨╕╨║ LED

    TIM2_CCR1L = ~colors[cnt][0]; // ╨┐╨╡╤А╨╡╨┤╨░╨╡╨╝ ╨▓ ╨▒╤Г╤Д╨╡╤А ╨╕╨╜╨▓╨╡╤А╤В╨╕╤А╨╛╨▓╨░╨╜╨╜╤Л╨╡ ╨╖╨╜╨░╤З╨╡╨╜╨╕╤П
    TIM2_CCR2L = ~colors[cnt][1]; // ╨┤╨╗╤П ╤Б╨╗╨╡╨┤╤Г╤О╤Й╨╡╨│╨╛ ╤Ж╨╕╨║╨╗╨░ ╨и╨Ш╨Ь
    TIM2_CCR3L = ~colors[cnt][2]; // 

    return;
}

рдмрд╛рдХреА рд╕рд░реНрд╡ рд╡реНрдпрддреНрдпрдп рд╕рдХреНрд╖рдо рдХрд░рдгреЗ рдЖрд╣реЗ. рд╣реЗ рдЕрд╕реЗрдВрдмрд▓рд░ рдХрдорд╛рдВрдб рд╡рд╛рдкрд░реВрди рдХреЗрд▓реЗ рдЬрд╛рддреЗ rim - рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдд рд╢реЛрдзрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЕрдиреНрдпреБрдЕрд▓:

//enable interrupts
_asm("rim");

рдЖрдгрдЦреА рдПрдХ рдЕрд╕реЗрдВрдмрд▓рд░ рдХрдорд╛рдВрдб рдЖрд╣реЗ sim - рд╡реНрдпрддреНрдпрдп рдмрдВрдж рдХрд░рддреЗ. "рд╡реНрд╣рд┐рдбрд┐рдУ рдореЗрдорд░реА" рд╡рд░ рдирд╡реАрди рдореВрд▓реНрдпреЗ рд▓рд┐рд╣рд┐рд▓реА рдЬрд╛рдд рдЕрд╕рддрд╛рдирд╛ рддреЗ рдмрдВрдж рдХреЗрд▓реЗ рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреЗрдгреЗрдХрд░реВрди рдЪреБрдХреАрдЪреНрдпрд╛ рдХреНрд╖рдгреА рд╣реЛрдгрд╛рд░рд╛ рд╡реНрдпрддреНрдпрдп рдЕреЕрд░реЗ рдЦрд░рд╛рдм рдХрд░рдгрд╛рд░ рдирд╛рд╣реА.

рд╕рд░реНрд╡ рдХреЛрдб - GitHub рд╡рд░.

рдбреЗрдЯрд╛рд╢реАрдЯ рд╡рд╛рдЪрдгреЗ 2: STM32 рд╡рд░ SPI; STM8 рд╡рд░ PWM, рдЯрд╛рдЗрдорд░ рдЖрдгрд┐ рд╡реНрдпрддреНрдпрдп

рдЬрд░ рдПрдЦрд╛рджреНрдпрд╛рд▓рд╛ рд╣рд╛ рд▓реЗрдЦ рдЙрдкрдпреБрдХреНрдд рд╡рд╛рдЯрд▓рд╛ рддрд░ рдореА рддреЛ рд╡реНрдпрд░реНрде рд▓рд┐рд╣рд┐рд▓рд╛ рдирд╛рд╣реА. рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдЖрдгрд┐ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдорд┐рд│рд╛рд▓реНрдпрд╛рдиреЗ рдорд▓рд╛ рдЖрдирдВрдж рд╣реЛрдИрд▓, рдореА рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯреАрдЪреЗ рдЙрддреНрддрд░ рджреЗрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реЗрди.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛