рд░реВрд╕реА рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ K1986BE92QI рдкрд░ рдореЛрдбрдмрд╕

рдореИрдВ 32-рдмрд┐рдЯ RISC рдХреЛрд░ ARM Cortex-M3 128kB Flash рдФрд░ 32kB RAM рдХреЗ рд╕рд╛рде PKK рдорд┐рд▓реЗрдВрдбрд░ JSC рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рд░реВрд╕реА рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ K1986BE92QI рдХреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛, рдореИрдВ рддреБрд░рдВрдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред


рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдПрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬреЛ рдЪреАрдиреА AliExpress рдХреЗ рд╕рд╛рде рдИрд░реНрд╖реНрдпрд╛ рдХрд░рддрд╛ рд╣реИред рдЪрд┐рдк рдореЛрдЯреА рдПрд▓реНрдпреВрдореАрдирд┐рдпрдо рдкрдиреНрдиреА рдХреЗ рдПрдХ рдХреИрд╕реЗрдЯ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рдЬрд┐рд╕реЗ рдкрдиреНрдиреА рдХрд╛рдЧрдЬ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлреЛрдо рд░рдмрд░ рдХреЗ рд╕рд╛рде рд░рдЦреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдпрд╣ рдкреВрд░рд╛ "рд╕реИрдВрдбрд╡рд┐рдЪ" рдПрдХ рдЧрддреНрддрд╛ рдмреЙрдХреНрд╕ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрдиреНрдиреА рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдКрдВрдЪрд╛рдИ рдкрд░ рд╕реНрдереИрддрд┐рдХ рдмрд┐рдЬрд▓реА рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ред




рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЗрдмрд▓ рдФрд░ рдПрдХ рдЙрддреНрдкрд╛рдж рдЪрдпрди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред



рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбрд┐рдмрдЧ рдмреЛрд░реНрдб рдХреЗ рдПрдХ рд╕рд░реНрдХрд┐рдЯ рдЖрд░реЗрдЦ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдФрд░ рдШрдЯрдХреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рд╡рд╣ рдХрдо рд╕реЗ рдХрдо рдШрдЯрдХреЛрдВ рдкрд░ рд░реБрдХ рдЧрдпрд╛: USB рдкреЛрд░реНрдЯ рд╕реЗ рдмрд┐рдЬрд▓реА рдХреЗ рд▓рд┐рдП 3.3v рд╕реНрдЯреЗрдмрд▓рд╛рдЗрдЬрд░, 8MHz рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рд░реЗрдЬрд╝реЛрдиреЗрдЯрд░, рдПрдХ miniUSB рдХрдиреЗрдХреНрдЯрд░, рдПрдХ рд░реАрд╕реЗрдЯ рдмрдЯрди, рдкреБрд▓-рдЕрдк рд░реЗрд╕рд┐рд╕реНрдЯрд░реНрд╕ рдФрд░ рд╕рд┐рдк рдХрдиреЗрдХреНрдЯрд░ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрддреА рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдмреВрдЯрд▓реЛрдбрд░ рдХреЗ рдореЛрдб рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП smd рд╕реНрд╡рд┐рдЪ рднреА рд╕реЗрдЯ рдХрд░реЗрдВред рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдЖрдкрдХреЛ рджреЛ рд╕реАрд░рд┐рдпрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ UART рдпрд╛ JTAG / SWD рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдЪреБрдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ JTAG рдЖрдкрдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓реЛрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЖрдЙрдЯрдкреБрдЯ рдкреАрдПрдл 4, рдкреАрдПрдл 5, рдкреАрдПрдл 6 рдкрд░ рддрд░реНрдХ рдХреЗ рд╕реНрддрд░ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдк рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:



рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдПрдХ рдкреНрд▓рд╛рд╕реНрдЯрд┐рдХ рдХреЗрд╕ LQFP64 рдореЗрдВ рдкрд┐рдВрд╕ рдХреЗ рд╕рд╛рде 0.3 рдорд┐рдореА рдЪреМрдбрд╝рд╛ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ 0.2 рдорд┐рдореА рдореЗрдВ рдмрдирд╛ рдПрдХ рдЪрд┐рдк рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ LUT рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдореБрджреНрд░рд┐рдд рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб рдмрдирд╛рдиреЗ рдХреА рдЕрд╕рдВрднрд╡рддрд╛ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреБрднрд╡ рдиреЗ рд╡рд┐рдкрд░реАрдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рд╣реИред рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ, рдПрдХ рдкреАрд╕реАрдмреА рдбреНрд░рд╛рдЗрдВрдЧ рд╕реНрдкреНрд░рд┐рдВрдЯ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд▓реЛрдВрдбреЛрдВ рдЙрдЪреНрдЪ рдШрдирддреНрд╡ рд╡рд╛рд▓реЗ рдкреЗрдкрд░ рдкрд░ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдлрд╛рдЗрдмрд░рдЧреНрд▓рд╛рд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреНрд░рддрд┐ рдЖрдВрдЦ рдкреЗрд░реЛрдХреНрд╕рд╛рдЗрдб рдФрд░ рд╕рд╛рдЗрдЯреНрд░рд┐рдХ рдПрд╕рд┐рдб рдХреЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЬрдЧрд╣ рд▓реЗ рд▓реА рдФрд░ рд▓рдЧрднрдЧ рдПрдХ рдШрдВрдЯреЗ рд▓реЗ рд▓рд┐рдпрд╛, рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдХрдВрдбрдХреНрдЯрд░реЛрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдереА, рдЬреЛ рдкреНрд░рд╕рдиреНрди рдереАред



рдФрд░ рдЗрд╕рд▓рд┐рдП рдмреЛрд░реНрдб рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред рд╣рдо рдХреЗрдЗрд▓ - рдПрдордбреАрдХреЗ рдПрдЖрд░рдПрдо uVision 5.0 рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдорд╛рдирдХ рдкреЗрд░рд┐рдлреЗрд░рд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА + рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреИрдХ рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ UART рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрд╕рдЯреА-рд▓рд┐рдВрдХ v2 рдЗрди-рд╕рд░реНрдХрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ / рдбреАрдмрдЧрд░, рдпрд╛ рдХрд┐рд╕реА рдЕрдЬреНрдЮрд╛рдд рдЪреАрдиреА рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ рдЗрд╕рдХреЗ рдХреНрд▓реЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдХреЗрдЗрд▓ рдЗрд╕реЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ SWD рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдВ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИред "JTAG - SWD рдПрдбрд╛рдкреНрдЯрд░" рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ SWDIO рд▓рд╛рдЗрди JTAG-TMS рд╕реЗ рдЬреБрдбрд╝рддреА рд╣реИ, рдФрд░ SWTK рд╕реЗ JTAG-TCK рдФрд░ "рдУрд╣ рдЪрдорддреНрдХрд╛рд░!" рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛, рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдлреНрд▓реИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред



рдпрд╣ рдЖрдирдВрдж рдХрд╛ рдЕрдВрдд рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рдмрд╛рдж рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛, рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдмрдЧрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдлреНрд▓реИрд╢рд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рдЬреЗрдЯреА-рдП рдкреЛрд░реНрдЯ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдПрдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреЛрд░реНрдЯ рдмреА рдореЗрдВ рдЬрд┐рд╕ рдкрд░ рдЬреЗрдЯреАрдПрдЬреА-рдП рд╕реНрдерд┐рдд рд╣реИ, рдХреЛ рднреА рдЖрд░рдВрднреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЬреЗрдЯреАрдЬреА-рдмреА рднреА рд╣реИред рдЬрдм рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ JTAG рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдЬреБрдбрд╝рд╛, рддреЛ рд╕рдм рдХреБрдЫ рдПрдХ рдШрдбрд╝реА рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред


рдЦреБрдж рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдп рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдореЛрдбрд╛рд╕рд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ SCADA рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдерд╛ред рдкрд╣рд┐рдпрд╛ рдХреЛ рд╕реБрджреГрдврд╝ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдлреНрд░реАрдореЛрдбрдмрд╕ рдлреНрд░реАрдореЛрдбрдмрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВред


рдорд┐рд▓реЗрдВрдбрд░ рдХреЗ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдХреЗрдЗрд▓ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреИрдХ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбрдмрд▓ рдХреНрд▓рд┐рдХ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЧреЗ рдХреЗрдПрд▓ рдЦреБрдж рд╕рдмрдХреБрдЫ рдХрд░реЗрдЧрд╛ред


рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдо рдЕрдкрдиреЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдШрдЯрдХреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА рдореЗрдВ, рдореЛрдбрдмрд╕ рд╕реНрд▓реЗрд╡ рд╕рдореВрд╣ рдмрдирд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рдлреНрд░реАрдореЛрдбрдмрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдирд┐рдореНрди рдлрд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝реЗрдВ:



рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрде рд╕рдВрдХрд▓рдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред



рдЕрдм рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлреНрд░реАрдореЛрдбрдмрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕реНрдЯреИрдВрдбрд░реНрдб рдкреЗрд░реАрдлреЗрд░рд▓реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреЛрд░реНрдЯ рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ UART рдкреЛрд░реНрдЯ xMBPortSerialInit рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ


BOOL xMBPortSerialInit( UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, eMBParity eParity ) { //    F RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTF, ENABLE); //      PORT_InitTypeDef uart2_port_set; //   F   UART //     PORT_StructInit(&uart2_port_set); //    uart2_port_set.PORT_FUNC = PORT_FUNC_OVERRID; //    uart2_port_set.PORT_SPEED = PORT_SPEED_MAXFAST; //     uart2_port_set.PORT_MODE = PORT_MODE_DIGITAL; //   PF1  UART_TX () uart2_port_set.PORT_Pin = PORT_Pin_1; uart2_port_set.PORT_OE = PORT_OE_OUT; PORT_Init(MDR_PORTF, &uart2_port_set); //   PF0  UART_RX () uart2_port_set.PORT_Pin = PORT_Pin_0; uart2_port_set.PORT_OE = PORT_OE_IN; //    UART //   UART2 RST_CLK_PCLKcmd(RST_CLK_PCLK_UART2, ENABLE); //      UART UART_InitTypeDef UART_InitStructure; //    UART = 1 UART_BRGInit(MDR_UART2,UART_HCLKdiv1); //  UART //    тАУ 115200  UART_InitStructure.UART_BaudRate = ulBaudRate; //     тАУ 8 UART_InitStructure.UART_WordLength = UART_WordLength8b; //  - UART_InitStructure.UART_StopBits = UART_StopBits1; //    UART_InitStructure.UART_Parity = UART_Parity_No; //    FIFO   , // ..      UART_InitStructure.UART_FIFOMode = UART_FIFO_OFF; //      UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_RXE | UART_HardwareFlowControl_TXE; //  UART2    UART_Init(MDR_UART2, &UART_InitStructure); //   UART UART_Cmd(MDR_UART2, ENABLE); return TRUE; } 

рд▓рд┐рдЦрдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рд╕рдорд╛рд░реЛрд╣:


 BOOL xMBPortSerialPutByte( CHAR ucByte ) { //  UART_SendData(MDR_UART2,ucByte); return TRUE; } BOOL xMBPortSerialGetByte( CHAR * pucByte ) { //  *pucByte = (uint8_t) UART_ReceiveData(MDR_UART2); return TRUE; } 

рдпреВрдПрдЖрд░рдЯреА рдмрд╛рдзрд╛ рд╣реИрдВрдбрд▓рд░


  void USART2_IRQHandler(void) { /*     ---------------------------------------------------*/ if((UART_GetITStatus(MDR_UART2,UART_IT_RX)) != RESET) { prvvUARTRxISR( ); } /*     ------------------------------------------------*/ if((UART_GetITStatus(MDR_UART2,UART_IT_TX)) !=RESET) { prvvUARTTxReadyISR( ); } } 

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо portimer.c рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдорд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдореЛрдбрдмрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмреНрд░реИрдХреЗрдЯ рдХреЗ рдЕрдВрдд рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рд░рд┐рдкреЛрд░реНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред


 BOOL xMBPortTimersInit( USHORT usTim1Timerout50us ) { MDR_RST_CLK->PER_CLOCK |= (1<<14); //   TIM1 MDR_RST_CLK->TIM_CLOCK = 0x0; MDR_RST_CLK->TIM_CLOCK |= (1<<24); // TIM1_CLK_EN MDR_RST_CLK->TIM_CLOCK |= 0x07; // HCLK/8   MDR_TIMER1->CNTRL = 0x00000002; //   MDR_TIMER1->CNT = 0x00000000; //  MDR_TIMER1->PSG = 0x2; //f/1   while((MDR_TIMER1->CNTRL & 0x004) != 0) {__NOP();} //    MDR_TIMER1->ARR = usTim1Timerout50us; //     while((MDR_TIMER1->CNTRL & 0x004) != 0) {__NOP();} //     MDR_TIMER1->IE = 0x00000002; //(CNT==ARR)->IE      NVIC->ISER[0] = (1<<14); // Global EN for IRQ14   MDR_TIMER1->CNTRL |= (1<<0); //Timer1 ON   return TRUE; } inline void vMBPortTimersEnable( ) { /*    */ MDR_TIMER1->CNTRL |= (1<<0); //Timer1 ON } inline void vMBPortTimersDisable( ) { /*    */ MDR_TIMER1->CNTRL &= ~(1<<0); //Timer1 OFF } static void prvvTIMERExpiredISR( void ) { ( void )pxMBPortCBTimerExpired( ); } void Timer1_IRQHandler(void) { //   MDR_TIMER1->STATUS &= ~0x002; //IE FLAG=0 prvvTIMERExpiredISR( ); } 

Main.c рдореЗрдВ рд╣рдо рдореЛрдбрдмрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдлрдВрдХреНрд╢рдиреНрд╕ рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рд╣рдо рдЕрдкреНрд░рдпреБрдХреНрдд рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд╕реНрдЯрдмреНрд╕ рдХреЗ рд╕рд╛рде рдордлрд▓ рдХрд░реЗрдВрдЧреЗ


 /* ----------------------- Defines ------------------------------------------*/ #define REG_INPUT_START 1000 #define REG_INPUT_NREGS 4 /* ----------------------- Static variables ---------------------------------*/ static USHORT usRegInputStart = REG_INPUT_START; static USHORT usRegInputBuf[REG_INPUT_NREGS]; eMBErrorCode eMBRegInputCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs ) { eMBErrorCode eStatus = MB_ENOERR; int iRegIndex; if( ( usAddress >= REG_INPUT_START ) && ( usAddress + usNRegs <= REG_INPUT_START + REG_INPUT_NREGS ) ) { iRegIndex = ( int )( usAddress - usRegInputStart ); while( usNRegs > 0 ) { *pucRegBuffer++ = ( unsigned char )( usRegInputBuf[iRegIndex] >> 8 ); *pucRegBuffer++ = ( unsigned char )( usRegInputBuf[iRegIndex] & 0xFF ); iRegIndex++; usNRegs--; } } else { eStatus = MB_ENOREG; } return eStatus; } eMBErrorCode eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegisterMode eMode ) { return MB_ENOREG; } eMBErrorCode eMBRegCoilsCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNCoils, eMBRegisterMode eMode ) { return MB_ENOREG; } eMBErrorCode eMBRegDiscreteCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNDiscrete ) { return MB_ENOREG; } 

рдпрд╣ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХрд╛ рдЕрдВрдд рд╣реИ, рдпрд╣ рд▓реВрдк рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдФрд░ рдХреЙрд▓ eMBPoll () рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдореБрдЦреНрдп (рд╢реВрдиреНрдп) рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ;


 int main (void) { eMBErrorCode eStatus; // UART    ,   portserial.c  xMBPortSerialInit    eStatus = eMBInit( MB_RTU, 0x0A, 0, 19200, MB_PAR_NONE ); /* Enable the Modbus Protocol Stack. */ eStatus = eMBEnable( ); while(1) { eStatus = eMBPoll( ); //  if (eStatus!= MB_ENOREG){}; /* Here we simply count the number of poll cycles. */ usRegInputBuf[0]++; } } 

рд╣рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╕рдм рдХреБрдЫ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЯ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкрд░ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИред рдЬрдм UART рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рд╕реЗ рдПрдХ рд░реБрдХрд╛рд╡рдЯ рдХреЛ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡реНрдпрд╡рдзрд╛рди рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдиреЛрдЯ рдХреЗ рдкрд╛рд░ рдЖрдП рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ "UART рдХреЗ рд╡рд┐рд╡рд░рдг" рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:


рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рд╡реНрдпрд╡рдзрд╛рди рдХрд┐рдирд╛рд░реЗ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рдЧреНрдирд▓ рд╕реНрддрд░ рдкрд░ рдирд╣реАрдВред рдпрджрд┐ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЗрд╕рд╕реЗ рдмрд╛рдзрд┐рдд рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рддреЛ рдПрдХ рдЕрд╡рд░реЛрдз рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдмрд╛рдзрд╛ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм FIFO рдмрдлрд░ рдЦрд╛рд▓реА рд╣реЛрддрд╛ рд╣реИред

рдЦреИрд░, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рд╣рдо рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, mbrtu.c рдлрд╛рдЗрд▓ рдореЗрдВ рд╣рдореЗрдВ рдХреЛрдб рдХреА рд▓рд╛рдЗрдиреЗрдВ рдорд┐рд▓ рдЬрд╛рддреА рд╣реИрдВ


 /* Activate the transmitter. */ eSndState = STATE_TX_XMIT; vMBPortSerialEnable( FALSE, TRUE ); 

рдФрд░ UART рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдХреЛ рдЬрдмрд░рди рдмрд╛рдЗрдЯ рднреЗрдЬреЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд▓рд╛рдЗрди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: "xMBRTUTransmitFSM ();" рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдкреИрдХреЗрдЯ рдЪрд▓рддрд╛ рд╣реИ, рд░рдЬрд┐рд╕реНрдЯрд░ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдпрд╣ рддрдХрдиреАрдХ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред

Source: https://habr.com/ru/post/hi438534/


All Articles