FMC рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ STM32F429 рдореЗрдВ 10 "ER-TFT101-1 рдбрд┐рд╕реНрдкреНрд▓реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛

рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рдиред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо FMC (рд▓рдЪреАрд▓реЗ рдореЗрдореЛрд░реА рдХрдВрдЯреНрд░реЛрд▓рд░) рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 16-рдмрд┐рдЯ 8080 рд╕рдорд╛рдирд╛рдВрддрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ STM32F429L рдбрд┐рд╕реНрдХрд╡рд░реА рдмреЛрд░реНрдб рдореЗрдВ TFT рдбрд┐рд╕реНрдкреНрд▓реЗ ER-TFT101-1 (10 рдЗрдВрдЪ, RA8876 рдбреНрд░рд╛рдЗрд╡рд░) рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред




рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


EastRising рдХрд╛ ER-TFT101-1 рдПрдХ 10-рдЗрдВрдЪ TFT рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рдПрдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ 1024x600 рдХрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдФрд░ RA8876 рдбреНрд░рд╛рдЗрд╡рд░ рд╡рд╛рд▓рд╛ рдмреЛрд░реНрдб рд╣реИред рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде рдмреЛрд░реНрдб рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рд╣реИ, рдПрд╕рдбреА-рд░реИрдо рдореЗрдореЛрд░реА 16 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ (16-рдмрд┐рдЯ рдмрд╕, 166 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдЕрдзрд┐рдХрддрдо рдЖрд╡реГрддреНрддрд┐, 64 рдПрдордмреА рдЕрдзрд┐рдХрддрдо рдХреНрд╖рдорддрд╛) рд╣реИ, рдПрдХ рдорд╛рдирдХ рдорд╛рдЗрдХреНрд░реЛрдПрд╕рдбреА рдХрд╛рд░реНрдб рд╕реНрд▓реЙрдЯ рд╣реИред EEPROM рдХреЗ рддрд╣рдд рдмрд╛рд╣рд░реА рдлреЛрдВрдЯ рдХреЗ рд╕рд╛рде рдЦрд╛рд▓реА рдкреИрд░реЛрдВ рдХреЗ рдирд┐рд╢рд╛рди рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдХрдиреЗрдХреНрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдХреЗ рддрд╣рддред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдкреНрд░рддрд┐рд░реЛрдзрдХ рдпрд╛ рдХреИрдкреЗрд╕рд┐рдЯрд┐рд╡ рдЯрдЪ рдкреИрдирд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдмреЛрд░реНрдб рдореЗрдВ рдЯреЙрдк-рдПрдВрдб RAOO RA8876 рдбреНрд░рд╛рдЗрд╡рд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдзрд┐рдХрддрдо 120 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдЖрд╡реГрддреНрддрд┐ рд╣реИ, рдЬреЛ рдХрд┐ рдЕрдЧрд░ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЦреБрдж рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо (рдХреЗрд╡рд▓ 12 рдирд┐рд░реНрджреЗрд╢) рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрд╛рд╣рд░реА рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдкреНрд░рджрд░реНрд╢рди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдЪрд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛, рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рджреЛрд╣рд░рд╛рдПрдЧрд╛ред



RA8876 рдХреА рдЕрдкрдиреА рд░реИрдо рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╛рд╣рд░реА рдПрд╕рдбреА-рд░реИрдо рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдбреАрдПрдордП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдлреНрд░реЗрдо рдмрдлрд░ рдореЗрдВ рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдмрд╣реБрдд рд╣реА рд▓рдЪреАрд▓рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред рдбреНрд░рд╛рдЗрд╡рд░ рдорд╛рдирдХ 18-рдмрд┐рдЯ рд╡рд╛рдЗрдб рдЖрд░рдЬреАрдмреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдХреЗрд╡рд▓ 6 рдмрд┐рдЯ рдкреНрд░рддрд┐ рд░реЗрдб рдЪреИрдирд▓, 6 рдмрд┐рдЯ рдкреНрд░рддрд┐ рдЧреНрд░реАрди рдФрд░ 6 рдмрд┐рдЯ рдмреНрд▓реВ рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдХреЗ рдирд┐рдЪрд▓реЗ рджреЛ рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ 262,144 рд░рдВрдЧ рджреЗрддрд╛ рд╣реИред

RA8876 рдХрд╛ DMA рдореЙрдбреНрдпреВрд▓ STM рдХреЗ DMA2D рд╕реЗ рдХрд╛рдлреА рдорд┐рд▓рддрд╛-рдЬреБрд▓рддрд╛ рд╣реИ - рдпрд╣ рд░рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг, рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдФрд░ рдЕрдиреНрдп рдЪрд┐рдкреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд╛рди рд╕реЗ рджреВрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ рдореЗрдореЛрд░реА рдХреЗ рдЖрдпрддрд╛рдХрд╛рд░ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред

RA8876 рдореЗрдВ рдЙрдирдХреЗ рдбрд┐рд╕реНрдкреНрд▓реЗ (рд░реЛрдЯреЗрд╢рди, рд╕реНрдХреЗрд▓ рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рд▓рдЪреАрд▓реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдВрдЧреНрд░реЗрдЬреА рдФрд░ рдЪреАрдиреА рдлреЛрдВрдЯ (8x16,12x24,16x32 рдкрд┐рдХреНрд╕рд▓) рднреА рд╣реИрдВ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ (5 x 5) (рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдХреЗ рд▓рд┐рдП) рди рдХреЗрд╡рд▓) рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде, рдЬреИрд╕реЗ рдХрд┐ рд▓рдВрдмреЗ рдФрд░ рдЫреЛрдЯреЗ рдкреНрд░реЗрд╕, рдПрдХ рдмрдЯрди рджрдмрд╛рдХрд░ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдмрдЯрди рджрдмрд╛рдХрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЬрдЧрд╛рдПрдВред

рдХрд┐рд╕реА рднреА рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдФрд░ рдореЗрдиреВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╕реНрд╡реАрд░-рдЗрди-рдкрд┐рдХреНрдЪрд░ рдлрд╝рдВрдХреНрд╢рди (рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛) рд╣реИред

рдЪрд╛рд▓рдХ рд╕реНрд╡рдпрдВ рдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡реНрд╕ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╡рд░реНрдЧ, рд╡реГрддреНрдд, рд╡рдХреНрд░, рдЕрдВрдбрд╛рдХрд╛рд░, рддреНрд░рд┐рдХреЛрдг, рдЧреЛрд▓ рд╡рд░реНрдЧ, рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ рднрд░реЗрдВред рд╡реИрд╕реЗ, RA8875 рдореЗрдВ рдФрд░ RA8876 рдореЗрдВ рддреНрд░рд┐рдХреЛрдг рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдмрдЧ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЕрдкрдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЙрдЪреНрдЪ рдШрдВрдЯреА рдЯреЙрд╡рд░ рд╕реЗ RAIO рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╢рд╛рдк рдирд╣реАрдВ рджрд┐рдпрд╛ ... рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдПрдХ рдкрддреНрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ рдЬрд╡рд╛рдм рднреА рдирд╣реАрдВ рджрд┐рдпрд╛ред рдЗрд╕ рддрд░рд╣ рдХреА рдЖрджрд┐рдо рд░реЗрдЦрд╛рдПрдВ рдЦреАрдВрдЪрдирд╛ рдЖрдкрдХреЛ рдПрдХ рдзреАрдореА рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде рднреА рд╕реБрдВрджрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде, RA8876 8080/6800 8/16 рдмрд┐рдЯ, 3/4 рддрд╛рд░ SPI рдФрд░ I2C рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреНрд░рд╛рдЗрд╡рд░ рдЪрд┐рдк рд╕реНрд╡рдпрдВ рдПрдХ SPI рдФрд░ I2C рдорд╛рд╕реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред RA8876 рдореЗрдВ, рджреЛ PWM рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдмреИрдХрд▓рд╛рдЗрдЯ рдХреЗ рд▓рдЪреАрд▓реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрддрдо SPI рд╕реАрдПрд▓рдХреЗ рдЖрд╡реГрддреНрддрд┐ 120 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреЗ рдЪрд╛рд▓рдХ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде 66 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдкрд░ рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдЕрдкрдбреЗрдЯ рдХреЗ 6 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб (1024 x 600 x 16 рдмрд┐рдЯ рдкрд░) рджреЗрддреА рд╣реИред рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЕрдЧрд░ рд╣рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ рддреЛ рдЙрд╕реЗ рдЬреАрд╡рди рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдлрдПрдорд╕реА рдореЙрдбреНрдпреВрд▓ (рд▓рдЪреАрд▓реА рдореЗрдореЛрд░реА рдХрдВрдЯреНрд░реЛрд▓рд░) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ 80 рдмрд┐рдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдорджрдж рд╕реЗ 16 рдмрд┐рдЯреНрд╕ рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд╕рд╛рде STM32F429ZIT6 рдХреЗ рд╕рд╛рде рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рд╣рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдЕрдзрд┐рдХ рд╕реНрдХреНрд░реАрди рдлрд┐рд▓рд┐рдВрдЧ рд╕реНрдкреАрдб рдФрд░ рдХрдо рд▓реЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

8080 рдкрд┐рди рдФрд░ рдПрдлрдПрдорд╕реА рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕


рд╣рдо рдбрд┐рд╕реНрдкреНрд▓реЗ рдкрд░ рдбреЗрдЯрд╛рд╢реАрдЯ рдореЗрдВ 8080 рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдЖрд░реЗрдЦ рджреЗрдЦреЗрдВрдЧреЗ:



рд╣рдо рдХреНрдпреВрдПрдордПрдордПрдХреНрд╕ рдореЗрдВ рдПрд╕рдЯреАрдПрдо 32 рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд┐рдиреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рд╣рдо рдмреИрдВрдХ # 1 (NOR Flash / PSRAM / SRAM / ROM / LDC 1) рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред



рдбреЗрдЯрд╛ рдкрддреНрд░рдХ рдореЗрдВ XnWAIT рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ:
рдирд┐рд░рдВрддрд░ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдЧрддрд┐ рдкреНрд░рджрд░реНрд╢рди рдЕрдкрдбреЗрдЯ рдХреА рдЧрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП XnWait рдХреЛ рдЕрдкрдирд╛рдП рдмрд┐рдирд╛ рдЪрдХреНрд░-рд╕реЗ-рдЪрдХреНрд░ рдЕрдВрддрд░рд╛рд▓ 5 рд╕рд┐рд╕реНрдЯрдо рдШрдбрд╝реА рдХреА рдЕрд╡рдзрд┐ рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди xnwait рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдбреЗрдЯрд╛ рдЦреЛ рдЬрд╛рдиреЗ рдпрд╛ рдХрд╛рд░реНрдп рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╡рд╕реНрддреБрддрдГ, 8080 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдЪрдХреНрд░реЛрдВ рдХреЗ рдмреАрдЪ, 5 RA8876 рд╕рд┐рд╕реНрдЯрдо рд╢реНрд░реЗрдбреЛрдВ рдХреА рджреЗрд░реА рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ RA8876 рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП XnWAIT рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рдкрд┐рди рдХрд╛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╛рдВрдЪ рдЪрдХреНрд░реЛрдВ рдХреА рджреЗрд░реА рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

FMC рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдкрддрд╛ рдмрд╕ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдкрд┐рди A16 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

  1. рд╣рдо рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝рдВрдХреНрд╢рди # 12 рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдкрд┐рди (D0 - D15) рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдкреБрд╢ рдкреВрд▓, рдЕрдзрд┐рдХрддрдо рдЧрддрд┐ рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рдирд┐рд▓рдВрдмрд┐рддред
  2. рдкрд┐рдВрд╕ XnWAIT, XnWR, XnRD, XA0 рдФрд░ XnCS рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝рдВрдХреНрд╢рди # 12 рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕реЗ рдкреБрд╢-рдкреБрд▓ рд╕реЗ рдкреНрд▓рд╕ (PULL UP) рддрдХред
  3. рд╣рдо рдПрдХ рдирд┐рд▓рдВрдмрд┐рдд GPIO рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд GPIO рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣ рд╕реНрд╡рдпрдВ рдмреЛрд░реНрдб рдкрд░ рд╣реИ)ред
  4. XnINTR рдПрдХ GPIO рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд┐рдлреНрдЯ рд╕реЗ рдкреНрд▓рд╕ рддрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ PWM рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдмреИрдХрд▓рд╛рдЗрдЯ рдХреЛ 100% рд╕реЗ рдЬреЛрдбрд╝рд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбрд┐рд╕реНрдкреНрд▓реЗ рдЕрд╕реЗрдВрдмрд▓реА рдХрдиреЗрдХреНрдЯрд░ рдкрд░ рдкрд┐рди # 14 VDD рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

рдореИрдВ рдкрд┐рди рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛрдб рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ GPIO рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд╣рд▓реЗ рд╣реА рд╣рдм рдФрд░ рдЕрдиреНрдп рд╕реНрд░реЛрддреЛрдВ рдкрд░ рдПрдХ рд╕реМ рдмрд╛рд░ рдЪрдмрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╣рд╛рдБ рд╣реИ ред

рдПрдлрдПрдорд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕


рдкреНрд░рддреНрдпреЗрдХ рдмреИрдВрдХ рдХреЗ рд▓рд┐рдП рддреАрди рдмреИрдВрдХ FMC рдореЙрдбреНрдпреВрд▓ (NOR Flash / PSRAM / SRAM / ROM / LDC 1) рдХреЗ рдмреИрдВрдХреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдпреЗ FMC_BCRx, FMC_BTRx рдФрд░ FMC_BWTRx рд╣реИрдВред STM32F429 MK рдкрд░рд┐рднрд╛рд╖рд┐рдд рдореЗрдВ, FMC_BCRx рдФрд░ FMC_BTRx рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рдЖрда рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде FMC_BTCR рдирд╛рдордХ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рд╢реВрдиреНрдп рддрддреНрд╡ FMC_BCR1 рд╣реИ, рдкрд╣рд▓рд╛ рддрддреНрд╡ FMC_BCR1 рд╣реИ, рджреВрд╕рд░рд╛ рддрддреНрд╡ FMC_BCR2 рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред FMC_BWTRx рдХреЛ рд╕рд╛рдд рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде FMC_BWTR рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЪрд╛рд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдореБрдЭрд╕реЗ рдордд рдкреВрдЫреЛ рдХреНрдпреЛрдВ ...

FMC_BCRx рдореЗрдВ рдореВрд▓рднреВрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реЛрддреА рд╣реИрдВ, FMC_BTRx рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕рдордпрд╛рд╡рдзрд┐ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрджрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ FMC_BWTRx рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рд╣реЛрддреЗ рд╣реИрдВред

STM32F429 рдФрд░ RA8876 рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рд╕рдордп рдЖрд░реЗрдЦ рдФрд░ рд╕рдордпред



рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рд╣рдо 8080 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдордп рдХреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВрдЧреЗред рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдЖрдиреБрднрд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛, рдореВрд▓реНрдп рдХрд╛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдХрдо рдХрд░рддреЗ рд╣реБрдП, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╢реАрдЯ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд┐рдВрдЧ рдЯреЗрдмрд▓ рдПрдХ рд╡реИрдХреНрдпреВрдо рдореЗрдВ рдПрдХ рдЧреЛрд▓рд╛рдХрд╛рд░ рдШреЛрдбрд╝реЗ рдХреА рддрд░рд╣ рд╣реИред

unsigned long ADDSET = 0; unsigned long ADDHLD = 1; unsigned long DATAST = 5; unsigned long BUSTURN = 0; unsigned long CLKDIV = 1; unsigned long DATLAT = 0; unsigned long ACCMOD = 0; RCC->AHB3ENR |= RCC_AHB3ENR_FMCEN; //  FMC FMC_Bank1->BTCR[0] = 0; //    FMC_Bank1->BTCR[0] |= FMC_BCR1_MWID_0; //    16  FMC_Bank1->BTCR[0] |= FMC_BCR1_WREN; //    FMC_Bank1->BTCR[0] |= FMC_BCR1_WAITEN; //   XnWAIT FMC_Bank1->BTCR[0] |= FMC_BCR1_ASYNCWAIT; // XnWAIT    FMC_Bank1->BTCR[0] |= FMC_BCR1_WAITCFG; //  XnWAIT FMC_Bank1->BTCR[1] = 0; //    FMC_Bank1->BTCR[1] |= (ADDSET << 0) | (ADDHLD << 4) | (DATAST << 8) | (BUSTURN << 16) | (CLKDIV << 20) | (DATLAT << 24) | (ACCMOD << 28); //   FMC_Bank1->BTCR[0] |= 1; //    

рд░реАрд╕реЗрдЯ рдХреЗ рдмрд╛рдж FMC_BTCRx рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдореВрд▓реНрдп 0x0FFF FFFF рд╣реИ, рдЕрд░реНрдерд╛рдд рдЕрдзрд┐рдХрддрдо рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдирдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдпрд╛ рдореЗрдореЛрд░реА рд╣реИ, рддреЛ рд╕рдордп рдХрдо рдХрд░реЗрдВ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рджрд░реНрд╢рди


рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕реНрдореГрддрд┐ рдХреЗ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдпрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИред рдПрдлрдПрдорд╕реА рдмрд╛рдХреА рдХрд╛рдореЛрдВ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддреА рд╣реИред рдХрд╛рд░реНрдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 #define LCD_DATA 0x60020000 #define LCD_REG 0x60000000 

рдФрд░ рдЕрдм рд╣рдо рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:

 void LCD_CmdWrite (unsigned char cmd) { *(unsigned short *)(LCD_REG) = cmd; }; void LCD_DataWrite (unsigned short data) { *(unsigned short *)(LCD_DATA)= data; }; unsigned char LCD_StatusRead(void) { unsigned short data = *(unsigned short *)(LCD_REG); return data; }; unsigned char LCD_DataRead(void) { unsigned short data = * (unsigned short *)(LCD_DATA); return (unsigned char)data; }; void LCD_RegisterWrite(unsigned char cmd, unsigned char data) { *(unsigned short *)(LCD_REG) = cmd; *(unsigned short *)(LCD_DATA) = data; }; unsigned char LCD_RegisterRead (unsigned char cmd) { volatile unsigned char data = 0; LCD_CmdWrite (cmd); data = LCD_DataRead (); return data; }; 

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

рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдЬреАрдердм рдкрд░ рд▓рд┐рдВрдХ рдХрд░реЗрдВ

 void RA8876_Init(void) { RA8876_PLL_Init (); //   RA8876  120  RA8876_SDRAM_Init (); //  SDRAM  166  TFT_24bit (); //    24   ??? Host_Bus_16bit (); //   16  RGB_16b_16bpp (); //   16  MemWrite_Left_Right_Top_Down (); //       . Graphic_Mode (); //    Memory_Select_SDRAM (); //   SDRAM /*  RGB     RA8876 */ HSCAN_L_to_R (); VSCAN_T_to_B (); PDATA_Set_RGB (); PCLK_Falling (); DE_High_Active (); HSYNC_High_Active (); VSYNC_High_Active (); LCD_HorizontalWidth_VerticalHeight (1024, 600); LCD_Horizontal_Non_Display (160); LCD_HSYNC_Start_Position (160); LCD_HSYNC_Pulse_Width (70); LCD_Vertical_Non_Display (23); LCD_VSYNC_Start_Position (12); LCD_VSYNC_Pulse_Width (10); //   Frame_Buffer_Start_Address (PAGE0_START_ADDR); Frame_Buffer_Width (1024); Frame_Buffer_Start_XY (0, 0); Frame_Buffer_Color_Mode_16bpp (); //   Canvas_Window_Start_Address (PAGE0_START_ADDR); Canvas_Window_Width (1024); Canvas_Window_Start_XY (0, 0); Canvas_Window_WH (1024, 600); Canvas_Memory_XY_Mode (); Canvas_Window_Color_Mode_16bpp (); } 

рдлрд╝реНрд░реЗрдордмрдлрд╝рд░ рдФрд░ рд╕рдХреНрд░рд┐рдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХред рдЗрди рджреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 #define PAGE0_START_ADDR 0 #define PAGE1_START_ADDR (1024 * 600 * 2 * 1) #define PAGE2_START_ADDR (1024 * 600 * 2 * 2) #define PAGE3_START_ADDR (1024 * 600 * 2 * 3) #define PAGE4_START_ADDR (1024 * 600 * 2 * 4) #define PAGE5_START_ADDR (1024 * 600 * 2 * 5) #define PAGE6_START_ADDR (1024 * 600 * 2 * 6) #define PAGE7_START_ADDR (1024 * 600 * 2 * 7) #define PAGE8_START_ADDR (1024 * 600 * 2 * 8) #define PAGE9_START_ADDR (1024 * 600 * 2 * 9) #define PAGE10_START_ADDR (1024 * 600 * 2 * 10) #define PAGE11_START_ADDR (1024 * 600 * 2 * 11) #define PAGE12_START_ADDR (1024 * 600 * 2 * 12) 

рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда (PAGEx_START_ADDR) SDRAM рдореЗрдВ рд╢реБрд░реБрдЖрддреА рдкрддрд╛ рд╣реИред 16 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдореЛрд░реА рдореЗрдВ, рд╣рдо 13 рдкреВрд░реНрдг рдкрд░рддреЛрдВ рдХреЛ 1228800 рдмрд╛рдЗрдЯреНрд╕ (1024 * 600 * 2) рдЖрдХрд╛рд░ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
Frame_Buffer_Start_Address рдлрд╝рдВрдХреНрд╢рди рдлрд╝реНрд░реЗрдордмрдлрд╝рд░ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

Canvas_Window_Start_Address рдлрд╝рдВрдХреНрд╢рди рдХреИрдирд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреИрдирд╡рд╛рд╕ рдлреНрд░реЗрдо рдмрдлрд╝рд░ рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╕реНрдХреНрд░реАрди рдкрд░ рдЫрд╡рд┐ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЧреЗрдо рдХреЗ рд▓рд┐рдП, рдЖрдк 13312 x 600 рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рдорд╛рдкрдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд▓рдВрдмрд╛ рдХреИрдирд╡рд╛рд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдлреНрд░реЗрдордмрдлрд╝рд░ рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдкрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк STM32 рд╕реЗ LTDM рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд░рд╕реАрд▓рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕реА рд╕рдордп, рдЪрд╛рд▓рдХ рд╕реНрд╡рдпрдВ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрдкрдХреА рднрд╛рдЧреАрджрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛, рдХреЗрд╡рд▓ рдПрдХ рдЕрдВрддрд┐рдо (рдмрдлрд░) рдкрд░рдд рдФрд░ LTDC рдХреЛ рддреБрд░рдВрдд рджреЛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЖрджрд┐рдо рдЖрд░реЗрдЦрдг


рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдбрд┐рд╕реНрдкреНрд▓реЗ рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдХреЛрдб:

 void Start_Line (void); void Start_Triangle (void); void Start_Triangle_Fill (void); void Line_Start_XY (unsigned short WX, unsigned short HY); void Line_End_XY (unsigned short WX, unsigned short HY); void Triangle_Point1_XY (unsigned short WX, unsigned short HY); void Triangle_Point2_XY (unsigned short WX, unsigned short HY); void Triangle_Point3_XY (unsigned short WX, unsigned short HY); void Square_Start_XY (unsigned short WX, unsigned short HY); void Square_End_XY (unsigned short WX, unsigned short HY); void Start_Circle_or_Ellipse (void); void Start_Circle_or_Ellipse_Fill (void); void Start_Left_Down_Curve (void); void Start_Left_Up_Curve (void); void Start_Right_Up_Curve (void); void Start_Right_Down_Curve (void); void Start_Left_Down_Curve_Fill (void); void Start_Left_Up_Curve_Fill (void); void Start_Right_Up_Curve_Fill (void); void Start_Right_Down_Curve_Fill (void); void Start_Square (void); void Start_Square_Fill (void); void Start_Circle_Square (void); void Start_Circle_Square_Fill (void); void Circle_Center_XY (unsigned short WX, unsigned short HY); void Ellipse_Center_XY (unsigned short WX, unsigned short HY); void Circle_Radius_R (unsigned short WX); void Ellipse_Radius_RxRy (unsigned short WX, unsigned short HY); void Circle_Square_Radius_RxRy (unsigned short WX, unsigned short HY); 

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рднрд░реЗ рд╣реБрдП рддреНрд░рд┐рднреБрдЬ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рддреАрди рдмрд┐рдВрджреБрдПрдБ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ: Triangle_Point1_XY, Triangle_Point2_XY, Triangle_Point2_XY рдФрд░ Start_Triangle_Fill рдлрд╝рдВрдХреНрд╢рди рдЪрд▓рд╛рдПрдБред

рдбреАрдПрдордП рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЛ рдПрдХ рдкрд╛рд░рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛:

 struct GFX_BTE_options { unsigned long layer_s0_addr; //     0 unsigned long layer_s1_addr; //     1 unsigned long layer_d_addr; //     unsigned short layer_s0_width; //    0 unsigned short layer_s1_width; //    1 unsigned short layer_d_width; //    unsigned short layer_s0_start_x; //     0 unsigned short layer_s0_start_y; //   Y  0 unsigned short layer_s1_start_x; //   X  1 unsigned short layer_s1_start_y; //   Y  1 unsigned short layer_d_start_x; //   X   unsigned short layer_d_start_y; //   Y   unsigned short window_size_x; //     unsigned short window_size_y; //     unsigned char rop_code; //  ROP unsigned char operation_code; //   DMA };       DMA: void GFX_BTE_operation (struct GFX_BTE_options options) { BTE_S0_Color_16bpp (); BTE_S0_Memory_Start_Address (options.layer_s0_addr); BTE_S0_Image_Width (options.layer_s0_width); BTE_S0_Window_Start_XY (options.layer_s0_start_x, options.layer_s0_start_y); BTE_S1_Color_16bpp (); BTE_S1_Memory_Start_Address (options.layer_s1_addr); BTE_S1_Image_Width (options.layer_s1_width); BTE_S1_Window_Start_XY (options.layer_s1_start_x, options.layer_s1_start_y); BTE_Destination_Color_16bpp (); BTE_Destination_Memory_Start_Address (options.layer_d_addr); BTE_Destination_Image_Width (options.layer_d_width); BTE_Destination_Window_Start_XY (options.layer_d_start_x, options.layer_d_start_y); BTE_Window_Size (options.window_size_x, options.window_size_y); BTE_ROP_Code (options.rop_code); BTE_Operation_Code (options.operation_code); BTE_Enable (); Check_BTE_Busy (); } 

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдХреЛрдб рдХрд╛ рд╡рд┐рд╡рд░рдг (рд╕рдВрдЪрд╛рд▓рди рдХреЛрдб):

0000: рдПрдордХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд░рдУрдкреА рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдореЗрдВ рд▓рд┐рдЦреЗрдВред
0001: рдПрдордХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ROP рдХреЗ рдмрд┐рдирд╛ рдореЗрдореЛрд░реА рдкрдврд╝реЗрдВред
0010: ROP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЧреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред
0011: ROP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХреЛ рд░рд┐рд╡рд░реНрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ред
0100: рдПрдордХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ROP рдХреЗ рдмрд┐рдирд╛ рдореЗрдореЛрд░реА (рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рд╛рде) рд▓рд┐рдЦреЗрдВред
0101: ROP рдХреЗ рдмрд┐рдирд╛ рдЖрдЧреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ (рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рд╛рде) рдХреЛ рдХреЙрдкреА (рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд) рдХрд░реЗрдВред
0110: ROP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреИрдЯрд░реНрди рднрд░реЗрдВред
0111: рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдХреНрд░реЛрдореЗрдХреА рд╕реЗ рднрд░реЗрдВред
1000: рд░рдВрдЧ рд╡рд┐рд╕реНрддрд╛рд░
1001: рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рд╛рде рдмрдврд╝рд╛рдпрд╛ рд░рдВрдЧ
1010: рдЕрд▓реНрдлрд╛ рдмреНрд▓реЗрдВрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛
1011: рдПрдордХреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЕрд▓реНрдлрд╛ рд╕рдореНрдорд┐рд╢реНрд░рдг рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рд▓рд┐рдЦрдирд╛ред
1100: рдПрдХ рдареЛрд╕ рд░рдВрдЧ рдХреЗ рд╕рд╛рде рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ рдХреЛ рднрд░рддрд╛ рд╣реИред
1101: рдЖрд░рдХреНрд╖рд┐рдд
1110: рдЖрд░рдХреНрд╖рд┐рдд
1111: рдЖрд░рдХреНрд╖рд┐рдд

рд░реЗрдЦрд╛рдкреБрдВрдЬ рдХреЛрдб (рдЖрд░рдУрдкреА рдХреЛрдб) рдХрд╛ рд╡рд┐рд╡рд░рдг:

0000b: 0 (рдХрд╛рд▓рд╛)
0001b: ~ S0 S ~ S1 рдпрд╛ ~ (S0 + S1)
0010 рдмреА: ~ рдПрд╕ 0 1 рдПрд╕ 1
0011 рдмреА: ~ рдПрд╕ 0
0100b: S0 0 ~ S1
0101 рдмреА: ~ рдПрд╕ 1
0110b: S0 ^ S1
0111b: ~ S0 + ~ S1 рдпрд╛ ~ (S0 S S1)
1000b: S0 уГ╗ S1
1001b: ~ (S0 ^ S1)
1010 рдмреА: рдПрд╕ 1
1011 рдмреА: ~ рдПрд╕ 0 + рдПрд╕ 1
1100 рдмреА: рдПрд╕ 0
резрезрежрез рдмреА: рдПрд╕ реж + ~ рдПрд╕ рез
1110b: S0 + S1
1111 рдмреА: 1 (рд╕рдлреЗрдж)

S0 рд╢реВрдиреНрдп рдкрд░рдд рд╣реИ, S1 рдкрд╣рд▓реА рдкрд░рдд рд╣реИред рдЙрдирдХреЗ рдмреАрдЪ рдХреА рдмрд╛рддрдЪреАрдд рдЕрдВрдХрдЧрдгрд┐рдд рдФрд░ рдмрд┐рдЯ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реЛрддреА рд╣реИред

рдЗрдирд▓рд╛рдЗрди рдлрд╝реЙрдиреНрдЯ рдЖрдЙрдЯрдкреБрдЯ


 void GFX_Show_String_TMODE (short x, short y, char *ptr, unsigned short charColor, unsigned short bkColor) { Foreground_color_65k (charColor); Background_color_65k (bkColor); CGROM_Select_Internal_CGROM (); Font_Select_12x24_24x24 (); Text_Mode (); Goto_Text_XY (x, y); LCD_CmdWrite (0x04); while (*ptr != '\0') { LCD_DataWrite (*ptr); Check_Mem_WR_FIFO_not_Full (); ++ptr; } Check_2D_Busy (); Graphic_Mode (); //back to graphic mode } 

рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдВрдХ рдкрд░ рдЬреАрдердм рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдЖрдк рд╕рднреА рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

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


All Articles