{"id":296613,"date":"2019-12-30T15:00:42","date_gmt":"2019-12-30T15:00:42","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=296613"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=296613","title":{"rendered":"\u0412\u0432\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 STM32F4xx \u0441 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0410\u0426\u041f \u0447\u0435\u0440\u0435\u0437 DCMI"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/482506\/\">\n<p>\u0418\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 STM32F4xx, \u0438\u043c\u0435\u044f \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u044f\u0434\u0440\u0430, \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0434\u043b\u044f \u00ab\u043d\u0435 \u043c\u044f\u0441\u043e\u0440\u0443\u0431\u043e\u0447\u043d\u044b\u0445\u00bb \u0437\u0430\u0434\u0430\u0447 \u0426\u041e\u0421 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0448\u0438\u043d\u044b \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u00abpipe-line\u00bb (clk-data). \u00ab\u041f\u043e\u043a\u0443\u0440\u0438\u0432\u00bb \u00abdm00037051.pdf\u00bb, \u043d\u0430\u0448\u0435\u043b \u043d\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0439, \u043d\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2013 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 DCMI (Digital camera interface). <\/p>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0426\u041e\u0421 (\u041a\u0418\u0425, \u0411\u0418\u0425, FFT) \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 STM32, \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0442\u0430\u043a \u043b\u0435\u0433\u043b\u0438 \u043a\u0430\u0440\u0442\u044b \u0438 \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043f\u043b\u044e\u0441 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0438\u0437\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432. \u041e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c.  <\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<p>\u041d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 \u00ab\u0433\u043e\u0440\u044f\u0447\u0438\u043c\u0438\u00bb \u0441\u0440\u043e\u043a\u0430\u043c\u0438 \u0438 \u0431\u044e\u0434\u0436\u0435\u0442\u043e\u043c \u0431\u044b\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u00ab\u0436\u0435\u043b\u0435\u0437\u043a\u0443\u00bb \u0441 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438: \u043c\u0430\u0441\u0441\u043e\u0439, \u0433\u0430\u0431\u0430\u0440\u0438\u0442\u0430\u043c\u0438, \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435\u043c. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 (\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437), \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0435\u0433\u043e \u0441 \u0410\u0426\u041f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u00ab\u043c\u044f\u0433\u043a\u043e\u0433\u043e\u00bb \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0438\u043c\u0435\u0442\u044c \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u0421\u0438\u0433\u043d\u0430\u043b \u0441 \u0410\u0426\u041f \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 48 \u041c\u0413\u0446. \u041f\u043e\u043b\u043e\u0441\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 1 \u041c\u0413\u0446. \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u043f\u0435\u043a\u0442\u0440\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0432 \u043d\u043e\u043b\u044c, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0443\u0431\u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0448\u0438\u0440\u043e\u043a\u043e\u043f\u043e\u043b\u043e\u0441\u043d\u043e\u0433\u043e \u0410\u0426\u041f. \u0422\u0430\u043a\u0436\u0435, \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c Ethernet, SPI, UART, I2C \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043c\u0438.   <\/p>\n<p>  <\/p>\n<p>\u0421\u0440\u043e\u043a\u0438 \u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0426\u041e\u0421 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c FPGA \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439. \u0421 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 Blackfin \u043e\u0442 \u0432\u0441\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 Analog Devices \u043d\u0435 \u0431\u044b\u043b\u043e \u043e\u043f\u044b\u0442\u0430 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0438 \u0434\u0435\u043c\u043e\u043f\u043b\u0430\u0442\u044b. \u0418\u043c\u0435\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u044b\u0442 \u0442\u0435\u0441\u043d\u043e\u0433\u043e \u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0434\u043e\u0440\u043e\u0433\u0443\u0449\u0438\u043c, \u043d\u0435\u043a\u043e\u0433\u0434\u0430 \u0444\u043b\u0430\u0433\u043c\u0430\u043d\u043e\u043c \u0426\u041e\u0421, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 ADSP-TS201 TigerSHARC. \u041a \u0442\u043e\u043c\u0443-\u0436\u0435 \u0432 Blackfin \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f IEEE-754. \u0422\u0430\u043a\u0436\u0435, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0410\u0426\u041f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 128 \u041a\u0431\u0430\u0439\u0442, \u043f\u043b\u044e\u0441 30 \u041a\u0431\u0430\u0439\u0442 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 \u0443\u0436\u0435 \u0431\u0435\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043b\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0441\u0435 \u0432\u043f\u0438\u0445\u043d\u0443\u0442\u044c \u0432\u043e \u0447\u0442\u043e-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u043d\u0435\u0435 \u0431\u044e\u0434\u0436\u0435\u0442\u043d\u043e\u0435.   <\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435\u043c, \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u0431\u044b\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0442\u044b STM32F407 (Discovery \u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0441 \u041a\u0438\u0442\u0430\u044f). \u041a\u0430\u043a \u044f \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u044e \u0443 \u043c\u043d\u043e\u0433\u0438\u0445, \u043a\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0441\u043c\u0435\u0436\u043d\u043e\u0439 \u0442\u0435\u043c\u0430\u0442\u0438\u043a\u043e\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u0442\u0430\u043a\u0438\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u044b\u0440\u0443\u0447\u0430\u043b\u043e\u0447\u043a\u0438 \u0438\u043c\u0435\u044e\u0442\u0441\u044f. \u0422\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u043b\u0430\u0441\u044c \u043f\u043b\u0430\u0442\u0430 ADA-HSMC \u043e\u0442 Terasic, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0434\u0432\u0443\u0445\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0410\u0426\u041f AD9228 (12-bit, Fd=65 msps, bandwidth = 315 MHz).  <\/p>\n<p>  <\/p>\n<p>\u041d\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0439, \u043d\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2013 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 DCMI (Digital camera interface), \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 STM32F4.   <\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 RM0090, DocID018909, \u0441\u0442\u0440. 454\/1718. \u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0438\u0437 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.   <\/p>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u043e\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e 54 \u041c\u0413\u0446. \u0427\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u2014 \u043d\u0430\u0448\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u0443\u0431\u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 10 \u041c\u0413\u0446. \u0412\u043e\u0442 \u043d\u0430\u0431\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 DCMI:  <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ko\/nl\/eu\/konleu5wruvzibgudm1jxb2eqnw.png\"\/><\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: D13, D14 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 144-\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u043e\u043c \u043a\u043e\u0440\u043f\u0443\u0441\u0435. \u041c\u044b \u0438\u043c\u0435\u0435\u043c 100-\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u044b\u0439, \u043d\u043e \u043d\u0430\u043c \u043e\u043d\u0438 \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b. (\u0445\u043e\u0442\u044f \u0443 Analog Devices \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435 14 bit \u0410\u0426\u041f \u2014 AD9248).  <\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u0430\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430:  <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/5i\/y2\/5y\/5iy25yfo20vatfc5l6amwv1aqm4.png\"\/><\/p>\n<p>\u0410 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043a\u0430\u0434\u0440\u0430 JPEG:  <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bc\/zf\/px\/bczfpxfe2rum9uevbf249qcwcmu.png\"\/><\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442.\u043a. \u043e\u043d \u043d\u0430\u043c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442.  <\/p>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0441\u0438\u0433\u043d\u0430\u043b VSYNC \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u043c \u043a \u043f\u0438\u0442\u0430\u043d\u0438\u044e. HSYNC \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443.   <\/p>\n<p>  <\/p>\n<p>\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 STM32F407RGT6 \u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0435 LQFP100.  <\/p>\n<p>  <\/p>\n<p>\u0423 \u0410\u0426\u041f AD9238 \u0435\u0441\u0442\u044c \u0432\u0445\u043e\u0434 \u0440\u0435\u0436\u0438\u043c\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f (\u044d\u043d\u0435\u0440\u0433\u043e\u0441\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u044f) \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 PDWN_A(B), \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e \u0432\u044b\u0445\u043e\u0434\u0443 OEB_A(B). \u041b\u043e\u0433\u0438\u0447\u043d\u043e \u0438\u0445 \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0441 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0438\u043d\u043e\u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0441\u0445\u0435\u043c\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/07\/55\/k5\/0755k5ui-ippcicwu6ig4dxrhr0.png\"\/><\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0443 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0410\u0426\u041f \u043d\u0435\u0442 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0438\u0442\u0435\u0441\u044c (\u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0431\u0443\u0444\u0435\u0440). \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 LMK00101 \u043e\u0442 Texas Instruments \u2013 \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0446\u0435\u043d\u044b, \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u0434\u0436\u0438\u0442\u0442\u0435\u0440\u0430, \u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u043e\u043f\u044f\u0442\u044c-\u0436\u0435 \u2014 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 ).   <\/p>\n<p>  <\/p>\n<p>\u0412 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0448\u0438\u043d\u0435 \u0410\u0426\u041f \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043d\u0430 7 \u0442\u0430\u043a\u0442\u043e\u0432 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430.  <\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c (\u043a\u043e\u043d\u0435\u0447\u043d\u043e-\u0436\u0435) \u0447\u0435\u0440\u0435\u0437 DMA. \u0412\u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 DCMI \u0438 DMA.  <\/p>\n<p>  <\/p>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u044b\u0445 \u043d\u0430\u043c \u043f\u043e\u0440\u0442\u043e\u0432, DCMI \u0438 DMA2  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">GPIO_InitTypeDef GPIO_InitStructure;   \/* Enable DCMI GPIOs clocks *\/ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOE |  RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD, ENABLE);     \/* Enable DCMI clock *\/ RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI, ENABLE);\t RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE); <\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u0438\u043c \u043f\u0438\u043d\u043e\u043c (PA5) \u0431\u0443\u0434\u0435\u043c \u0438\u043c\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0434\u0440\u044b \u2013 HSYNC. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;     GPIO_Init(GPIOA, &GPIO_InitStructure);\t   GPIO_ResetBits(GPIOA, GPIO_Pin_5);\t\t\t\t\/\/HSYNC_PA4 -PA5 -&gt; GND\t  <\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 DCMI  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">  \/* PCLK *\/   GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_DCMI);      \/* D0-D7 *\/   GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_DCMI);   \/\/D0*   GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_DCMI);   \/\/D1*   GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_DCMI);   \/\/D2*   GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_DCMI);   \/\/D3*   GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_DCMI);  \/\/D4*   GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_DCMI);   \/\/D5*   GPIO_PinAFConfig(GPIOE, GPIO_PinSource5, GPIO_AF_DCMI);   \/\/D6*   GPIO_PinAFConfig(GPIOE, GPIO_PinSource6, GPIO_AF_DCMI);   \/\/D7*   GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_DCMI);   \/\/D8*   GPIO_PinAFConfig(GPIOC, GPIO_PinSource12, GPIO_AF_DCMI);   \/\/D9*   GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_DCMI);   \/\/D10*   GPIO_PinAFConfig(GPIOD, GPIO_PinSource2, GPIO_AF_DCMI);   \/\/D11*   \/* VSYNC *\/   GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_DCMI);   \/* HSYNC *\/   GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_DCMI);   \/* DCMI GPIO configuration **************************************************\/   \/* D0,D1,D2,D3,D4,D8,D9 *\/   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;     GPIO_Init(GPIOC, &GPIO_InitStructure);     \/* D6,D7*\/   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;   GPIO_Init(GPIOE, &GPIO_InitStructure);     \/* D10, D5, VSYNC(PB7) *\/   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;   GPIO_Init(GPIOB, &GPIO_InitStructure); \t \t \/* D11(PD2) *\/   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;   GPIO_Init(GPIOD, &GPIO_InitStructure);     \/* PCLK(PA6) HSYNC(PA4)*\/   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_6;   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;   GPIO_Init(GPIOA, &GPIO_InitStructure); <\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2013 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 DCMI \u0432 \u0440\u0435\u0436\u0438\u043c\u0435, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e JPEG \u043a\u0430\u0434\u0440\u0430\u043c.  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">  DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous;   DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Embedded;   DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Rising;   DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_Low;   DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_High;   DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;   DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_12b;  <\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 DMA  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">  DCMI_Init(&DCMI_InitStructure);   DMA_InitStructure.DMA_Channel = DMA_Channel_1;     DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;   \/\/0x50050028   DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)DCMI_PendingData;   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;   DMA_InitStructure.DMA_BufferSize = MAX_DOWBLE_BUF;   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;   DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;   DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;   DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;            DMA_InitStructure.DMA_FIFOThreshold =  DMA_FIFOThreshold_Full;   DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;   DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;        DMA_Init(DMA2_Stream1, &DMA_InitStructure); <\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 DMA  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">  NVIC_InitStructure.NVIC_IRQChannel = DMA2_Stream1_IRQn;   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); <\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u0434 \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0440\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e DCMI \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u043b\u0430\u0433 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.   <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">void EXTI1_IRQHandler() { \tEXTI_ClearFlag(EXTI_Line1); \t  DMA_ClearITPendingBit(DMA2_Stream1, DMA_IT_TCIF1); \tDMA_Cmd(DMA2_Stream1, DISABLE); \tDCMI_Cmd(DISABLE);\t \tdma_recv_f = 1;\t\t \t\/\/GPIO_ResetBits(GPIOE, GPIO_Pin_0);\t\t\/\/VSYNC reset } <\/code><\/pre>\n<p>  <\/p>\n<p>\u0421 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0432\u0441\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043d\u0430\u0448 \u043a\u0430\u043d\u0430\u043b DMA, \u0431\u043b\u043e\u043a DCMI, \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u043c \u043f\u0440\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e DCMI \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u0430\u0434\u0440\u043e\u0432 JPEG.  <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">  \/* Enable DMA transfer *\/   DMA_Cmd(DMA2_Stream1, ENABLE);   \/* Enable DCMI interface *\/   DCMI_Cmd(ENABLE); \t   \/* Start Image capture *\/    DCMI_CaptureCmd(ENABLE);\t   DCMI_JPEGCmd(ENABLE); <\/code><\/pre>\n<p>  <\/p>\n<p>\u0426\u0438\u043a\u043b \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0417\u0434\u0435\u0441\u044c \u043e\u043f\u0440\u043e\u0441 \u0444\u043b\u0430\u0433\u0430 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">uint8_t dma_recv_f = 0; \/\/\u0444\u043b\u0430\u0433, \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0435\u043c\u0430 \u0431\u043b\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. uint16_t DCMI_PendingData[8500]; \/\/\u0431\u0443\u0444\u0435\u0440 \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 DCMI  int main(void) {    DCMI_Config(); \/\/\u044d\u0442\u043e \u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043a\u0443\u0441\u043a\u0438 \u043a\u043e\u0434\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0432\u044b\u0448\u0435  __enable_irq(); \/\/\u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f   while(1) \t{\t\t\t \t\twhile(dma_recv_f!=1){};\t\/\/\u0436\u0434\u0435\u043c \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \t\tdma_recv_f = 0;         \/\/\u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \t\t \t\t\/*\u0417\u0414\u0415\u0421\u042c \u0414\u041e\u041b\u0416\u0415\u041d \u0411\u042b\u0422\u042c \u041a\u041e\u0414 \u041e\u0411\u0420\u0410\u0411\u041e\u0422\u041a\u0418 \u0414\u0410\u041d\u041d\u042b\u0425*\/ \t\t\t\t \t\tRe_DMA_Config(DCMI_PendingData, glob_cnt); \/\/\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c DMA \t\t \t} } <\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0435\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0436\u0435\u0441\u0442\u043a\u043e\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432 stm32f4 \u0435\u0441\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0431\u0443\u0444\u0435\u0440\u0430. \u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 DMA \u0442\u043e\u0433\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">   \/\/ DMA2 Stream0 channel0 configuration **************************************    DMA_InitStructure.DMA_Channel = DMA_Channel_1;      DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;   \/\/0x50050028    DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)DCMI_PendingData;    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;    DMA_InitStructure.DMA_BufferSize = buf_size;    &lt;b&gt;DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;&lt;\/b&gt; \/\/\u0440\u0435\u0436\u0438\u043c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445    DMA_InitStructure.DMA_Priority = DMA_Priority_High;    DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;    &lt;b&gt;DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;&lt;\/b&gt; \/\/\u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 DMA \u043f\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0431\u0443\u0444\u0435\u0440\u0430    DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;    DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; <\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0431\u0438\u0442 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f DMA \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430, \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f \u043f\u0440\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">if(DMA_GetITStatus(DMA2_Stream1,DMA_IT_TCIF1)){ \t   DMA_ClearITPendingBit(DMA2_Stream0, DMA_IT_TCIF1); \t   num_buf = 1; } else{ \t   num_buf = 0; } <\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043d\u0430\u0448\u0435\u0433\u043e \u0410\u0426\u041f \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 DCMI.  <\/p>\n<p>  <\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435 \u043c\u043e\u0433\u0443 \u0432 \u0436\u0438\u0432\u0443\u044e \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0442.\u043a. \u0436\u0435\u043b\u0435\u0437\u043a\u0430 \u0443\u0436\u0435 \u0433\u043e\u0434\u0430 3 \u043a\u0430\u043a \u0432 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 ))). \u041c\u043e\u0433\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441 \u0442\u0435\u0445 \u0432\u0440\u0435\u043c\u0435\u043d.  <\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u044d\u0442\u043e \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 SMB100A \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 48.001 \u041c\u0413\u0446, \u0440\u0430\u0432\u043d\u044b\u0439 \u043d\u0430\u0448\u0435\u0439 \u041f\u0427 \u0441 \u043e\u0442\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043d\u0430 1 \u041a\u0413\u0446:  <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6_\/99\/_8\/6_99_8v4li9yojdlw7weemympik.png\"\/><\/p>\n<p>\u0410 \u044d\u0442\u043e \u0435\u0433\u043e \u0441\u043f\u0435\u043a\u0442\u0440:  <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sg\/ku\/5k\/sgku5ku8m1ckzrxxbgwzudr90o0.png\"\/><\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u043e\u0434\u0430\u0445 \u0434\u043b\u0438\u043d\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 200 \u043c\u043c, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u044b\u043b\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u044b ADA-HSMC \u0438 STM32F4 Discovery, \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u043b\u0441\u044f \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f 40 \u041c\u0413\u0446.<br \/>  \u041d\u0430 \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u00ab\u0440\u043e\u0434\u043d\u043e\u0439\u00bb \u043f\u043b\u0430\u0442\u0435, \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u043e\u0441\u043a\u0438\u0439 \u0448\u043b\u0435\u0439\u0444 \u0434\u043b\u0438\u043d\u043e\u0439 100 \u043c\u043c, \u043f\u0440\u0438 \u043a\u043e\u043c\u043d\u0430\u0442\u043d\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0434\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u2014 54 \u041c\u0413\u0446.<br \/>  \u041d\u0430 \u043d\u0443\u0436\u043d\u043e\u0439 \u043d\u0430\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 10 \u041c\u0413\u0446 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430 \u043d\u0430 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435: \u043e\u0442 -40 \u0434\u043e +60.  <\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u0441\u0435. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435!  <\/p>\n<\/p>\n<p>  <\/p>\n<p>  <\/p>\n<p>\u0418\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 STM32F4xx, \u0438\u043c\u0435\u044f \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u044f\u0434\u0440\u0430, \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0434\u043b\u044f \u00ab\u043d\u0435 \u043c\u044f\u0441\u043e\u0440\u0443\u0431\u043e\u0447\u043d\u044b\u0445\u00bb \u0437\u0430\u0434\u0430\u0447 \u0426\u041e\u0421 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0448\u0438\u043d\u044b \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u00abpipe-line\u00bb (clk-data). \u00ab\u041f\u043e\u043a\u0443\u0440\u0438\u0432\u00bb \u00abdm00037051.pdf\u00bb, \u043d\u0430\u0448\u0435\u043b \u043d\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0439, \u043d\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2013 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 DCMI (Digital camera interface). <\/p>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0426\u041e\u0421 (\u041a\u0418\u0425, \u0411\u0418\u0425, FFT) \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 STM32, \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0442\u0430\u043a \u043b\u0435\u0433\u043b\u0438 \u043a\u0430\u0440\u0442\u044b \u0438 \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043f\u043b\u044e\u0441 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0438\u0437\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432. \u041e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c.  <\/p>\n<p>  <cut text=\"\u0412\u0430\u0448 \u0442\u0435\u043a\u0441\u0442\"\/><\/p>\n<p>\u041d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 \u00ab\u0433\u043e\u0440\u044f\u0447\u0438\u043c\u0438\u00bb \u0441\u0440\u043e\u043a\u0430\u043c\u0438 \u0438 \u0431\u044e\u0434\u0436\u0435\u0442\u043e\u043c \u0431\u044b\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u00ab\u0436\u0435\u043b\u0435\u0437\u043a\u0443\u00bb \u0441 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438: \u043c\u0430\u0441\u0441\u043e\u0439, \u0433\u0430\u0431\u0430\u0440\u0438\u0442\u0430\u043c\u0438, \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435\u043c. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 (\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437), \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0435\u0433\u043e \u0441 \u0410\u0426\u041f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u00ab\u043c\u044f\u0433\u043a\u043e\u0433\u043e\u00bb \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0438\u043c\u0435\u0442\u044c \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u0421\u0438\u0433\u043d\u0430\u043b \u0441 \u0410\u0426\u041f \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 48 \u041c\u0413\u0446. \u041f\u043e\u043b\u043e\u0441\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 1 \u041c\u0413\u0446. \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u043f\u0435\u043a\u0442\u0440\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0441 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0432 \u043d\u043e\u043b\u044c, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0443\u0431\u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0448\u0438\u0440\u043e\u043a\u043e\u043f\u043e\u043b\u043e\u0441\u043d\u043e\u0433\u043e \u0410\u0426\u041f. \u0422\u0430\u043a\u0436\u0435, \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c Ethernet, SPI, UART, I2C \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043c\u0438.   <\/p>\n<p>  <\/p>\n<p>\u0421\u0440\u043e\u043a\u0438 \u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0426\u041e\u0421 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c FPGA \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439. \u0421 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 Blackfin \u043e\u0442 \u0432\u0441\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 Analog Devices \u043d\u0435 \u0431\u044b\u043b\u043e \u043e\u043f\u044b\u0442\u0430 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0438 \u0434\u0435\u043c\u043e\u043f\u043b\u0430\u0442\u044b. \u0418\u043c\u0435\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u044b\u0442 \u0442\u0435\u0441\u043d\u043e\u0433\u043e \u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0434\u043e\u0440\u043e\u0433\u0443\u0449\u0438\u043c, \u043d\u0435\u043a\u043e\u0433\u0434\u0430 \u0444\u043b\u0430\u0433\u043c\u0430\u043d\u043e\u043c \u0426\u041e\u0421, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 ADSP-TS201 TigerSHARC. \u041a \u0442\u043e\u043c\u0443-\u0436\u0435 \u0432 Blackfin \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f IEEE-754. \u0422\u0430\u043a\u0436\u0435, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0410\u0426\u041f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 128 \u041a\u0431\u0430\u0439\u0442, \u043f\u043b\u044e\u0441 30 \u041a\u0431\u0430\u0439\u0442 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 \u0443\u0436\u0435 \u0431\u0435\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043b\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0441\u0435 \u0432\u043f\u0438\u0445\u043d\u0443\u0442\u044c \u0432\u043e \u0447\u0442\u043e-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u043d\u0435\u0435 \u0431\u044e\u0434\u0436\u0435\u0442\u043d\u043e\u0435.   <\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435\u043c, \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u0431\u044b\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0442\u044b STM32F407 (Discovery \u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0441 \u041a\u0438\u0442\u0430\u044f). \u041a\u0430\u043a \u044f \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u044e \u0443 \u043c\u043d\u043e\u0433\u0438\u0445, \u043a\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0441\u043c\u0435\u0436\u043d\u043e\u0439 \u0442\u0435\u043c\u0430\u0442\u0438\u043a\u043e\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u0442\u0430\u043a\u0438\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u044b\u0440\u0443\u0447\u0430\u043b\u043e\u0447\u043a\u0438 \u0438\u043c\u0435\u044e\u0442\u0441\u044f. \u0422\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u043b\u0430\u0441\u044c \u043f\u043b\u0430\u0442\u0430 ADA-HSMC \u043e\u0442 Terasic, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0434\u0432\u0443\u0445\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0410\u0426\u041f AD9228 (12-bit, Fd=65 msps, bandwidth = 315 MHz).  <\/p>\n<p>  <\/p>\n<p>\u041d\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0439, \u043d\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2013 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 DCMI (Digital camera interface), \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 STM32F4.   <\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 RM0090, DocID018909, \u0441\u0442\u0440. 454\/1718. \u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0438\u0437 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.   <\/p>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u043e\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e 54 \u041c\u0413\u0446. \u0427\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u2014 \u043d\u0430\u0448\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0441\u0443\u0431\u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 10 \u041c\u0413\u0446. \u0412\u043e\u0442 \u043d\u0430\u0431\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 DCMI:  <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ko\/nl\/eu\/konleu5wruvzibgudm1jxb2eqnw.png\"\/><\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: D13, D14 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 144-\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u043e\u043c \u043a\u043e\u0440\u043f\u0443\u0441\u0435. \u041c\u044b \u0438\u043c\u0435\u0435\u043c 100-\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u044b\u0439, \u043d\u043e \u043d\u0430\u043c \u043e\u043d\u0438 \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b. (\u0445\u043e\u0442\u044f \u0443 Analog Devices \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435 14 bit \u0410\u0426\u041f \u2014 AD9248).  <\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u0430\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430:  <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/5i\/y2\/5y\/5iy25yfo20vatfc5l6amwv1aqm4.png\"\/><\/p>\n<p>\u0410 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043a\u0430\u0434\u0440\u0430 JPEG:  <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bc\/zf\/px\/bczfpxfe2rum9uevbf249qcwcmu.png\"\/><\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442.\u043a. \u043e\u043d \u043d\u0430\u043c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442.  <\/p>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0441\u0438\u0433\u043d\u0430\u043b VSYNC \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u043c \u043a \u043f\u0438\u0442\u0430\u043d\u0438\u044e. HSYNC \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443.   <\/p>\n<p>  <\/p>\n<p>\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 STM32F407RGT6 \u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0435 LQFP100.  <\/p>\n<p>  <\/p>\n<p>\u0423 \u0410\u0426\u041f AD9238 \u0435\u0441\u0442\u044c \u0432\u0445\u043e\u0434 \u0440\u0435\u0436\u0438\u043c\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f (\u044d\u043d\u0435\u0440\u0433\u043e\u0441\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u044f) \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 PDWN_A(B), \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e \u0432\u044b\u0445\u043e\u0434\u0443 OEB_A(B). \u041b\u043e\u0433\u0438\u0447\u043d\u043e \u0438\u0445 \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0441 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0438\u043d\u043e\u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0441\u0445\u0435\u043c\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/07\/55\/k5\/0755k5ui-ippcicwu6ig4dxrhr0.png\"\/><\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0443 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0410\u0426\u041f \u043d\u0435\u0442 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0438\u0442\u0435\u0441\u044c (\u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0431\u0443\u0444\u0435\u0440). \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 LMK00101 \u043e\u0442 Texas Instruments \u2013 \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0446\u0435\u043d\u044b, \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u0434\u0436\u0438\u0442\u0442\u0435\u0440\u0430, \u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u043e\u043f\u044f\u0442\u044c-\u0436\u0435 \u2014 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 ).   <\/p>\n<p>  <\/p>\n<p>\u0412 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0448\u0438\u043d\u0435 \u0410\u0426\u041f \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043d\u0430 7 \u0442\u0430\u043a\u0442\u043e\u0432 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430.  <\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c (\u043a\u043e\u043d\u0435\u0447\u043d\u043e-\u0436\u0435) \u0447\u0435\u0440\u0435\u0437 DMA. \u0412\u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 DCMI \u0438 DMA.  <\/p>\n<p>  <\/p>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u044b\u0445 \u043d\u0430\u043c \u043f\u043e\u0440\u0442\u043e\u0432, DCMI \u0438 DMA2  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">GPIO_InitTypeDef GPIO_InitStructure;   \/* Enable DCMI GPIOs clocks *\/ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOE |  RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD, ENABLE);     \/* Enable DCMI clock *\/ RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI, ENABLE);\t RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE); <\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u0438\u043c \u043f\u0438\u043d\u043e\u043c (PA5) \u0431\u0443\u0434\u0435\u043c \u0438\u043c\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0434\u0440\u044b \u2013 HSYNC. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;     GPIO_Init(GPIOA, &GPIO_InitStructure);\t   GPIO_ResetBits(GPIOA, GPIO_Pin_5);\t\t\t\t\/\/HSYNC_PA4 -PA5 -&gt; GND\t  <\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 DCMI  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">  \/* PCLK *\/   GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_DCMI);      \/* D0-D7 *\/   GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_DCMI);   \/\/D0*   GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_DCMI);   \/\/D1*   GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_DCMI);   \/\/D2*   GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_DCMI);   \/\/D3*   GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_DCMI);  \/\/D4*   GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_DCMI);   \/\/D5*   GPIO_PinAFConfig(GPIOE, GPIO_PinSource5, GPIO_AF_DCMI);   \/\/D6*   GPIO_PinAFConfig(GPIOE, GPIO_PinSource6, GPIO_AF_DCMI);   \/\/D7*   GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_DCMI);   \/\/D8*   GPIO_PinAFConfig(GPIOC, GPIO_PinSource12, GPIO_AF_DCMI);   \/\/D9*   GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_DCMI);   \/\/D10*   GPIO_PinAFConfig(GPIOD, GPIO_PinSource2, GPIO_AF_DCMI);   \/\/D11*   \/* VSYNC *\/   GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_DCMI);   \/* HSYNC *\/   GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_DCMI);   \/* DCMI GPIO configuration **************************************************\/   \/* D0,D1,D2,D3,D4,D8,D9 *\/   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;     GPIO_Init(GPIOC, &GPIO_InitStructure);     \/* D6,D7*\/   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;   GPIO_Init(GPIOE, &GPIO_InitStructure);     \/* D10, D5, VSYNC(PB7) *\/   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;   GPIO_Init(GPIOB, &GPIO_InitStructure); \t \t \/* D11(PD2) *\/   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;   GPIO_Init(GPIOD, &GPIO_InitStructure);     \/* PCLK(PA6) HSYNC(PA4)*\/   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_6;   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;   GPIO_Init(GPIOA, &GPIO_InitStructure); <\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2013 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 DCMI \u0432 \u0440\u0435\u0436\u0438\u043c\u0435, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e JPEG \u043a\u0430\u0434\u0440\u0430\u043c.  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">  DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous;   DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Embedded;   DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Rising;   DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_Low;   DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_High;   DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;   DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_12b;  <\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 DMA  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">  DCMI_Init(&DCMI_InitStructure);   DMA_InitStructure.DMA_Channel = DMA_Channel_1;     DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;   \/\/0x50050028   DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)DCMI_PendingData;   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;   DMA_InitStructure.DMA_BufferSize = MAX_DOWBLE_BUF;   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;   DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;   DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;   DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;            DMA_InitStructure.DMA_FIFOThreshold =  DMA_FIFOThreshold_Full;   DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;   DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;        DMA_Init(DMA2_Stream1, &DMA_InitStructure); <\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 DMA  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">  NVIC_InitStructure.NVIC_IRQChannel = DMA2_Stream1_IRQn;   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); <\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u0434 \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0440\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e DCMI \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u043b\u0430\u0433 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.   <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">void EXTI1_IRQHandler() { \tEXTI_ClearFlag(EXTI_Line1); \t  DMA_ClearITPendingBit(DMA2_Stream1, DMA_IT_TCIF1); \tDMA_Cmd(DMA2_Stream1, DISABLE); \tDCMI_Cmd(DISABLE);\t \tdma_recv_f = 1;\t\t \t\/\/GPIO_ResetBits(GPIOE, GPIO_Pin_0);\t\t\/\/VSYNC reset } <\/code><\/pre>\n<p>  <\/p>\n<p>\u0421 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0432\u0441\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043d\u0430\u0448 \u043a\u0430\u043d\u0430\u043b DMA, \u0431\u043b\u043e\u043a DCMI, \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u043c \u043f\u0440\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e DCMI \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u0430\u0434\u0440\u043e\u0432 JPEG.  <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">  \/* Enable DMA transfer *\/   DMA_Cmd(DMA2_Stream1, ENABLE);   \/* Enable DCMI interface *\/   DCMI_Cmd(ENABLE); \t   \/* Start Image capture *\/    DCMI_CaptureCmd(ENABLE);\t   DCMI_JPEGCmd(ENABLE); <\/code><\/pre>\n<p>  <\/p>\n<p>\u0426\u0438\u043a\u043b \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0417\u0434\u0435\u0441\u044c \u043e\u043f\u0440\u043e\u0441 \u0444\u043b\u0430\u0433\u0430 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">uint8_t dma_recv_f = 0; \/\/\u0444\u043b\u0430\u0433, \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0435\u043c\u0430 \u0431\u043b\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. uint16_t DCMI_PendingData[8500]; \/\/\u0431\u0443\u0444\u0435\u0440 \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 DCMI  int main(void) {    DCMI_Config(); \/\/\u044d\u0442\u043e \u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043a\u0443\u0441\u043a\u0438 \u043a\u043e\u0434\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0432\u044b\u0448\u0435  __enable_irq(); \/\/\u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f   while(1) \t{\t\t\t \t\twhile(dma_recv_f!=1){};\t\/\/\u0436\u0434\u0435\u043c \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \t\tdma_recv_f = 0;         \/\/\u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \t\t \t\t\/*\u0417\u0414\u0415\u0421\u042c \u0414\u041e\u041b\u0416\u0415\u041d \u0411\u042b\u0422\u042c \u041a\u041e\u0414 \u041e\u0411\u0420\u0410\u0411\u041e\u0422\u041a\u0418 \u0414\u0410\u041d\u041d\u042b\u0425*\/ \t\t\t\t \t\tRe_DMA_Config(DCMI_PendingData, glob_cnt); \/\/\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c DMA \t\t \t} } <\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0435\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0436\u0435\u0441\u0442\u043a\u043e\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432 stm32f4 \u0435\u0441\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0431\u0443\u0444\u0435\u0440\u0430. \u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 DMA \u0442\u043e\u0433\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">   \/\/ DMA2 Stream0 channel0 configuration **************************************    DMA_InitStructure.DMA_Channel = DMA_Channel_1;      DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;   \/\/0x50050028    DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)DCMI_PendingData;    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;    DMA_InitStructure.DMA_BufferSize = buf_size;    &lt;b&gt;DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;&lt;\/b&gt; \/\/\u0440\u0435\u0436\u0438\u043c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445    DMA_InitStructure.DMA_Priority = DMA_Priority_High;    DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;    &lt;b&gt;DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;&lt;\/b&gt; \/\/\u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 DMA \u043f\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0431\u0443\u0444\u0435\u0440\u0430    DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;    DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; <\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0431\u0438\u0442 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f DMA \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430, \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f \u043f\u0440\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">if(DMA_GetITStatus(DMA2_Stream1,DMA_IT_TCIF1)){ \t   DMA_ClearITPendingBit(DMA2_Stream0, DMA_IT_TCIF1); \t   num_buf = 1; } else{ \t   num_buf = 0; } <\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043d\u0430\u0448\u0435\u0433\u043e \u0410\u0426\u041f \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 DCMI.  <\/p>\n<p>  <\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435 \u043c\u043e\u0433\u0443 \u0432 \u0436\u0438\u0432\u0443\u044e \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0442.\u043a. \u0436\u0435\u043b\u0435\u0437\u043a\u0430 \u0443\u0436\u0435 \u0433\u043e\u0434\u0430 3 \u043a\u0430\u043a \u0432 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 ))). \u041c\u043e\u0433\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441 \u0442\u0435\u0445 \u0432\u0440\u0435\u043c\u0435\u043d.  <\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u044d\u0442\u043e \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 SMB100A \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 48.001 \u041c\u0413\u0446, \u0440\u0430\u0432\u043d\u044b\u0439 \u043d\u0430\u0448\u0435\u0439 \u041f\u0427 \u0441 \u043e\u0442\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043d\u0430 1 \u041a\u0413\u0446:  <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6_\/99\/_8\/6_99_8v4li9yojdlw7weemympik.png\"\/><\/p>\n<p>\u0410 \u044d\u0442\u043e \u0435\u0433\u043e \u0441\u043f\u0435\u043a\u0442\u0440:  <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sg\/ku\/5k\/sgku5ku8m1ckzrxxbgwzudr90o0.png\"\/><\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u043e\u0434\u0430\u0445 \u0434\u043b\u0438\u043d\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 200 \u043c\u043c, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u044b\u043b\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u044b ADA-HSMC \u0438 STM32F4 Discovery, \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u043b\u0441\u044f \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f 40 \u041c\u0413\u0446.<\/p>\n<p>  \u041d\u0430 \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u00ab\u0440\u043e\u0434\u043d\u043e\u0439\u00bb \u043f\u043b\u0430\u0442\u0435, \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u043e\u0441\u043a\u0438\u0439 \u0448\u043b\u0435\u0439\u0444 \u0434\u043b\u0438\u043d\u043e\u0439 100 \u043c\u043c, \u043f\u0440\u0438 \u043a\u043e\u043c\u043d\u0430\u0442\u043d\u043e\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0434\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u2014 54 \u041c\u0413\u0446.<br \/>  \u041d\u0430 \u043d\u0443\u0436\u043d\u043e\u0439 \u043d\u0430\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 10 \u041c\u0413\u0446 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430 \u043d\u0430 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435: \u043e\u0442 -40 \u0434\u043e +60.  <\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u0441\u0435. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435!<\/p>\n<\/p>\n<\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d() } } }t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>      <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/482506\/\"> https:\/\/habr.com\/ru\/post\/482506\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/482506\/\">\n<p>\u0418\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 STM32F4xx, \u0438\u043c\u0435\u044f \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u044f\u0434\u0440\u0430, \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0434\u043b\u044f \u00ab\u043d\u0435 \u043c\u044f\u0441\u043e\u0440\u0443\u0431\u043e\u0447\u043d\u044b\u0445\u00bb \u0437\u0430\u0434\u0430\u0447 \u0426\u041e\u0421 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0448\u0438\u043d\u044b \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u00abpipe-line\u00bb (clk-data). \u00ab\u041f\u043e\u043a\u0443\u0440\u0438\u0432\u00bb \u00abdm00037051.pdf\u00bb, \u043d\u0430\u0448\u0435\u043b \u043d\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0439, \u043d\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2013 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 DCMI (Digital camera interface). <\/p>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0426\u041e\u0421 (\u041a\u0418\u0425, \u0411\u0418\u0425, FFT) \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 STM32, \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0442\u0430\u043a \u043b\u0435\u0433\u043b\u0438 \u043a\u0430\u0440\u0442\u044b \u0438 \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043f\u043b\u044e\u0441 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0438\u0437\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432. \u041e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-296613","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/296613","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=296613"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/296613\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=296613"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=296613"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=296613"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}