
рдкрд░рд┐рдЪрдп
рдПрдХ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ (
"рднрд╛рдЧ 2: рдПрдХ 3 рдбреА рдкреНрд░рд┐рдВрдЯрд░ рдореЗрдВ рд╡реНрдпрд╡рдзрд╛рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реВ рдкреАрдПрд╕рдУрд╕реА рдпреВрдбреАрдмреА рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛" ), рдореИрдВрдиреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ рддрдереНрдп рдиреЛрдЯ рдХрд┐рдпрд╛: рдпрджрд┐ рдпреВрдбреАрдмреА рдореЗрдВ рдПрдХ рдорд╢реАрди рдиреЗ рдПрдлрдЖрдИрдПрдлрдУ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рднреА рдЬрд▓реНрджреА рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛, рддреЛ рдпрд╣ рд░рд╛рдЬреНрдп рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рдХрд┐ рдирдИ рд╣реИрдВред FIFO рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдПрдХ рдЧрд▓рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдореБрдЭреЗ рдЗрд╕ рддрдереНрдп рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдереАред рдореИрдВрдиреЗ рдкрд░рд┐рдЪрд┐рддреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЛ рдЦреЛрд▓реЗ рд╣реБрдП рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдПред рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдиреЗ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╕рдм рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рдерд╛, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд╛рд░рдгреЛрдВ рдХрд╛ рдирд╛рдо рднреА рджрд┐рдпрд╛ред рдмрд╛рдХреА рдореИрдВ рдЕрдиреБрд╕рдВрдзрд╛рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд┐рд╕реА рд╕реЗ рдХрдо рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдирд╣реАрдВ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЖрдо рдЬрдирддрд╛ рддрдХ рдкрд╣реБрдВрдЪрд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВред
рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрд╡рд░рдг рдХрд╛ рдЯреВрдЯрдирд╛ рдерд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рд╕рдм рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реЗрд╢рд╛рдиреА рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдореЗрдВред рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЦреБрд╢ рдЕрдЬреНрдЮрд╛рдирддрд╛ рдореЗрдВ рдерд╛, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдбреАрдПрдордП рдПрдХ рдмрд╣реБрдд рд╣реА рдлреБрд░реНрддреАрд▓рд╛ рдЙрдкрдкреНрд░рдгрд╛рд▓реА рд╣реИ рдЬреЛ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рджрдХреНрд╖рддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░рдЬрд┐рд╕реНрдЯрд░ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЛ рд╡рд┐рдЪрд▓рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдФрд░ рд╕рдорд╛рди рдЖрджреЗрд╢реЛрдВ рдХреЛ рдЪрдХреНрд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╣реИред рджрдХреНрд╖рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП - рд╕рдм рдХреБрдЫ рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдЪреАрдЬреЛрдВ рдХреЗ рдХрд╛рд░рдгред
рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдмрд╛рддреЗрдВ рдкрд╣рд▓реЗред
рд╕рд░реВ PSOC рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ
рдЪрд▓реЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╢реАрди рдмрдирд╛рддреЗ рд╣реИрдВред рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рджреЛ рд░рд╛рдЬреНрдп рд╣реЛрдВрдЧреЗ: рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЕрд╡рд╕реНрдерд╛ рдФрд░ рдпрд╣ рд╡рд╣ рд░рд╛рдЬреНрдп рд╣реЛрдЧрд╛ рдЬрдм FIFO рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рдЗрдЯ рдбреЗрдЯрд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реБрдП, рд╡рд╣ рдмрд╕ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рд▓реЗ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдлрд┐рд░ рдЖрд░рд╛рдо рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╢рдмреНрдж "рд╕рд╢рд░реНрдд" рдореИрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рдирд╣реАрдВ рдЙрджреНрдзреГрдд рдХрд┐рдпрд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдПрдлрдЖрдИрдПрдлрдУ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рджреЛ рдРрд╕реЗ рд░рд╛рдЬреНрдп рдмрдирд╛рдКрдВрдЧрд╛, рдкреНрд░рддреНрдпреЗрдХ рдПрдлрдЖрдИрдПрдлрдУ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рди рд╣реИрдВред рдорд╢реАрди рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдЧреНрд░рд╛рдл рдЗрд╕ рддрд░рд╣ рдирд┐рдХрд▓рд╛:

рдЖрдЗрдбрд▓ рд╕реНрдЯреЗрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдЭрдВрдбреЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:

рдбрд╛рдЯрд╛рдкрде рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд┐рдЯреНрд╕ рдЬрдорд╛ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ:

рдмрд╛рд╣рд░ рд╣рдо рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рджреЛ рд╕рдореВрд╣реЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВ: рд╕рд┐рдЧреНрдирд▓ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдЬреЛ рдПрдлрдЖрдИрдПрдлрдУ рдХреЗ рдкрд╛рд╕ рдореБрдХреНрдд рд╕реНрдерд╛рди рд╣реИ (рддрд╛рдХрд┐ рдбреАрдПрдордП рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХреЗрдВ), рдФрд░ рд╕рд┐рдЧреНрдирд▓ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдЬреЛ рдХрд┐ рдПрдлрдЖрдИрдПрдлрдУ рдЦрд╛рд▓реА рд╣реИ (рдПрдХ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдкрд░ рдЗрд╕ рддрдереНрдп рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред

ALU рдмрд╕ FIFO рд╕реЗ рдХрд╛рд▓реНрдкрдирд┐рдХ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдЧрд╛:

рдореБрдЭреЗ рдЖрдкрдХреЛ рд░рд╛рдЬреНрдп рдХрд╛ рд╡рд┐рд╡рд░рдг рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП тАЬ0001тАЭ:

рдореИрдВрдиреЗ рдмрд╕ рдХреА рдЪреМрдбрд╝рд╛рдИ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА, рдЬреЛ рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдереА рдЬрд┐рд╕ рдкрд░ рдореИрдВрдиреЗ рдЗрд╕ рдЖрд╢рдп рдХреЛ рджреЗрдЦрд╛, 16 рдмрд┐рдЯреНрд╕:

рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпреЛрдЬрдирд╛ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдмрд╛рд╣реНрдп рд░реВрдк рд╕реЗ, рдореИрдВ рди рдХреЗрд╡рд▓ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдлрдЖрдИрдПрдлрдУ рдЦрд╛рд▓реА рд╣реИ, рдмрд▓реНрдХрд┐ рдШрдбрд╝реА рдХреА рджрд╛рд▓ рднреА рд╣реИред рдпрд╣ рдореБрдЭреЗ рдПрдХ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдкрд░ рдХрд░реНрд╕рд░ рдорд╛рдк рдХреЗ рдмрд┐рдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдореИрдВ рд╕рд┐рд░реНрдл рдЕрдкрдиреА рдЙрдВрдЧрд▓реА рд╕реЗ рдЙрдкрд╛рдп рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдореИрдВрдиреЗ 24 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬрд╝ рдШрдбрд╝реА рдХреА рдЧрддрд┐ рдмрдирд╛рдИред рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдЖрд╡реГрддреНрддрд┐ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рд╣реИред рдХрдо рдЖрд╡реГрддреНрддрд┐, рдПрдХ рдЪреАрдиреА рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдкрд░ рдХрдо рд╣рд╕реНрддрдХреНрд╖реЗрдк (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдпрд╣ 250 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХрд╛ рдПрдХ рдмреИрдВрдб рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЪреАрдиреА рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬрд╝), рдФрд░ рд╕рднреА рдорд╛рдк рдШрдбрд╝реА рджрд╛рд▓реЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдЬреЛ рднреА рдЖрд╡реГрддреНрддрд┐ рд╣реИ, рд╕рд┐рд╕реНрдЯрдо рдЕрднреА рднреА рдЙрдирдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдореИрдВрдиреЗ рдПрдХ рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬрд╝ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдиреЗ рдореБрдЭреЗ 24 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд╕реЗ рдХрдо рдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдЖрд╡реГрддреНрддрд┐ рдореВрд▓реНрдп рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдХрд┐рдпрд╛ред
рдЕрдм рдкрд░реАрдХреНрд╖рдг рд╕рд╛рдорд╛рдиред FIFO0 рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдпрд╣ рдХрд╛рд░реНрдп рдХрд┐рдпрд╛:
void WriteTo0FromROM() { static const uint16 steps[] = { 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001, 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001 }; // DMA , uint8 channel = DMA_0_DmaInitialize (sizeof(steps[0]),1,HI16(steps),HI16(JustReadFromFIFO_1_Datapath_1_F0_PTR)); CyDmaChRoundRobin (channel,1); // , uint8 td = CyDmaTdAllocate(); // . , . CyDmaTdSetConfiguration(td, sizeof(steps), CY_DMA_DISABLE_TD, TD_INC_SRC_ADR / TD_AUTO_EXEC_NEXT); // CyDmaTdSetAddress(td, LO16((uint32)steps), LO16((uint32)JustReadFromFIFO_1_Datapath_1_F0_PTR)); // CyDmaChSetInitialTd(channel, td); // CyDmaChEnable(channel, 1); }
рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдореЗрдВ ROM рд╢рдмреНрдж рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░рдгреА рдХреЛ ROM рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреЛрд░реНрдЯреЗрдХреНрд╕ рдПрдо 3 рдореЗрдВ рдПрдХ рд╣рд╛рд░реНрд╡рд░реНрдб рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╣реИред рд░реИрдо рдмрд╕ рдФрд░ рд░реЙрдо рдмрд╕ рдХреА рдкрд╣реБрдВрдЪ рдХреА рдЧрддрд┐ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рд░реИрдо рд╕реЗ рдПрдХ рд╕рд░рдгреА рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдХрд╛рд░реНрдп рд╣реИ (
рдЪрд░рдг рд╕рд░рдгреА рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдПрдХ
рд╕реНрдерд┐рд░ рдЧрддрд┐ рд╕рдВрд╢реЛрдзрдХ рдирд╣реАрдВ рд╣реИ)ред рд╡реИрд╕реЗ, FIFO1 рдкрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдХрд╛рд░реНрдп рд╣реИ, рд░рд┐рд╕реАрд╡рд░ рдХрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд╣рд╛рдВ рдЕрд▓рдЧ рд╣реИ: F0 рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ F1ред рдЕрдиреНрдпрдерд╛, рд╕рднреА рдХрд╛рд░реНрдп рд╕рдорд╛рди рд╣реИрдВред рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЕрдВрддрд░ рдирд╣реАрдВ рджреЗрдЦрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред рдПрдХ рдкреАрд▓реА рдХрд┐рд░рдг - рдШрдбрд╝реА рдХреА рджрд╛рд▓реЗрдВ, рдиреАрд▓рд╛ - рдЙрддреНрдкрд╛рджрди
FIFO0empty ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдлрдЖрдИрдПрдлрдУ рджреЛ рдШрдбрд╝реА рдЪрдХреНрд░реЛрдВ рдореЗрдВ рдЖрдмрд╛рджреА рдХреНрдпреЛрдВ рд╣реИ, рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡реНрдпрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдЖрдЗрдП рдЗрд╕ рд╕рд╛рдЗрдЯ рдХреЛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВ:

рдХрд┐рдирд╛рд░реЗ 1 рдкрд░, рдбреЗрдЯрд╛ FIFO рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ,
FIFO0enmpty рдлреНрд▓реИрдЧ рдбреНрд░реЙрдкред рдХрд┐рдирд╛рд░реЗ 2 рдкрд░,
рдСрдЯреЛрдореЗрдЯрди рдЧреЗрдЯрдбрд╛рдЯрд╛рдлреНрд░реЛрдордлрд┐рдлреЛ 1 рд░рд╛рдЬреНрдп рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред рдХрд┐рдирд╛рд░реЗ 3 рдкрд░, рдЗрд╕ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ, FIFO рдХреЗ рдбреЗрдЯрд╛ рдХреЛ ALU рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, FIFO рдЦрд╛рд▓реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
FIFO0empty рдзреНрд╡рдЬ рдХреЛ рдлрд┐рд░ рд╕реЗ
рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рддрд░рдВрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреА рд╣реИ, рдЖрдк рдЗрд╕реЗ рдШрдбрд╝реА рдЪрдХреНрд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдореЗрдВ 9 рдЯреБрдХрдбрд╝реЗ рдорд┐рд▓реЗред
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдирд┐рд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, DMA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ RAM рд╕реЗ UDB рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рд╢рдмреНрдж рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдореЗрдВ 9 рдШрдбрд╝реА рдЪрдХреНрд░ рд▓рдЧрддреЗ рд╣реИрдВредрдФрд░ рдЕрдм рд╡рд╣реА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рдорджрдж рд╕реЗред рдкрд╣рд▓рд╛, рдПрдХ рдЖрджрд░реНрд╢ рдХреЛрдб рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рд╢рд╛рдпрдж рд╣реА рдкреНрд░рд╛рдкреНрдд рд╣реЛред
volatile uint16_t* ptr = (uint16_t*)JustReadFromFIFO_1_Datapath_1_F0_PTR; ptr[0] = 0; ptr[0] = 0;
рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛:
ldr r3, [pc, #8] ; (90 <main+0xc>) movs r2, #0 strh r2, [r3, #0] strh r2, [r3, #0] bn 8e <main+0xa> .word 0x40006898
рдХреЛрдИ рдмреНрд░реЗрдХ рдирд╣реАрдВ, рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрдХреНрд░ рдирд╣реАрдВред рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛ рдЬреЛрдбрд╝реА рдЙрдкрд╛рдп ...

рдЖрдЗрдП рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрдирд╛рддреЗ рд╣реИрдВ (рдЪрдХреНрд░ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рдУрд╡рд░рд╣реЗрдб рдХреЗ рд╕рд╛рде, рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдмрдврд╝рд╛рдирд╛):
void SoftWriteTo0FromROM() { // . // static const uint16 steps[] = { 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001, 0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001 }; uint16_t* src = steps; volatile uint16_t* dest = (uint16_t*)JustReadFromFIFO_1_Datapath_1_F0_PTR; for (int i=sizeof(steps)/sizeof(steps[0]);i>0;i--) { *dest = *src++; } }
рдХреЛрдб рдХреЛрдб рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛:
ldr r3, [pc, #14] ; (9c <CYDEV_CACHE_SIZE>) ldr r0, [pc, #14] ; (a0 <CYDEV_CACHE_SIZE+0x4>) add.w r1, r3, #28 ; 0x28 ldrh.w r2, [r3], #2 cmp r3, r1 strh r2, [r0, #0] bne.n 8e <main+0xa>
рдЖрд╕реНрдЯрд╕реАрд▓реЛрдЧреНрд░рд╛рдо рдкрд░ рд╣рдо рдбреАрдПрдордП рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЗрд╡рд▓ 7 рдЪрдХреНрд░ рдкреНрд░рддрд┐ рдЪрдХреНрд░ рдмрдирд╛рдо рдиреМ рджреЗрдЦрддреЗ рд╣реИрдВ:

рдорд┐рдердХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛
рд╕рдЪ рдХрд╣реВрдВ, рддреЛ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЭрдЯрдХрд╛ рдерд╛ред рдореИрдВ рдХрд┐рд╕реА рддрд░рд╣ рдорд╛рдирддрд╛ рдерд╛ рдХрд┐ рдбреАрдПрдордП рддрдВрддреНрд░ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдЬрд▓реНрджреА рдФрд░ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред 1/9 рдмрд╕ рдХреА рдЖрд╡реГрддреНрддрд┐ рдЗрддрдиреА рддреЗрдЬрд╝ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреЛрдИ рднреА рдЗрд╕реЗ рдЫрд┐рдкрд╛ рдирд╣реАрдВ рд░рд╣рд╛ рдерд╛ред PSoC 5LP рдХреЗ рд▓рд┐рдП TRM рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХрдИ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╡рд┐рдЪрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ "AN84810 - PSoC 3 рдФрд░ PSoC 5LP рдЙрдиреНрдирдд DMA рд╡рд┐рд╖рдп" рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ DMA рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реИред рдмрд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рдирд┐рдордп рдЪрдХреНрд░ рдЯрд┐рдХ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рд▓реЗрддрд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рдпрд╣ рдпреЗ рдЙрдкрд╛рдп рд╣реИрдВ рдЬреЛ рджреЗрд░реА рдХреА рдШрдЯрдирд╛ рдореЗрдВ рдирд┐рд░реНрдгрд╛рдпрдХ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреЛрдИ рднреА рдХреБрдЫ рднреА рдирд╣реАрдВ рдЫреБрдкрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрджрд┐ рдПрдлрдПрдХреНрд╕ 2 рдПрд▓рдкреА (рд╕рд░реВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдПрдХ рдФрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛) рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рд╕рд┐рджреНрдз рдЬреАрдкреАрдЖрдИрдПрдл рдХреБрдЫ рднреА рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдХреА рдкрд╣реБрдВрдЪ рдХреЗ рджреМрд░рд╛рди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЗ рдХрд╛рд░рдг рдЧрддрд┐ рд╕реАрдорд╛ рд╣реЛрддреА рд╣реИредрдПрд╕рдЯреАрдПрдо 32 рдкрд░ рдбреАрдПрдордП рдЬрд╛рдБрдЪ
рдореИрдВ рдЗрддрдирд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдЖ рдХрд┐ рдореИрдВрдиреЗ STM32 рдкрд░ рдПрдХ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдПрдХ STM32F103 рдореЗрдВ рд╡рд╣реА рдХреЙрд░реНрдЯреЗрдХреНрд╕ рдПрдо 3 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдерд╛ рдЬрд┐рд╕реЗ рдПрдХ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдЦрд░рдЧреЛрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдореЗрдВ рдпреВрдбреАрдмреА рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╕реЗрд╡рд╛ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбреАрдПрдордП рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИред GPIO рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрддрд╛ рд╕реНрдерд╛рди рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдпрд╣ рдареАрдХ рд╣реИред рд╣рдо DMA рдХреЛ "рдореЗрдореЛрд░реА-рдореЗрдореЛрд░реА" рдХреЙрдкреА рдореЛрдб рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЗрдореЛрд░реА (ROM рдпрд╛ RAM) рдХреЛ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд░рд┐рд╕реАрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдбреНрд░реЗрд╕ рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рдХреЗ рдмрд┐рдирд╛ GPIO рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ред рд╣рдо рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╛ рддреЛ 0 рдпрд╛ 1 рднреЗрдЬреЗрдВрдЧреЗ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд░реЗрдВрдЧреЗред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреЛрд░реНрдЯ рдмреА рдЪреБрдирд╛, рдЗрд╕реЗ рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдкрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдерд╛ред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЙрдВрдЧрд▓реА рдХреЗ рд╕рд╛рде рдЧрд┐рдирддреА рдХреЗ рдЙрдкрд╛рдпреЛрдВ рдХрд╛ рдЖрдирдВрдж рдорд┐рд▓рд╛, рди рдХрд┐ рдЕрднрд┐рд╢рд╛рдкреЛрдВ рдХреЗ рд╕рд╛рдеред рдХреНрдпрд╛ рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ рднреА рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдпрд╣ рд╣реИ! MCO рдкреИрд░ рд╕реЗ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдШрдбрд╝реА рдХреА рдЖрд╡реГрддреНрддрд┐ рд▓реЗрдВ, рдЬреЛ STM32F10C8T6 рдкрд░ PA8 рдкреЛрд░реНрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИред рдЗрд╕ рд╕рд╕реНрддреЗ рдХреНрд░рд┐рд╕реНрдЯрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдЪреБрдирд╛рд╡ рдорд╣рд╛рди рдирд╣реАрдВ рд╣реИ (рд╡рд╣реА STM32F103, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА, рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдк рджреЗрддрд╛ рд╣реИ), рд╣рдо рдЗрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ SYSCLK рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬреЗрдВрдЧреЗред рдЪреВрдВрдХрд┐ MCO рдкрд░ рдЖрд╡реГрддреНрддрд┐ 50 MHz рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╣рдо рд╕рдордЧреНрд░ рд╕рд┐рд╕реНрдЯрдо рдХреНрд▓реЙрдХ рд╕реНрдкреАрдб рдХреЛ 48 MHz рддрдХ рдХрдо рдХрд░ рджреЗрдВрдЧреЗред рд╣рдо рдХреНрд╡рд╛рд░реНрдЯреНрдЬ 8 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рдЖрд╡реГрддреНрддрд┐ 9 рд╕реЗ рдЧреБрдгрд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди 6 рд╕реЗ (6 * 8 = 48 рд╕реЗ):

рдПрдХ рд╣реА рдкрд╛рда: void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_PeriphCLKInitTypeDef PeriphClkInit; /**Initializes the CPU, AHB and APB busses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; // RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); }
рд╣рдо
рдХреЛрдВрд╕реНрдЯреЗрдВрдЯрд┐рди рдЪрд┐рдЬрд╝реЛрд╡ рдХреЗ
mcucpp рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ MCO рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд░реЗрдВрдЧреЗ (рдЕрдм рд╕реЗ рдореИрдВ рдЗрд╕ рдЕрджреНрднреБрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдХрд░рдг рдХреЛ рд╕рднреА рдХреЙрд▓ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░реВрдВрдЧрд╛):
// MCO Mcucpp::Clock::McoBitField::Set (0x4); // MCO Mcucpp::IO::Pa8::SetConfiguration (Mcucpp::IO::Pa8::Port::AltFunc); // Mcucpp::IO::Pa8::SetSpeed (Mcucpp::IO::Pa8::Port::Fastest);
рдареАрдХ рд╣реИ, рдЕрдм рд╣рдо GPIOB рдореЗрдВ рдбреЗрдЯрд╛ рдРрд░реЗ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ:
typedef Mcucpp::IO::Pb0 dmaTest0; typedef Mcucpp::IO::Pb1 dmaTest1; ... // GPIOB dmaTest0::ConfigPort::Enable(); dmaTest0::SetDirWrite(); dmaTest1::ConfigPort::Enable(); dmaTest1::SetDirWrite(); uint16_t dataForDma[]={0x0000,0x8001,0x0000,0x8001,0x0000, 0x8001,0x0000,0x8001,0x0000,0x8001,0x0000,0x8001,0x0000,0x8001}; typedef Mcucpp::Dma1Channel1 channel; // dmaTest1::Set(); dmaTest1::Clear(); dmaTest1::Set(); // , DMA channel::Init (channel::Mem2Mem|channel::MSize16Bits|channel::PSize16Bits|channel::PeriphIncriment,(void*)&GPIOB->ODR,dataForDma,sizeof(dataForDma)/2); while (1) { } }
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рддрд░рдВрдЧ PSOC рдкрд░ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реИред

рдмреАрдЪ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдиреАрд▓рд╛ рдХреВрдмрдбрд╝ рд╣реИред рдпрд╣ рдбреАрдПрдордП рдЖрд░рдВрднреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рдмрд╛рдИрдВ рдУрд░ рдХреА рдиреАрд▓реА рджрд╛рд▓реЛрдВ рдХреЛ рд╢реБрджреНрдз рд░реВрдк рд╕реЗ PB1 рдкрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрдиреНрд╣реЗрдВ рдЪреМрдбрд╝рд╛ рдХрд░реЗрдВ:

рдкреНрд░рддрд┐ рдкрд▓реНрд╕ 2 рдЙрдкрд╛рдпред рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдПрдХ рдЧрд╣рд░реЗ рдиреАрд▓реЗ рд░рдВрдЧ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рддрд░рдВрдЧ рдкрд░ рдЪрд┐рд╣реНрдирд┐рдд рдмрдбрд╝реЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рджреЗрдЦреЗрдВред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдбреАрдПрдордП рдмреНрд▓реЙрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓ рд░рд╣рд╛ рд╣реИред

10 рдЪрдХреНрд░ рдкреНрд░рддрд┐ GPIO рд▓рд╛рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд╛рдо рд░реИрдо рдХреЗ рд╕рд╛рде рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рдирд┐рд░рдВрддрд░ рдЪрдХреНрд░ рдореЗрдВ рд▓реВрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рд╕реЗ рд░реИрдо рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреЙрд▓ рдирд╣реАрдВ рд╣реИред рдмрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбреАрдПрдордП рдЗрдХрд╛рдИ рдХреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди 10 рдЪрдХреНрд░ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо PSoC рдкрд░ рджреЗрдЦреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрд╕рдЯреАрдПрдо 32 рдкрд░ рдбреАрдПрдордП рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЛрдЯреНрд╕ рдвреВрдВрдврдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдереЗред F0 / F1 рдкрд░ AN2548 рд╣реИ, L0 / L1 / L3 рдкрд░ AN3117 рд╣реИ, F2 / F4 / F77 рдкрд░ AN4031 рд╣реИред рд╢рд╛рдпрдж рдХреБрдЫ рдФрд░ рднреА рд╣реИрдВ ...
рд▓реЗрдХрд┐рди, рдлрд┐рд░ рднреА, рдЙрдирдореЗрдВ рд╕реЗ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдБ рднреА, рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, D103 рдХреЗ рд╕рд╛рде рдмрд╕ рдореЗрдВ F103 рдмреИрдЪ рдХреА рдкрд╣реБрдВрдЪ рдЕрд╕рдВрднрд╡ рд╣реИред рд╡реЗ F4 рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪрд╛рд░ рд╢рдмреНрджреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВред рддреЛ рдлрд┐рд░ рд╕реЗ рд╡рд┐рд▓рдВрдмрддрд╛ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рд╣реЛрдЧреАред
рдЖрдЗрдП рдЙрд╕реА рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рд░рд┐рдХреЙрд░реНрдб рдХреА рдорджрдж рд╕реЗред рдКрдкрд░, рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рддрдХ рд╕реАрдзреЗ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рддреБрд░рдВрдд рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╣реА рд░рд┐рдХреЙрд░реНрдб рдерд╛ред рд░реЗрдЦрд╛:
// dmaTest1::Set(); dmaTest1::Clear(); dmaTest1::Set();
рдРрд╕реА рдЕрдиреБрдХреВрд▓рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЕрдзреАрди (рдЖрдкрдХреЛ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛):

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛:
STR r6,[r2,#0x00] MOV r0,#0x20000 STR r0,[r2,#0x00] STR r6,[r2,#0x00]
рдЕрд╕рд▓реА рдирдХрд▓ рдореЗрдВ, рд╕реНрд░реЛрдд рдХреЛ рдПрдХ рдХреЙрд▓ рд╣реЛрдЧрд╛, рд░рд┐рд╕реАрд╡рд░ рдХреЛ, рд▓реВрдк рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди, рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ ... рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдмрд╣реБрдд рдЕрдзрд┐рдХ рдУрд╡рд░рд╣реЗрдб (рдЬреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╕ рдбреАрдПрдордП рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ)ред рдкреЛрд░реНрдЯ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдЧрддрд┐ рдХреНрдпрд╛ рд╣реЛрдЧреА? рддреЛ, рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
uint16_t* src = dataForDma; uint16_t* dest = (uint16_t*)&GPIOB->ODR; for (int i=sizeof(dataForDma)/sizeof(dataForDma[0]);i>0;i--) { *dest = *src++; }
рдпрд╣ C ++ рдХреЛрдб рдРрд╕реЗ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛрдб рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:
MOVS r1,#0x0E LDRH r3,[r0],#0x02 STRH r3,[r2,#0x00] LDRH r3,[r0],#0x02 SUBS r1,r1,#2 STRH r3,[r2,#0x00] CMP r1,#0x00 BGT 0x080032A8
рдФрд░ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

рдКрдкрд░реА рдЖрдзреЗ рдЪрдХреНрд░ рдореЗрдВ 8 рдЙрдкрд╛рдп рдФрд░ рдирд┐рдЪрд▓реЗ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ 6 (рдореИрдВрдиреЗ рдЬрд╛рдВрдЪ рдХреА, рдкрд░рд┐рдгрд╛рдо рд╕рднреА рдЖрдзреЗ рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЕрдВрддрд░ рдЗрд╕рд▓рд┐рдП рдкреИрджрд╛ рд╣реБрдЖ рдХреНрдпреЛрдВрдХрд┐ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдиреЗ рдкреНрд░рддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА 2 рдкреНрд░рддрд┐рдпрд╛рдВ рдмрдирд╛рдИрдВред рдЗрд╕рд▓рд┐рдП, рдЕрд░реНрдз-рдЕрд╡рдзрд┐ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ 2 рдЙрдкрд╛рдп рд╢рд╛рдЦрд╛ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдореЛрдЯреЗ рддреМрд░ рдкрд░, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рдирдХрд▓ рдХреЗ рд╕рд╛рде, 20 рдЙрдкрд╛рдпреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рджреЛ рд╢рдмреНрджреЛрдВ рдХреА рдирдХрд▓ рдкрд░ 14 рдЙрдкрд╛рдп рдЦрд░реНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбреАрдПрдордП рджреНрд╡рд╛рд░рд╛ред рдкрд░рд┐рдгрд╛рдо рдХрд╛рдлреА рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрднреА рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рд╛рд╣рд┐рддреНрдп рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИредрд╕рдм рдареАрдХ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рджреЛ рдбреАрдПрдордП рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдХрд┐рддрдиреА рдЧрддрд┐ рдШрдЯреЗрдЧреА? рдиреАрд▓реА рдХрд┐рд░рдг рдХреЛ PA0 рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ:
typedef Mcucpp::Dma1Channel1 channel1; typedef Mcucpp::Dma1Channel2 channel2; // , DMA channel1::Init (channel1::Mem2Mem|channel1::MSize16Bits|channel1::PSize16Bits|channel1::PeriphIncriment,(void*)&GPIOB->ODR,dataForDma,sizeof(dataForDma)/2); channel2::Init (channel2::Mem2Mem|channel2::MSize16Bits|channel2::PSize16Bits|channel2::PeriphIncriment,(void*)&GPIOA->ODR,dataForDma,sizeof(dataForDma)/2);
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рджрд╛рд▓реЛрдВ рдХреА рдкреНрд░рдХреГрддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

рдЬрдмрдХрд┐ рджреВрд╕рд░реЗ рдЪреИрдирд▓ рдХреЛ рдЯреНрдпреВрди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдкрд╣рд▓реЗ рдХреЗ рд▓рд┐рдП рдХреЙрдкреА рд╕реНрдкреАрдб рдЕрдзрд┐рдХ рд╣реИред рдлрд┐рд░, рдЬрдм рдЬреЛрдбрд╝реЗ рдореЗрдВ рдирдХрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЧрддрд┐ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЬрдм рдкрд╣рд▓рд╛ рдЪреИрдирд▓ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рджреВрд╕рд░рд╛ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рдЧрддрд┐ рдХрд┐рддрдиреА рдЧрд┐рд░рддреА рд╣реИред
рдЬрдмрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдЪреИрдирд▓ рд╣реИ, рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ 10 рд╕реЗ 12 рдЙрдкрд╛рдпреЛрдВ рд╕реЗ рд╣реЛрддреА рд╣реИ (рдЕрдВрдХ рддреИрд░ рд░рд╣реЗ рд╣реИрдВ)ред

рд╕рд╣рдпреЛрдЧ рдХреЗ рджреМрд░рд╛рди, рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд░реНрдЯ рдореЗрдВ рдкреНрд░рддрд┐ рд░рд┐рдХреЙрд░реНрдб 16 рдЪрдХреНрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ:

рдпрд╛рдиреА рдЧрддрд┐ рдЖрдзреА рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдк рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рддреАрди рд╕реВрддреНрд░ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВ? рд╣рдо PC15 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ PC0 рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реИ (рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ 0, 1, 0, 1 ..., рд▓реЗрдХрд┐рди 0x0000,0x8001, 0x0000, 0x8001 ... рд╕рд░рдгреА рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рд╣реИрдВ)ред
typedef Mcucpp::Dma1Channel1 channel1; typedef Mcucpp::Dma1Channel2 channel2; typedef Mcucpp::Dma1Channel3 channel3; // , DMA channel1::Init (channel1::Mem2Mem|channel1::MSize16Bits|channel1::PSize16Bits|channel1::PeriphIncriment,(void*)&GPIOB->ODR,dataForDma,sizeof(dataForDma)/2); channel2::Init (channel2::Mem2Mem|channel2::MSize16Bits|channel2::PSize16Bits|channel2::PeriphIncriment,(void*)&GPIOA->ODR,dataForDma,sizeof(dataForDma)/2); channel3::Init (channel3::Mem2Mem|channel3::MSize16Bits|channel3::PSize16Bits|channel3::PeriphIncriment,(void*)&GPIOC->ODR,dataForDma,sizeof(dataForDma)/2);
рдпрд╣рд╛рдВ рдкрд░рд┐рдгрд╛рдо рдЗрддрдирд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИ рдХрд┐ рдореИрдВ рдШрдбрд╝реА рдХреА рдЖрд╡реГрддреНрддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреАрдо рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реВрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдорд╛рдкрди рдХрд╛ рдХреЛрдИ рд╕рдордп рдирд╣реАрдВ рд╣реИред рд╣рдо рдХрд╛рдо рдХреЗ рддрд░реНрдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред

рдЬрдм рддрдХ рдкрд╣рд▓рд╛ рдЪреИрдирд▓ рдХрд╛рдо рдЦрддреНрдо рдирд╣реАрдВ рдХрд░рддрд╛, рддрдм рддрдХ рддреАрд╕рд░реЗ рдиреЗ рдХрд╛рдо рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рддреАрди рдЪреИрдирд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ! рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреБрдЫ рдХреЛ AppNote рд╕реЗ DMA рдореЗрдВ рдШрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ F103 рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдЗрдВрдЬрди рд╣реИрдВ (рдФрд░ рд╣рдо DMA рдХреЗ рдПрдХ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рджреВрд╕рд░рд╛ рдЕрднреА рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ, рдФрд░ рд▓реЗрдЦ рдХрд╛ рдЖрдпрддрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ) рдореИрдВ рдирд╣реАрдВ рдЬреАрддрд╛)ред рд╣рдо рдирдореВрдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рддреАрд╕рд░рд╛ рдЪреИрдирд▓ рд╣рд░ рдХрд┐рд╕реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реЛ:

рдПрдХ рд╣реА рдкрд╛рда: // , DMA channel3::Init (channel3::Mem2Mem|channel3::MSize16Bits|channel3::PSize16Bits|channel3::PeriphIncriment,(void*)&GPIOC->ODR,dataForDma,sizeof(dataForDma)/2); channel1::Init (channel1::Mem2Mem|channel1::MSize16Bits|channel1::PSize16Bits|channel1::PeriphIncriment,(void*)&GPIOB->ODR,dataForDma,sizeof(dataForDma)/2); channel2::Init (channel2::Mem2Mem|channel2::MSize16Bits|channel2::PSize16Bits|channel2::PeriphIncriment,(void*)&GPIOA->ODR,dataForDma,sizeof(dataForDma)/2);
рддрд╕реНрд╡реАрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрджрд▓ рдЬрд╛рдПрдЧреА:

рддреАрд╕рд░рд╛ рдЪреИрдирд▓ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЗрд╕рдиреЗ рдкрд╣рд▓реЗ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛, рддреАрд╕рд░реЗ рдХреЛ рддрдм рддрдХ рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рдЬрдм рддрдХ рдХрд┐ рдкрд╣рд▓рд╛ рдЪреИрдирд▓ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЧрдпрд╛ред
рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛
рджрд░рдЕрд╕рд▓, рдкрд┐рдЫрд▓реА рддрд╕реНрд╡реАрд░ рдбреАрдПрдордП рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдХреБрдЫ рд╣реИрдВред рдпрджрд┐ рд╕рднреА рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЪреИрдирд▓реЛрдВ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕рдорд╛рди рд╣реИ, рддреЛ рдЙрдирдХреЗ рдирдВрдмрд░ рдкреНрд▓реЗ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рджреА рдЧрдИ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рднреАрддрд░, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдХрдо рд╕рдВрдЦреНрдпрд╛ рд╣реИ рд╡рд╣ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИред рдЖрдЗрдП рддреАрд╕рд░реЗ рдЪреИрдирд▓ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╡реИрд╢реНрд╡рд┐рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЗрд╕реЗ рдЕрдиреНрдп рд╕рднреА рд╕реЗ рдКрдкрд░ рдЙрдард╛рддреЗ рд╣реБрдП (рд╡реИрд╕реЗ, рд╣рдо рджреВрд╕рд░реЗ рдЪреИрдирд▓ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рднреА рдмрдврд╝рд╛рдПрдВрдЧреЗ):

рдПрдХ рд╣реА рдкрд╛рда: channel3::Init (channel3::PriorityVeryHigh|channel3::Mem2Mem|channel3::MSize16Bits|channel3::PSize16Bits|channel3::PeriphIncriment,(void*)&GPIOC->ODR,dataForDma,sizeof(dataForDma)/2); channel1::Init (channel1::Mem2Mem|channel1::MSize16Bits|channel1::PSize16Bits|channel1::PeriphIncriment,(void*)&GPIOB->ODR,dataForDma,sizeof(dataForDma)/2); channel2::Init (channel1::PriorityVeryHigh|channel2::Mem2Mem|channel2::MSize16Bits|channel2::PSize16Bits|channel2::PeriphIncriment,(void*)&GPIOA->ODR,dataForDma,sizeof(dataForDma)/2);
рдЕрдм рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЬреЛ рд╕рдмрд╕реЗ рдардВрдбрд╛ рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛, рдЙрд╕реЗ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдореЗрдВ рдЦреЗрд▓рддреЗ рд╣реБрдП рднреА, STM32F103 рдПрдХ DMA рдмреНрд▓реЙрдХ рдкрд░ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдзрд╛рдЧреЗ рд▓реЙрдиреНрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рддреАрд╕рд░рд╛ рдзрд╛рдЧрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
// , DMA channel3::Init (channel3::Mem2Mem|channel3::MSize16Bits|channel3::PSize16Bits|channel3::PeriphIncriment,(void*)&GPIOC->ODR,dataForDma,sizeof(dataForDma)/2); channel2::Init (channel2::Mem2Mem|channel2::MSize16Bits|channel2::PSize16Bits|channel2::PeriphIncriment,(void*)&GPIOA->ODR,dataForDma,sizeof(dataForDma)/2); uint16_t* src = dataForDma; uint16_t* dest = (uint16_t*)&GPIOB->ODR; for (int i=sizeof(dataForDma)/sizeof(dataForDma[0]);i>0;i--) { *dest = *src++; }
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рд╛рдорд╛рдиреНрдп рдЪрд┐рддреНрд░, рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рдЙрдЪреНрдЪрддрдо рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрддрд┐ рд╣реИ:

рдФрд░ рдЕрдм рдореИрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдЙрдкрд╛рдп рдЧрд┐рдирдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреВрдВрдЧрд╛ рдЬрдм рд╕рднреА рдХреЙрдкреА рд╕реНрдЯреНрд░реАрдо рд╕рдХреНрд░рд┐рдп рд╣реИрдВ:

рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рд╕рднреА рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддрд╛ рд╣реИ
рдЕрдм рдЗрд╕ рддрдереНрдп рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ рдХрд┐ рджреЛ-рдереНрд░реЗрдбреЗрдб рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди, рдЬрдмрдХрд┐ рджреВрд╕рд░рд╛ рдЪреИрдирд▓ рдЯреНрдпреВрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкрд╣рд▓реА рдмрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШрдбрд╝реА рдЪрдХреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рддрдереНрдп рднреА рдбреАрдПрдордП рдкрд░ AppNote рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рджреВрд╕рд░реЗ рдЪреИрдирд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди, рд░реИрдо рдХреЛ рдЕрдиреБрд░реЛрдз рд╕рдордп-рд╕рдордп рдкрд░ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдбреАрдПрдордП рдХреЛрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд░реИрдо рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╕рдордп рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИред рдЬрдм рдкреНрд░реЛрд╕реЗрд╕рд░ рдиреЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛, рддреЛ рдбреАрдПрдордП рдиреЗ рдШрдбрд╝реА рдЪрдХреНрд░ рдХреЛ рджреВрд░ рдХрд░ рд▓рд┐рдпрд╛, рдЗрд╕реЗ рджреЗрд░реА рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдзреАрд░реЗ-рдзреАрд░реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЪрд▓рд┐рдП рдЖрдЬ рдХреЗ рд▓рд┐рдП рдЖрдЦрд┐рд░реА рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП рдХрд╛рдо рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░ рд▓рд╛рдПрдВред рдбреАрдПрдордП рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдЦрд╛рд▓реА рдЪрдХреНрд░ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ (рдЬрдм рд░реИрдо рддрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдИ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реЛрдЧреА), рд▓реЗрдХрд┐рди рд░реИрдо рд╕реЗ рд░реИрдо рддрдХ рдПрдХ рдХреЙрдкреА рдСрдкрд░реЗрд╢рди рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдСрдкрд░реЗрд╢рди рдбреАрдПрдордП рдХреЛрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛:
channel1::Init (channel1::Mem2Mem|channel1::MSize16Bits|channel1::PSize16Bits|channel1::PeriphIncriment,(void*)&GPIOB->ODR,dataForDma,sizeof(dataForDma)/2); channel2::Init (channel2::Mem2Mem|channel2::MSize16Bits|channel2::PSize16Bits|channel2::PeriphIncriment,(void*)&GPIOA->ODR,dataForDma,sizeof(dataForDma)/2); uint32_t src1[0x200]; uint32_t dest1 [0x200]; while (1) { uint32_t* src = src1; uint32_t* dest = dest1; for (int i=sizeof(src1)/sizeof(src1[0]);i>0;i--) { *dest++ = *src++; } }

рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░, рдЪрдХреНрд░ 16 рд╕реЗ 17 рдЙрдкрд╛рдпреЛрдВ рддрдХ рдлреИрд▓рд╛ рд╣реБрдЖ рдерд╛ред рдореБрдЭреЗ рдбрд░ рдерд╛ рдХрд┐ рдпрд╣ рдмрджрддрд░ рд╣реЛрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ
рджрд░рдЕрд╕рд▓, рд╣рдо рд╡рд╣реА рдХрд╣рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдореИрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдореИрдВ рджреВрд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛ред рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, STM32 рдХрд╛ рдЕрдзреНрдпрдпрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЙрд╕ рд╕рдордп рдореМрдЬреВрдж USB рдХреЗ рд▓рд┐рдП MiddleWare рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдФрд░ рд╕реЛрдЪрд╛ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ DMA рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЛ рдХреНрдпреЛрдВ рд╣рдЯрд╛рдпрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдерд╛ рдХрд┐ рд╢реБрд░реВ рдореЗрдВ рдРрд╕рд╛ рд╡рд┐рдХрд▓реНрдк рджреГрд╖реНрдЯрд┐ рдореЗрдВ рдерд╛, рдлрд┐рд░ рдЗрд╕реЗ рдмреИрдХрдпрд╛рд░реНрдб рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЕрдВрдд рдореЗрдВ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдЕрд╕рднреНрдпрддрд╛рдПрдВ рдереАрдВред рдЕрдм рдореБрдЭреЗ рд╢рдХ рд╣реЛрдиреЗ рд▓рдЧрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рдордЭ рдЧрдпрд╛ рд╣реВрдВред
UDB рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдкрд╣рд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрджреНрдпрдкрд┐ UDB рд╕рдорд╛рдирд╛рдВрддрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ GPIF рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ PSoC USB рдмрд╕ FX2LP рдХреЗ рд▓рд┐рдП рдлреБрд▓ рд╕реНрдкреАрдб рдмрдирд╛рдо рд╣рд╛рдИ рд╕реНрдкреАрдб рдкрд░ рдЪрд▓рддреА рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╕реАрдорд┐рдд рдХрд╛рд░рдХ рд╣реИред рдбреАрдПрдордП рдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдЙрд╕реА рдЧрддрд┐ рд╕реЗ рдбреЗрдЯрд╛ рджреЗрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдЬреАрдкреАрдЖрдИрдПрдл рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рднреАрддрд░, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпреВрдПрд╕рдмреА рдмрд╕ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗ рдмрд┐рдирд╛ рднреА рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдИ рдПрдХрд▓ рдЗрдХрд╛рдИ рдбреАрдПрдордП рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдЗрд╕реЗ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИред рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рд╡рд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рднреА рдбреАрдПрдордП рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЗрдХрд╛рдИ рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдзреНрдпрд╛рди рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЬрд░реВрд░рддреЗрдВ рдкреВрд░реА рд╣реЛрдВрдЧреАред
рд╕рдВрднрд╡рддрдГ, рдПрдХ рдЖрд╢рд╛рд╡рд╛рджреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореИрдВ рдЙрд╕реЗ рдЙрдЬрд╛рдЧрд░ рднреА рдХрд░реВрдВрдЧрд╛ред
рдХреЛрд░реНрдЯреЗрдХреНрд╕ рдПрдо рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдбреАрдПрдордП рдЖрдкрдХреЛ рдкреНрд░рд╕рд┐рджреНрдз рдЬреЗрд╡реЗрд▓рд┐рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: "рд▓реЙрдиреНрдЪ рдФрд░ рднреВрд▓ рдЬрд╛рдУред" рд╣рд╛рдВ, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЙрдкреА рдХрд░рдиреЗ рдХрд╛ рдбреЗрдЯрд╛ рдереЛрдбрд╝рд╛ рддреЗрдЬ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рднреА рдЖрд╢рд╛рд╡рд╛рджреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЙрди рд╕рднреА рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рд░реАрд▓реЛрдбрд┐рдВрдЧ рдФрд░ рд╕реНрдкрд┐рдирд┐рдВрдЧ рд▓реВрдк рдХреЗ рдУрд╡рд░рд╣реЗрдб рдХреЗ рдмрд┐рдирд╛ рдбреНрд░рд╛рдЗрд╡ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдзреАрдореЗ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЕрднреА рднреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ DMA рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрддрд░ рдкрд░ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИредрд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рднреА рд╡рд┐рднрд┐рдиреНрди рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╕рдВрднрд╡ рд╣реИрдВред рдпрджрд┐ рдкреЛрд░реНрдЯ рдХреЗрд╡рд▓ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдзреАрдорд╛ рд╣реИ ... рддреЛ, рдХрд╣реЗрдВ, рдЙрдЪреНрдЪрддрдо рд╕рдВрднрд╡ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдПрд╕рдкреАрдЖрдИ, рддрдм рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ рдЬрдм рдбреАрдПрдордП рдореЗрдВ рдмрдлрд░ рд╕реЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛрддрд╛ рд╣реИред рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд - рдбреЗрдЯрд╛ рдХреЛ рдмрдлрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВред рдЬрдм рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдПрдХрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреНрдпрд╛ рдЕрджреНрднреБрдд рдУрд╡рд░рд▓реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрд▓рдЧ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдкрд░реАрдХреНрд╖рдХ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ (рдкрд░реАрдХреНрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХрд╛рдо) рдХреЛ рднрдбрд╝рдХрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдХреЛрдИ рднреА рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдЫрд┐рдкрд╛рддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдм рдЖрдорддреМрд░ рдкрд░ рдореБрдЦреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЛрдЯреНрд╕ рдореЗрдВред рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдХрд╛рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХрд╛ рдзреНрдпрд╛рди рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдерд╛ рдХрд┐ рдбреАрдПрдордП рдПрдХ рд░рд╛рдордмрд╛рдг рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рд┐рд░реНрдл рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рд╣реИред
рд▓реЗрдХрд┐рди, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рди рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░, рдмрд▓реНрдХрд┐ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рднреАред рдХрд╣рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рд╕рдВрдЧрдарди рдореЗрдВ, рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рджреВрд░рд╕реНрде рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдЙрдкрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрдХреНрд╖ рдореЗрдВ "рдлрд░реНрдорд╡реЗрдпрд░" рдСрд░реНрдбрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдФрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдкрдХреНрд╖ рдХреЛ рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рднрд╛рд░реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдорд╣рдВрдЧрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ "рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ", рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдореВрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд▓реНрдЯреА-рд╢рд┐рдлреНрдЯ рдХрд╛рдо рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ... рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рдХрд╛рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╣реБрдд рдХреБрдЫ, рд╣рдорд╛рд░реЗ рд╕рдореВрд╣ рдиреЗ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдХреЗрд╡рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИред
рддрджрдиреБрд╕рд╛рд░, рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдмрдЯрди рдХреЗ рддреБрдЪреНрдЫ рд╕рд┐рдореБрд▓реЗрд╢рди рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдПрд╕рдкреАрдЖрдИ, I2C, CAN, 4-20 рдПрдордП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рдЕрдиреНрдп, рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдЙрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрд╛рдордХ рдмрд╛рд╣рд░реА рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛ рд╕рдХреЗрдВред рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рдмреНрд▓реЙрдХ (рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рдордп рдореЗрдВ рд╣реЗрд▓реАрдХреЙрдкреНрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдореАрди рдХреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд┐рдореБрд▓реЗрдЯрд░ рдмрдирд╛рдП рдереЗ, рд╣рдорд╛рд░реА
рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЗрд╕реА рдорд╛рдорд▓реЗ рдХреЛрд╕реЗрд▓ рдПрдпрд░реЛ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рдЦреЛрдЬрд╛ рдЧрдпрд╛ рд╣реИ )ред
рдФрд░ рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рддрдХрдиреАрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВред рдЗрддрдирд╛ SPI, рдЗрддрдирд╛ I2C, рдЗрддрдирд╛ GPIOред рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрд░рдо рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИред рд╣рдордиреЗ HS рдореЛрдб рдореЗрдВ USB рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП STM32F4 рдФрд░ ULPI рдХреЛ рд░рдЦрд╛ред рддрдХрдиреАрдХ рд╕рд┐рджреНрдз рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдирд╡рдВрдмрд░ рдХреА рдЫреБрдЯреНрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд▓рдВрдмрд╛ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдЖрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдпреВрдбреАрдмреА рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ред рдХреБрдЫ рдЧрд▓рдд рджреЗрдЦ рд░рд╣рд╛ рдерд╛, рд╢рд╛рдо рдХреЛ рдореБрдЭреЗ рдЗрд╕ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рджрд┐рдП рдЧрдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗред рдФрд░ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рд╕рдм рдХреБрдЫ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдорд╣рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдиреЛрдЯ рдХрд┐рдпрд╛ рдерд╛, рдЬрдм рд╕рдВрднрд╡ рд╢рд┐рдЦрд░ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдКрдкрд░реА рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдПрдХ рдЬрдЯрд┐рд▓ рдореЗрдВред
рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХреАрдХреГрдд рдбрд┐рдЬрд╝рд╛рдЗрди рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдЬ рд╣рдо рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХрд▓ - рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХреЗ рд╕рд╛рдеред рдмрд╕реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрдкрдиреЗ рд╡рд┐рд╡реЗрдХрд╛рдиреБрд╕рд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рдЗрдореНрдпреВрд▓реЗрд╢рди рдХреЗрд╕ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдПрдлрдЯреАрдбреАрдЖрдИ рдкреБрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдкреБрд▓ рдХреЗ рднреАрддрд░, рдПрдХ, рджреЛ рдпрд╛ рдЪрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рдХрдареЛрд░ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкреБрд▓реЛрдВ рдХреЗ рдмреАрдЪ рдпреВрдПрд╕рдмреА рд╣реЛрд╕реНрдЯ рд╕рдм рдХреБрдЫ рд╣рд▓ рдХрд░реЗрдЧрд╛ред рдЕрдлрд╕реЛрд╕ред DMA. , , , , тАУ , .
. DMA (, 10: 1 , , 1 , 10 ) .