{"id":290775,"date":"2018-10-15T05:50:03","date_gmt":"2018-10-15T01:50:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=290775"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=290775","title":{"rendered":"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u041f\u041b\u0418\u0421 \u0447\u0435\u0440\u0435\u0437 USB"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dx\/i7\/px\/dxi7pxs820_gc9p_q_1m6zoaakm.jpeg\">  <\/p>\n<p>\u0412 \u0436\u0438\u0437\u043d\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043b\u0438\u0441\u043e\u0432\u043e\u0434\u0430 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u041f\u041b\u0418\u0421. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043c\u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430 \u0434\u043b\u044f \u043a\u0430\u0444\u0435\u0434\u0440\u044b \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u0443\u0437\u0430. \u0421\u0442\u0435\u043d\u0434 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u0445\u043e\u0442\u044f \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0410 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0442\u0435\u043d\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 \u041f\u041b\u0418\u0421 (Altera Cyclone IV), \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e \u0437\u0430\u0434\u0443\u043c\u043a\u0435 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u0442\u0435\u043d\u0434\u0430 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u0432\u0441\u044f\u043a\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u0426\u041e\u0421. \u0421\u0442\u0435\u043d\u0434 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 USB. \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u041f\u041b\u0418\u0421 \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 USB.<br \/>  \u041f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u041f\u041a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c FTDI \u0432 \u0435\u0435 \u0434\u0432\u0443\u0445\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043f\u043e\u0441\u0442\u0430\u0441\u0438 \u2014 FT2232H. \u041e\u0434\u0438\u043d \u043a\u0430\u043d\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u041f\u041b\u0418\u0421, \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 FIFO. <a name=\"habracut\"><\/a><br \/>  \u0423 FTDI \u0435\u0441\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 <a href=\"https:\/\/www.ftdichip.com\/Products\/Modules\/DevelopmentModules.htm#Morph-IC\">MORPH-IC-II<\/a>, \u0433\u0434\u0435 \u0447\u0435\u0440\u0435\u0437 USB \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u041f\u041b\u0418\u0421 Cyclone II. \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u0432 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b: \u0441\u0430\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 FTDI \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0430 \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0430. \u041f\u043e \u043f\u0440\u0430\u0432\u0434\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u0432 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a, \u043d\u0443 \u0438\u043b\u0438 \u043d\u0430 \u043a\u0440\u0430\u0439\u043d\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0438\u0445 dll. \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0432 \u041f\u041b\u0418\u0421 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u043e\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 (passive serial \u2014 PS), FTDI \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 MPSSE. \u041d\u0430 \u043c\u0430\u043a\u0435\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f MORPH-IC-II \u0431\u044b\u043b\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0430, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043a\u0430\u043a \u043e\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442, \u043f\u0440\u0438\u0448\u043b\u0430 \u043e\u0442\u043a\u0443\u0434\u0430 \u043d\u0435 \u0436\u0434\u0430\u043b\u0438. \u0412\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 dll MORPH-IC-II \u0432\u0441\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 FTDI \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442\u0441\u044f, \u0430 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u0430 \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u0434\u0432\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438: \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432. \u041e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u0438\u043c\u0438 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439. \u0427\u0435\u0440\u0442\u043e\u0432\u0441\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0438 \u0434\u043e\u0441\u0430\u0434\u043d\u043e.<br \/>  \u041f\u043e\u0445\u043e\u0436\u0438\u0439 \u043a\u0435\u0439\u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0443 \u0440\u0435\u0431\u044f\u0442 \u0438\u0437 \u041c\u0430\u0440\u0441\u043e\u0445\u043e\u0434\u0430: <a href=\"https:\/\/marsohod.org\/prodmbftdi\">USB JTAG \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 MBFTDI<\/a>. \u0422\u0430\u043c \u0442\u043e\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f FTDI \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 MPSSE, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 MORPH-IC-II \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u041f\u041b\u0418\u0421 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 JTAG. \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0432 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u043d\u044f\u0442\u043d\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043d\u0430 \u0438\u0445 \u0441\u0442\u0430\u0442\u0443\u0441 (\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438) \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0443 \u043c\u0435\u043d\u044f \u0440\u0443\u043a\u0430 \u043d\u0435 \u043f\u043e\u0434\u043d\u044f\u043b\u0430\u0441\u044c.<br \/>  \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044e \u0442\u0430\u043a\u0443\u044e \u043e\u043f\u043b\u043e\u0448\u043d\u043e\u0441\u0442\u044c, \u0432\u0441\u0435, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u043e \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 BSD. <\/p>\n<p>  <\/p>\n<h2 id=\"zagruzka-fayla-konfiguracii-v-mikroshemu-plis\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0443 \u041f\u041b\u0418\u0421<\/h2>\n<p>  <\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0440\u0435\u0436\u0438\u043c\u043e\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u041f\u041b\u0418\u0421. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0441\u044f \u0441 \u0442\u0435\u043c\u043e\u0439, \u043f\u0440\u043e\u0432\u0435\u0434\u0443 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u044d\u043a\u0441\u043a\u0443\u0440\u0441. \u0425\u043e\u0442\u044f \u043d\u0430 \u043c\u043e\u0435\u0439 \u043f\u043b\u0430\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u041f\u041b\u0418\u0421 Altera (Intel) \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 Cyclone IV E, \u043c\u0435\u0442\u043e\u0434\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u041f\u041b\u0418\u0421 Cyclone, \u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u0442\u043e\u043c \u0438\u043b\u0438 \u0438\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432.<br \/>  \u0412 \u041f\u041b\u0418\u0421 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u044d\u043d\u0435\u0440\u0433\u043e\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f SRAM \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u042d\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u041d\u0430 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u0436\u0430\u0440\u0433\u043e\u043d\u0435 \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 &#171;\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u043e\u0439&#187;. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u041e\u0417\u0423 \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 \u0432 \u043a\u0440\u0438\u0441\u0442\u0430\u043b\u043b \u041f\u041b\u0418\u0421. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 (\u0441\u0445\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438), \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 \u0432 SRAM (\u0441\u043f\u0438\u0441\u043e\u043a \u0430\u043a\u0442\u0443\u0430\u043b\u0435\u043d \u0434\u043b\u044f Cyclone IV E): <\/p>\n<p>  <\/p>\n<ol>\n<li>\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 (Active serial (AS)).<\/li>\n<li>\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 (Active parallel (AP)).<\/li>\n<li>\u041f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 (Passive serial (PS)).<\/li>\n<li>\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 (Fast passive parallel (FPP)). <\/li>\n<li>JTAG. <\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0412\u044b\u0431\u043e\u0440 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u041f\u041b\u0418\u0421 (\u0433\u0440\u0443\u043f\u043f\u0430 MSEL). \u0420\u0435\u0436\u0438\u043c JTAG \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u0441\u0435\u0433\u0434\u0430. \u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u0434\u0430\u0447\u0435 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u041f\u041b\u0418\u0421 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043b\u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439). \u0412 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u041f\u041b\u0418\u0421 \u0436\u0434\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c \u0432 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0441\u0442 \u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0414\u0430\u043d\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u0445\u043e\u0440\u043e\u0448\u043e \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u0432\u0435\u0434\u0443\u0449\u0438\u0439 (Master) \u2014 \u0432\u0435\u0434\u043e\u043c\u044b\u0439 (Slave). \u0412 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445 \u041f\u041b\u0418\u0421 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043e, \u0430 \u0432 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u0445 \u2014 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0435\u0434\u043e\u043c\u043e\u0433\u043e.<br \/>  \u0412 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u043d\u0435 \u041f\u041b\u0418\u0421, \u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0435\u0448\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0436\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u043c. \u0410 \u0434\u043b\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u043d\u043e\u0436\u0435\u043a \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0417\u0434\u0435\u0441\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 (PS) \u0440\u0435\u0436\u0438\u043c \u0438 JTAG. \u041b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b JTAG \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435.<br \/>  \u041d\u0438\u0436\u0435 \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u041f\u041b\u0418\u0421 \u043a \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 PS. <\/p>\n<p>  <img decoding=\"async\" width=\"400\" src=\"https:\/\/habrastorage.org\/webt\/q-\/rj\/pe\/q-rjpeqe5y8ojlu8ywedoejklxq.png\">  <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0438\u0437 \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0432 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 <em>nCONFIG<\/em>. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u041f\u041b\u0418\u0421 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u0430 \u043a \u043f\u0440\u0438\u0435\u043c\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u043d\u0430 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 <em>nSTATUS<\/em>. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043b\u0438\u043d\u0438\u0438 <em>DATA[0]<\/em>, \u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b \u2014 \u043f\u043e \u043b\u0438\u043d\u0438\u0438 <em>DCLK<\/em>. \u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0446\u0435\u043b\u0435\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 <em>CONF_DONE<\/em> \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c (\u0438\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0430\u0442\u0441\u044f), \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u041f\u041b\u0418\u0421 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u0442 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a <em>CONF_DONE <\/em> \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0443, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0430\u0442\u044c \u0435\u0449\u0435 \u0434\u0432\u0430 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u041f\u041b\u0418\u0421.<br \/>  \u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043c\u043b\u0430\u0434\u0448\u0438\u043c \u0437\u043d\u0430\u0447\u0430\u0449\u0438\u043c \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u043c (<abbr title=\"Least Significant Bit\">LSB<\/abbr>) \u0432\u043f\u0435\u0440\u0435\u0434, \u0442\u043e \u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c 02 1B EE 01 FA (\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u0437\u044f\u0442\u044c \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u0438\u0437 Handbook), \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c: <\/p>\n<p>  <\/p>\n<pre><code>0100-0000 1101-1000 0111-0111 1000-0000 0101-1111  <\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u044f\u0442\u044c \u043b\u0438\u043d\u0438\u0439: \u043b\u0438\u043d\u0438\u0438 <em>DATA[0]<\/em> \u0438 <em>DCLK<\/em> \u2014 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438, \u043b\u0438\u043d\u0438\u0438 <em>nCONFIG<\/em>, <em>nSTATUS<\/em>, <em>CONF_DONE<\/em> \u2014 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<br \/>  \u041f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438 \u0440\u0435\u0436\u0438\u043c PS \u0435\u0441\u0442\u044c \u043d\u0435 \u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a SPI \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0435\u0439 \u0444\u043b\u0430\u0433\u0430\u043c\u0438.<br \/>  \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0438\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b, \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0441\u0435\u0440\u0438\u0438 Cyclone IV E \u2014 \u044d\u0442\u043e 66 \u041c\u0413\u0446.<br \/>  \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043d\u0430 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. \u042d\u0442\u043e \u0434\u0430\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0441 \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c \u043e\u0441\u0446\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u0444\u0430, \u0447\u0435\u043c \u043c\u044b \u043d\u0435\u043f\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f.<br \/>  \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043d\u0438\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0437\u043d\u0430\u0447\u0430\u0449\u0438\u043c\u0438 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u0430\u043c\u0438. <\/p>\n<p>  <img decoding=\"async\" width=\"720\" src=\"https:\/\/habrastorage.org\/webt\/54\/et\/uy\/54etuy0yva1est_qtdqp9yopqj8.png\">  <\/p>\n<h2 id=\"hitryy-zver-mpsse\">\u0425\u0438\u0442\u0440\u044b\u0439 \u0437\u0432\u0435\u0440\u044c MPSSE<\/h2>\n<p>  <\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b FTDI \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 MPSSE. \u0420\u0435\u0436\u0438\u043c MPSSE (Multi-Protocol Synchronous Serial Engine), \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0443\u0434\u0430\u0447\u043d\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u043e\u0439 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u0434\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a SPI, I2C, JTAG, 1-wire \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0430 \u0438\u0445 \u043e\u0441\u043d\u043e\u0432\u0435.<br \/>  \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0435\u0436\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c: FT232H, FT2232D, FT2232H, FT4232H. \u0412 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e FT2232H, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u043d\u0435\u0439. \u0414\u043b\u044f \u0440\u0435\u0436\u0438\u043c\u0430 MPSSE \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043e 16 \u043d\u043e\u0436\u0435\u043a, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0434\u0432\u0430 \u0431\u0430\u0439\u0442\u0430: \u043c\u043b\u0430\u0434\u0448\u0438\u0439 L \u0438 \u0441\u0442\u0430\u0440\u0448\u0438\u0439 H. \u041a\u0430\u0436\u0434\u044b\u0439 \u0431\u0430\u0439\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d. \u0427\u0435\u0442\u044b\u0440\u0435 \u043c\u043b\u0430\u0434\u0448\u0438\u0435 \u043d\u043e\u0433\u0438 \u0431\u0430\u0439\u0442\u0430 L \u0438\u043c\u0435\u044e\u0442 \u043e\u0441\u043e\u0431\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u0447\u0435\u0440\u0435\u0437 \u043d\u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u0430\u0436\u0434\u0430\u044f \u043d\u043e\u0433\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043a\u0430\u043a \u0432\u0445\u043e\u0434 \u0438\u043b\u0438 \u0432\u044b\u0445\u043e\u0434, \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0414\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0438\u0442 (<abbr title=\"Most Significant Bit\">MSB<\/abbr>\/<abbr title=\"Least Significant Bit\">LSB<\/abbr>), \u0434\u043b\u0438\u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430, \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432, \u0444\u0440\u043e\u043d\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u2014 \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u0439 (Rising) \u0438\u043b\u0438 \u0437\u0430\u0434\u043d\u0438\u0439 (Falling), \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0431\u0435\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c 3-\u0445 \u0444\u0430\u0437\u043e\u0432\u043e\u0435 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f I2C) \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.<br \/>  \u041f\u043b\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0432\u0430 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0447\u0438\u043f\u0430\u043c\u0438 FTDI: \u043f\u0435\u0440\u0432\u044b\u0439, \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c, \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a \u043f\u043e\u0440\u0442\u0443 USB \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 (COM), \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 VCP (Virtual COM Port). \u0412\u0441\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e COM \u043f\u043e\u0440\u0442\u0430: \u043e\u0442\u043a\u0440\u044b\u043b \u2014 \u043f\u0435\u0440\u0435\u0434\u0430\u043b\/\u0441\u0447\u0438\u0442\u0430\u043b \u2014 \u0437\u0430\u043a\u0440\u044b\u043b. \u041f\u0440\u0438\u0447\u0435\u043c \u044d\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Linux \u0438 Mac OS. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 FTDI \u2014 \u0447\u0438\u043f \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a USB-UART. \u0412\u0442\u043e\u0440\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 FTD2XX, \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c API COM \u043f\u043e\u0440\u0442\u0430, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a MPSSE, 245 FIFO, Bit-bang. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 FTD2XX API \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 <a href=\"https:\/\/www.ftdichip.com\/Support\/Documents\/ProgramGuides\/D2XX_Programmer's_Guide(FT_000071).pdf\">Software Application Development D2XX Programmer&#8217;s Guide<\/a>, \u0448\u0438\u0440\u043e\u043a\u043e \u0438 \u0434\u0430\u0432\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0432 \u0443\u0437\u043a\u0438\u0445 \u043a\u0440\u0443\u0433\u0430\u0445. \u0418 \u0434\u0430, FTD2XX \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c.<br \/>  \u041f\u0435\u0440\u0435\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 FTDI \u0441\u0442\u043e\u044f\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0443\u043b\u043e\u0436\u0438\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u044b\u0439 MPSSE \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f D2XX. \u0418 \u0438\u043c \u044d\u0442\u043e \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 MPSSE \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u0442 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0447\u0442\u043e \u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 &#171;\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445&#187; \u0440\u0435\u0436\u0438\u043c\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0430 \u0436\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 FTD2XX API.<br \/>  \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e, \u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 MPSSE \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u041d\u0430\u0439\u0442\u0438 \u0434\u0435\u0432\u0430\u0439\u0441 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0435\u0433\u043e.<\/li>\n<li>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u0443\u044e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0447\u0438\u043f\u0430 \u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u0432 \u0440\u0435\u0436\u0438\u043c MPSSE.<\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b MPSEE.<\/li>\n<li>\u041d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438: \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c GPIO \u2014 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u043c\u0435\u043d\u0430. <\/li>\n<li>\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0434\u0435\u0432\u0430\u0439\u0441.<\/li>\n<\/ol>\n<p>  <\/p>\n<h2 id=\"pishem-zagruzchik\">\u041f\u0438\u0448\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a<\/h2>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. \u0412 \u0441\u0432\u043e\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <abbr title=\"Integrated Development Environment\">IDE<\/abbr> \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Eclipse \u0432\u0435\u0440\u0441\u0438\u0438 Oxygen.3a Release (4.7.3a), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u2014 mingw32-gcc (6.3.0). \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 Win7.<br \/>  \u0421 \u0441\u0430\u0439\u0442\u0430 <a href=\"https:\/\/www.ftdichip.com\/Drivers\/D2XX.htm\">FTDI<\/a> \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0412 \u0430\u0440\u0445\u0438\u0432\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b ftd2xx.h \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 API. \u0421\u0430\u043c API \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0432 \u0432\u0438\u0434\u0435 ftd2xx.dll, \u043d\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043c\u043f\u043e\u0440\u0442 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043d\u0430 \u043f\u043e\u0442\u043e\u043c, \u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u043e\u0439: \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 ftd2xx.lib. \u0414\u043b\u044f \u043c\u043e\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f ftd2xx.lib \u043b\u0435\u0436\u0438\u0442 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 i386.<br \/>  \u0412 Eclipse \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0421\u0438 \u043f\u0440\u043e\u0435\u043a\u0442. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 <em>makefile<\/em> \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0432\u0435\u0440\u0438\u0442\u044c IDE. \u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043b\u0438\u043d\u043a\u043e\u0432\u0448\u0438\u043a\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 ftd2xx (\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043f\u0435\u0440\u0435\u043d\u0435\u0441 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043f\u0430\u043f\u043e\u0447\u043a\u0443 ftdi). \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0437\u0430\u043e\u0441\u0442\u0440\u044f\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u0434 Eclipse, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u044e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0434 Win \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0440\u0435\u0434\u044b \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b.<\/p>\n<p>  <\/p>\n<h3 id=\"punkt-pervyy-nayti-devays-i-otkryt-ego\">\u041f\u0443\u043d\u043a\u0442 \u043f\u0435\u0440\u0432\u044b\u0439. \u041d\u0430\u0439\u0442\u0438 \u0434\u0435\u0432\u0430\u0439\u0441 \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0435\u0433\u043e<\/h3>\n<p>  <\/p>\n<p>FTD2XX API \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0447\u0438\u043f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u0443 \u0438\u043b\u0438 \u0438\u043d\u0443\u044e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043d\u0435\u043c. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435: \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u0430\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u0430 FTDI \u043f\u0440\u0438\u043c\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 0, \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f 1 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041d\u043e\u043c\u0435\u0440 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c, \u043c\u044f\u0433\u043a\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u043e. \u0414\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0447\u0438\u043f\u0430 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>FT_Open<\/code>. \u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0447\u0438\u043f \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u0435\u0433\u043e \u0441\u0435\u0440\u0438\u0439\u043d\u043e\u043c\u0443 \u043d\u043e\u043c\u0435\u0440\u0443 (<code>FT_OPEN_BY_SERIAL_NUMBER<\/code>), \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e (<code>FT_OPEN_BY_DESCRIPTION<\/code>) \u0438\u043b\u0438 \u043f\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e (<code>FT_OPEN_BY_LOCATION<\/code>), \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>FT_OpenEx<\/code>. \u0421\u0435\u0440\u0438\u0439\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0447\u0438\u043f\u0430 \u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u0443\u0434\u0430 \u043f\u0440\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d FTDI. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u0435\u0442 \u0442\u0438\u043f \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u043b\u0438\u0431\u043e \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e, \u0430 \u0441\u0435\u0440\u0438\u0439\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437\u0434\u0435\u043b\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435. FTDI \u0447\u0438\u043f \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e (\u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0443). \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430 \u0447\u0438\u043f\u0430, \u0442\u043e \u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u0431\u043e\u0440 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430, \u0432\u044b\u0432\u0435\u0434\u0435\u043c \u0432\u0441\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043a \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443 \u043f\u0440\u0438\u0431\u043e\u0440\u044b \u0441 FTDI. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>FT_CreateDeviceInfoList<\/code> \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0447\u0438\u043f\u043e\u0432, \u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>FT_GetDeviceInfoList<\/code> \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0435\u0433\u043e. <\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u041b\u0438\u0441\u0442\u0438\u043d\u0433:<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">ftStatus = FT_CreateDeviceInfoList(&amp;numDevs); if (ftStatus == FT_OK) {   printf(\"Number of devices is %d\\n\",numDevs); }  if (numDevs == 0)   return -1;  \/\/ allocate storage for list based on numDevs devInfo = (FT_DEVICE_LIST_INFO_NODE*)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE)*numDevs);  ftStatus = FT_GetDeviceInfoList(devInfo,&amp;numDevs);   if (ftStatus == FT_OK)   for (int i = 0; i &lt; numDevs; i++)   {     printf(\"Dev %d:\\n\",i);     printf(\" Flags=0x%x\\n\",devInfo[i].Flags);     printf(\" Type=0x%x\\n\",devInfo[i].Type);     printf(\" ID=0x%x\\n\",devInfo[i].ID);     printf(\" LocId=0x%x\\n\",devInfo[i].LocId);     printf(\" SerialNumber=%s\\n\",devInfo[i].SerialNumber);     printf(\" Description=%s\\n\",devInfo[i].Description);   }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u043c \u043c\u043e\u0439 \u0437\u043e\u043e\u043f\u0430\u0440\u043a<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>D:\\workspace\\ftdi-mpsse-ps\\Debug&gt;ftdi-mpsse-ps.exe Number of devices is 4 Dev 0: Flags = 0x0 Type = 0x5 ID = 0x4036001 LocId = 0x214 SerialNumber = AI043NNV Description = FT232R USB UART Dev 1: Flags = 0x2 Type = 0x6 ID = 0x4036010 LocId = 0x2121 SerialNumber = L731T70OA Description = LESO7 A Dev 2: Flags = 0x2 Type = 0x6 ID = 0x4036010 LocId = 0x2122 SerialNumber = L731T70OB Description = LESO7 B Dev 3: Flags = 0x2 Type = 0x8 ID = 0x4036014 LocId = 0x213 SerialNumber = FTYZ92L6 Description = LESO4.1_ER<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041a \u043c\u043e\u0435\u043c\u0443 \u041f\u041a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0442\u0440\u0438 \u043f\u0440\u0438\u0431\u043e\u0440\u0430 \u0441 \u0447\u0438\u043f\u0430\u043c\u0438 FTDI: FT232RL (type 0x5), FT2232H (type 0x6) \u0438 FT232H (tepe 0x8). \u0427\u0438\u043f FT2232H \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u043b\u0441\u044f \u043a\u0430\u043a \u0434\u0432\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u043f\u0440\u0438\u0431\u043e\u0440\u0430 (Dev 1 \u0438 Dev 2). \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 PS \u041f\u041b\u0418\u0421 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a Dev 2, \u0435\u0433\u043e \u0434\u0435\u043a\u0441\u0440\u0438\u043f\u0442\u043e\u0440 &#171;LESO7 B&#187;. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e: <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/\/Open a device with device description \"LESO7 B\" ftStatus = FT_OpenEx(\"LESO7 B\", FT_OPEN_BY_DESCRIPTION, &amp;ftHandle); if (ftStatus != FT_OK) {   printf (\"\u041epen failure\\r\\n\");   return -1; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0442\u0438\u043f\u0430 <code>FT_STATUS<\/code>, \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0432\u0438\u0434\u0435 enum&#8217;\u0430 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435. \u0418\u0445 \u043c\u043d\u043e\u0433\u043e, \u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>FT_OK<\/code> \u2014 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u043a\u043e\u0434\u044b \u043e\u0448\u0438\u0431\u043e\u043a. \u0425\u043e\u0440\u043e\u0448\u0438\u043c \u0441\u0442\u0438\u043b\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 API.<br \/>  \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0431\u044b\u043b\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u043e, \u0442\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>ftHandle<\/code> \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043e\u0442 \u043d\u0443\u043b\u044f, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0445\u0435\u043d\u0434\u043b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u044f\u0437\u044c \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0447\u0438\u043f\u0443.<br \/>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u044d\u0442\u0430\u043f\u0430, \u043d\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u043a \u043f\u0443\u043d\u043a\u0442\u0443 \u043f\u044f\u0442\u044c \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430.<br \/>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0447\u0438\u043f\u043e\u043c, \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>FT_Close<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">FT_Close(ftHandle);<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"punkt-2-inicializiruem-chip-i-vklyuchaem-mpsse\">\u041f\u0443\u043d\u043a\u0442 2. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0447\u0438\u043f \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c MPSSE<\/h3>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0442\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <a href=\"https:\/\/www.ftdichip.com\/Support\/Documents\/AppNotes\/AN_135_MPSSE_Basics.pdf\">AN_135 FTDI MPSSE Basics<\/a>.<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u0431\u0440\u043e\u0441 (\u0440\u0435\u0437\u0435\u0442) \u0447\u0438\u043f\u0430. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>FT_ResetDevice<\/code>. <\/li>\n<li>\u041d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u043f\u0440\u0438\u0435\u043c\u0430 \u0437\u0430\u0432\u0430\u043b\u044f\u043b\u0441\u044f \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u0443\u0441\u043e\u0440, \u043e\u0447\u0438\u0449\u0430\u0435\u043c \u0435\u0433\u043e. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>FT_Purge<\/code>. <\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>FT_SetUSBParameters<\/code>.<\/li>\n<li>\u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u0438. <code>FT_SetChars<\/code>.<\/li>\n<li>\u0417\u0430\u0434\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u044b \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443. <code>FT_SetTimeouts<\/code>. <\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 \u0441 \u0447\u0438\u043f\u0430 \u043d\u0430 \u0445\u043e\u0441\u0442. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 16 \u043c\u0441, \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u043c \u0434\u043e 1 \u043c\u0441. <code>FT_SetLatencyTimer<\/code>.<\/li>\n<li>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u043c. <code>FT_SetFlowControl<\/code>.<\/li>\n<li>\u0412\u0441\u0435 \u0433\u043e\u0442\u043e\u0432\u043e \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0440\u0435\u0436\u0438\u043c\u0430 MPSSE. \u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 MPSSE. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>FT_SetBitMode<\/code>, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c 0 (mode = 0, mask = 0).<\/li>\n<li>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c MPSSE. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>FT_SetBitMode<\/code> \u2014 mode = 2, mask = 0.<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0447\u0438\u043f\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>MPSSE_open<\/code>, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043f\u0440\u0438\u0431\u043e\u0440\u0430:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041b\u0438\u0441\u0442\u0438\u043d\u0433 MPSSE_open<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">static FT_STATUS MPSSE_open (char *description) {   FT_STATUS ftStatus;    ftStatus = FT_OpenEx(description, FT_OPEN_BY_DESCRIPTION, &amp;ftHandle);   if (ftStatus != FT_OK)   {     printf (\"open failure\\r\\n\");     return FT_DEVICE_NOT_OPENED;   }   printf (\"open OK, %d\\r\\n\", ftHandle);    printf(\"\\nConfiguring port for MPSSE use...\\n\");   ftStatus |= FT_ResetDevice(ftHandle);   \/\/Purge USB receive buffer first by reading out all old data from FT2232H receive buff:   ftStatus |= FT_Purge(ftHandle, FT_PURGE_RX);   \/\/Set USB request transfer sizes to 64K:   ftStatus |= FT_SetUSBParameters(ftHandle, 65536, 65536);   \/\/Disable event and error characters:   ftStatus |= FT_SetChars(ftHandle, 0, 0, 0, 0);   \/\/Sets the read and write timeouts in milliseconds:   ftStatus |= FT_SetTimeouts(ftHandle, 0, 5000);   \/\/Set the latency timer to 1mS (default is 16mS):   ftStatus |= FT_SetLatencyTimer(ftHandle, 1);   \/\/Turn on flow control to synchronize IN requests:   ftStatus |= FT_SetFlowControl(ftHandle, FT_FLOW_RTS_CTS, 0x00, 0x00);   \/\/Reset controller:   ftStatus |= FT_SetBitMode(ftHandle, 0x0, FT_BITMODE_RESET);   \/\/Enable MPSSE mode:   ftStatus |= FT_SetBitMode(ftHandle, 0x0, FT_BITMODE_MPSSE);    if (ftStatus != FT_OK)   {     printf(\"Error in initializing the MPSSE %d\\n\", ftStatus);     return FT_OTHER_ERROR;   }    Sleep(50); \/\/ Wait for all the USB stuff to complete and work   return FT_OK; }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h3 id=\"punkt-3-nastroim-rezhim-raboty-mpsee\">\u041f\u0443\u043d\u043a\u0442 3. \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b MPSEE<\/h3>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 MPSSE \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0433\u043e\u0442\u043e\u0432 \u043a \u043f\u0440\u0438\u0435\u043c\u0443 \u043a\u043e\u043c\u0430\u043d\u0434. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0439\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u2014 &#171;op-code&#187;, \u0434\u0430\u043b\u0435\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0438\u043c\u0435\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e &#171;op-code&#187;. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>FT_Write<\/code>, \u043e\u0442\u0432\u0435\u0442 \u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 MPSSE \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>FT_Read<\/code>.<br \/>  \u041f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0432\u044b\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0442\u0432\u0435\u0442 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u2014 \u0441\u0438\u043c\u0432\u043e\u043b 0xFA. \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c &#171;\u043f\u043b\u043e\u0445\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u2014 \u043e\u0442\u0432\u0435\u0442 0xFA&#187; \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c MPSSE. \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u041e\u041a, \u0442\u043e\u0433\u0434\u0430 \u043d\u0430 \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0447\u0438\u043f \u0432\u0435\u0440\u043d\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b 0xFA. Op-code \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 <a href=\"https:\/\/www.ftdichip.com\/Support\/Documents\/AppNotes\/AN_108_Command_Processor_for_MPSSE_and_MCU_Host_Bus_Emulation_Modes.pdf\">Command Processor for MPSSE and MCU Host Bus Emulation Mode<\/a>.<br \/>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 MPSSE \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0437\u0430\u0434\u0430\u043d\u0438\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043b\u0438\u043d\u0438\u0439 \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430.<br \/>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 MPSSE. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043b\u044f \u0447\u0438\u043f\u043e\u0432 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0436\u0438\u043c\u0430 Full-speed (FT2232<strong>D<\/strong>) \u0438 \u0447\u0438\u043f\u043e\u0432 \u0441 High-speed (FT2232<strong>H<\/strong>, FT232H, FT4232H) \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u0412 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u043c FT2232D \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 12\u041c\u0413\u0446, \u0430 \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u2014 60 \u041c\u0413\u0446. \u041e\u0442\u0441\u044e\u0434\u0430 \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445: <\/p>\n<p>  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f21\/f79\/413\/f21f794136301eff08024e6c75439ce5.svg\" alt=\"$Data Speed = \\frac{f_{core}}{(1+Divisor)\\cdot 2}$\" data-tex=\"display\"><\/math><\/p>\n<p>  <\/p>\n<p>\u0433\u0434\u0435 <em>f<sub>core<\/sub><\/em> \u2014 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u044f\u0434\u0440\u0430 FTDI, <em>Divisor<\/em> \u2014 \u0434\u0432\u0443\u0445\u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0439 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438 \u0437\u0430\u0434\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445.<br \/>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u0435\u0441\u043b\u0438 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e, \u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 30 \u041c\u0431\u0438\u0442\/\u0441, \u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435 65535 \u2014 458 \u0431\u0438\u0442\/\u0441.<br \/>  \u0420\u0430\u0441\u0447\u0435\u0442 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u043f\u043e\u0440\u0443\u0447\u0438\u043c \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443. \u041c\u0430\u043a\u0440\u043e\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c: <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">#define FCORE 60000000ul #define MPSSE_DATA_SPEED_DIV(data_speed) ((FCORE\/(2*data_speed)) -1) <\/code><\/pre>\n<p>  <\/p>\n<p>\u0410 \u044d\u0442\u0438 \u0434\u0432\u0430 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0438 \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0430\u0439\u0442\u044b \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f: <\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">#define MPSSE_DATA_SPEED_DIV_H(data_speed) ((MPSSE_DATA_SPEED_DIV(data_speed)) &gt;&gt; 8) #define MPSSE_DATA_SPEED_DIV_L(data_speed) \\       (MPSSE_DATA_SPEED_DIV(data_speed) - (MPSSE_DATA_SPEED_DIV_H(data_speed)&lt;&lt; 8))<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0447\u0438\u043f\u0430\u0445 \u0434\u043b\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u043e \u0441\u0442\u0430\u0440\u0438\u0447\u043a\u043e\u043c FT2232D \u0435\u0441\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043d\u0430 5, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 60 \u041c\u0413\u0446 \u0432 12 \u041c\u0413\u0446. \u042d\u0442\u043e\u0442 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0433\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c.<br \/>  \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 op-code (0x8A) \u0438 \u0448\u043b\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">BYTE byOutputBuffer[8], byInputBuffer[8]; DWORD dwNumBytesToRead, dwNumBytesSent = 0, dwNumBytesRead = 0; byOutputBuffer[0] = 0x8A; ftStatus = FT_Write(ftHandle, byOutputBuffer, 1, &amp;dwNumBytesSent); Sleep(2); \/\/ Wait for data to be transmitted and status  ftStatus = FT_GetQueueStatus(ftHandle, &amp;dwNumBytesToRead); ftStatus |= FT_Read(ftHandle, byInputBuffer, dwNumBytesToRead, &amp;dwNumBytesRead);  if (ftStatus != FT_OK) {   printf(\"Error\\r\\n\");   return FT_OTHER_ERROR; } else if (dwNumBytesToRead &gt; 0) {   printf(\"dwNumBytesToRead = %d:\", dwNumBytesToRead);    for ( int i = 0; i &lt; dwNumBytesToRead; i++)     printf (\" %02Xh\", byInputBuffer[i]);    printf(\"\\r\\n\");   return FT_INVALID_PARAMETER; }  return FT_OK;<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0412 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430, \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b 0x8A, \u043f\u043e\u0448\u043b\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0xFE, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0438 \u043e\u0434\u0438\u043d op-code, \u0432\u044b\u0432\u043e\u0434 \u043a\u043e\u043d\u0441\u043e\u043b\u0438:<\/p>\n<p>  <\/p>\n<pre><code>dwNumBytesToRead = 2: FAh FEh<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432\u0435\u0440\u043d\u0443\u043b \u0434\u0432\u0430 \u0431\u0430\u0439\u0442\u0430, \u0431\u0430\u0439\u0442 &#171;\u043f\u043b\u043e\u0445\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430&#187; \u2014 0xFA \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 &#171;\u043f\u043b\u043e\u0445\u043e\u0439&#187; \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434 \u0441\u0440\u0430\u0437\u0443, \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0441\u0430\u043c \u0444\u0430\u043a\u0442 \u043e\u0448\u0438\u0431\u043a\u0438, \u043d\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u044c \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430.<br \/>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043d\u0435 \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u0441 &#171;\u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438&#187;, \u0432\u0441\u0435 op-code \u043e\u0444\u043e\u0440\u043c\u0438\u043c \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b.<br \/>  \u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u0436\u0438\u043c\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u043d\u0438\u0439 \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430 \u0438 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041e\u0431\u0440\u0430\u0442\u0438\u043c\u0441\u044f \u043a \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u0433\u0440\u043e\u043c\u043e\u0436\u0434\u0430\u0442\u044c \u0438 \u0431\u0435\u0437 \u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0443\u0442\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e, \u044f \u043f\u0435\u0440\u0435\u0447\u0435\u0440\u0442\u0438\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0441\u0445\u0435\u043c\u044b: <\/p>\n<p>  <img decoding=\"async\" width=\"500\" src=\"https:\/\/habrastorage.org\/webt\/sc\/6g\/no\/sc6gnoqy5_eyc5lsjpmlqbnl2-m.png\">  <\/p>\n<p>\u041b\u0438\u043d\u0438\u0438 <em>DCLK<\/em>, <em>DATA[0]<\/em>, <em>nCONFIG<\/em> \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043a\u0430\u043a \u0432\u044b\u0445\u043e\u0434\u0430, \u043b\u0438\u043d\u0438\u0438 <em>nSTATUS<\/em>, <em>CONF_DONE<\/em> \u2014 \u043a\u0430\u043a \u0432\u0445\u043e\u0434\u044b. \u041f\u043e \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043a\u0430\u043a\u0438\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443 \u043b\u0438\u043d\u0438\u0439. \u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0443 \u0441\u0445\u0435\u043c\u044b \u0441\u0432\u0435\u0434\u0435\u043c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443:<\/p>\n<p>  <\/p>\n<table>\n<thead>\n<tr>\n<th>FPGA pin<\/th>\n<th>Pin Name<\/th>\n<th>Pin<\/th>\n<th>MPSSE<\/th>\n<th>Direction<\/th>\n<th>default<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DCLK<\/td>\n<td>BDBUS0<\/td>\n<td>38<\/td>\n<td>TCK\/SK<\/td>\n<td>Out<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>DATA[0]<\/td>\n<td>BDBUS1<\/td>\n<td>39<\/td>\n<td>TDI\/DO<\/td>\n<td>Out<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>nCONFIG<\/td>\n<td>BDBUS2<\/td>\n<td>40<\/td>\n<td>TDO\/DI<\/td>\n<td>Out<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>nSTATUS<\/td>\n<td>BDBUS3<\/td>\n<td>41<\/td>\n<td>TMS\/CS<\/td>\n<td>In<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>CONF_DONE<\/td>\n<td>BDBUS4<\/td>\n<td>43<\/td>\n<td>GPIOL0<\/td>\n<td>In<\/td>\n<td>1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u043d\u0430 \u043c\u043b\u0430\u0434\u0448\u0435\u043c \u0431\u0430\u0439\u0442\u0435 \u043f\u043e\u0440\u0442\u0430 MPSSE. \u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c op-code 0x80. \u042d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u0434\u0432\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430: \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430 op-code \u0431\u0430\u0439\u0442 \u2014 \u044d\u0442\u043e \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 (\u0435\u0434\u0438\u043d\u0438\u0447\u043a\u0430 \u2014 \u043f\u043e\u0440\u0442 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434, \u043d\u043e\u043b\u044c \u2014 \u043f\u043e\u0440\u0442 \u043d\u0430 \u0432\u0432\u043e\u0434).<br \/>  \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u043e\u0440\u044c\u0431\u044b \u0441 &#171;magic number&#187; \u0432\u0441\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043b\u0438\u043d\u0438\u0439 \u0438 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u0444\u043e\u0440\u043c\u0438\u043c \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Define ports<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#define PORT_DIRECTION  (0x07) #define DCLK            (0) #define DATA0           (1) #define N_CONFIG        (2) #define N_STATUS        (3) #define CONF_DONE       (4)  \/\/ initial states of the MPSSE interface #define DCLK_DEF            (1) #define DATA0_DEF           (0) #define N_CONFIG_DEF        (1) #define N_STATUS_DEF        (1) #define CONF_DONE_DEF       (1)<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u0435\u0442\u043b\u044f TDI \u2014 TDO (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f) \u0438 \u043e\u0444\u043e\u0440\u043c\u0438\u0442\u044c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 MPSSE_setup<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">static FT_STATUS MPSSE_setup () {   DWORD dwNumBytesToSend, dwNumBytesSent, dwNumBytesToRead, dwNumBytesRead;   BYTE byOutputBuffer[8], byInputBuffer[8];   FT_STATUS ftStatus;    \/\/ Multple commands can be sent to the MPSSE with one FT_Write   dwNumBytesToSend = 0; \/\/ Start with a fresh index   byOutputBuffer[dwNumBytesToSend++] = MPSSE_CMD_DISABLE_DIVIDER_5;   byOutputBuffer[dwNumBytesToSend++] = MPSSE_CMD_DISABLE_ADAPTIVE_CLK;   byOutputBuffer[dwNumBytesToSend++] = MPSSE_CMD_DISABLE_3PHASE_CLOCKING;    ftStatus = FT_Write(ftHandle, byOutputBuffer, dwNumBytesToSend, &amp;dwNumBytesSent);    dwNumBytesToSend = 0; \/\/ Reset output buffer pointer   \/\/ Set TCK frequency   \/\/ Command to set clock divisor:   byOutputBuffer[dwNumBytesToSend++] = MPSSE_CMD_SET_TCK_DIVISION;   \/\/ Set ValueL of clock divisor:   byOutputBuffer[dwNumBytesToSend++] = MPSSE_DATA_SPEED_DIV_L(DATA_SPEED);   \/\/ Set 0xValueH of clock divisor:   byOutputBuffer[dwNumBytesToSend++] = MPSSE_DATA_SPEED_DIV_H(DATA_SPEED);    ftStatus |= FT_Write(ftHandle, byOutputBuffer, dwNumBytesToSend, &amp;dwNumBytesSent);    dwNumBytesToSend = 0; \/\/ Reset output buffer pointer    \/\/ Set initial states of the MPSSE interface   \/\/ - low byte, both pin directions and output values   \/*   | FPGA pin  | Pin Name | Pin | MPSSE  | Dir | def |   | --------- | -------- | --- | ------ | --- | --- |   | DCLK      | BDBUS0   | 38  | TCK\/SK | Out | 0   |   | DATA[0]   | BDBUS1   | 39  | TDI\/DO | Out | 1   |   | nCONFIG   | BDBUS2   | 40  | TDO\/DI | Out | 1   |   | nSTATUS   | BDBUS3   | 41  | TMS\/CS | In  | 1   |   | CONF_DONE | BDBUS4   | 43  | GPIOL0 | In  | 1   |   *\/    \/\/ Configure data bits low-byte of MPSSE port:   byOutputBuffer[dwNumBytesToSend++] = MPSSE_CMD_SET_DATA_BITS_LOWBYTE;   \/\/ Initial state config above:   byOutputBuffer[dwNumBytesToSend++] = (DCLK_DEF &lt;&lt; DCLK) | (DATA0_DEF &lt;&lt; DATA0)                                     | (N_CONFIG_DEF &lt;&lt; N_CONFIG) | (N_STATUS_DEF &lt;&lt; N_STATUS)                                     | (CONF_DONE_DEF &lt;&lt; CONF_DONE);   \/\/ Direction config above:   byOutputBuffer[dwNumBytesToSend++] = PORT_DIRECTION;    ftStatus |= FT_Write(ftHandle, byOutputBuffer, dwNumBytesToSend, &amp;dwNumBytesSent);   \/\/ Send off the low GPIO config commands   dwNumBytesToSend = 0; \/\/ Reset output buffer pointer    \/\/ Set initial states of the MPSSE interface   \/\/ - high byte, all input, Initial State -- 0.   \/\/ Send off the high GPIO config commands:   byOutputBuffer[dwNumBytesToSend++] = MPSSE_CMD_SET_DATA_BITS_HIGHBYTE;   byOutputBuffer[dwNumBytesToSend++] = 0x00;   byOutputBuffer[dwNumBytesToSend++] = 0x00;   ftStatus |= FT_Write(ftHandle, byOutputBuffer, dwNumBytesToSend, &amp;dwNumBytesSent);    \/\/ Disable loopback:   byOutputBuffer[dwNumBytesToSend++] = MPSSE_CMD_DISABLE_LOOP_TDI_TDO;   ftStatus |= FT_Write(ftHandle, byOutputBuffer, dwNumBytesToSend, &amp;dwNumBytesSent);    Sleep(2); \/\/ Wait for data to be transmitted and status   ftStatus = FT_GetQueueStatus(ftHandle, &amp;dwNumBytesToRead);   ftStatus |= FT_Read(ftHandle, byInputBuffer, dwNumBytesToRead, &amp;dwNumBytesRead);    if (ftStatus != FT_OK)   {     printf(\"Unknown error in initializing the MPSSE\\r\\n\");     return FT_OTHER_ERROR;   }   else if (dwNumBytesToRead &gt; 0)   {     printf(\"Error in initializing the MPSSE, bad code:\\r\\n\");      for ( int i = 0; i &lt; dwNumBytesToRead; i++)       printf (\" %02Xh\", byInputBuffer[i]);      printf(\"\\r\\n\");     return FT_INVALID_PARAMETER;   }    return FT_OK; }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h3 id=\"punkt-4-realizuem-protokol-zagruzki\">\u041f\u0443\u043d\u043a\u0442 4. \u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/h3>\n<p>  <\/p>\n<p>\u041a\u0430\u0436\u0435\u0442\u0441\u044f \u0432\u0441\u0435 \u0433\u043e\u0442\u043e\u0432\u043e \u0434\u043b\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0442\u0435\u043b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u044b\u0437\u043e\u0432\u0435\u043c <code>MPSSE_open()<\/code> \u0438 <code>MPSSE_setup()<\/code>, \u0430 \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (<code>FT_Close<\/code>) \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u043f\u0443\u0441\u0442\u043e\u0439 <code>getchar()<\/code>. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0441\u0446\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u0444\u0430 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043d\u0430 \u0432\u0441\u0435\u0445 \u043b\u0438\u043d\u0438\u044f\u0445 PS \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0443\u0440\u043e\u0432\u043d\u0438. \u041f\u043e\u043c\u0435\u043d\u044f\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0432 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (\u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e \u0441 \u041f\u041b\u0418\u0421 \u043d\u0435 \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f), \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 MPSSE \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0435 \u0432\u044b\u0434\u0430\u0435\u0442 \u0437\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u2014 \u0432\u0441\u0435 \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.<br \/>  \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0438 \u043f\u0440\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0441\u0435 \u0442\u0435\u0445 \u0436\u0435 op-code. \u041f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0439\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u2014 op-code, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0442\u0438\u043f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0437\u0430 \u043d\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043b\u0438\u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u0438\u043b\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0435. \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 MPSSE \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043b\u0438\u0431\u043e \u043c\u043b\u0430\u0434\u0448\u0438\u043c \u0437\u043d\u0430\u0447\u0430\u0449\u0438\u043c \u0431\u0438\u0442\u043e\u043c \u0432\u043f\u0435\u0440\u0435\u0434 (LSB), \u043b\u0438\u0431\u043e \u0441\u0442\u0430\u0440\u0448\u0438\u043c (MSB). \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u043b\u0438\u0431\u043e \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u043c\u0443, \u043b\u0438\u0431\u043e \u043f\u043e \u0437\u0430\u0434\u043d\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 op-code, \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0438\u0442 op-code \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b: <\/p>\n<p>  <\/p>\n<table>\n<thead>\n<tr>\n<th>\u0411\u0438\u0442<\/th>\n<th>\u0424\u0443\u043d\u043a\u0446\u0438\u044f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>0<\/td>\n<td>\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e \u0444\u0440\u043e\u043d\u0442\u0443 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c: 0 \u2014 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439, 1 \u2014 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>1 \u2014 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0430\u0439\u0442\u0430\u043c\u0438, 0 \u2014 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0438\u0442\u0430\u043c\u0438<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e \u0444\u0440\u043e\u043d\u0442\u0443 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435: 0 \u2014 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439, 1 \u2014 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>\u0420\u0435\u0436\u0438\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438: 1 \u2014 LSB, 0 \u2014 MSB first<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043b\u0438\u043d\u0438\u0438 TDI<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>\u0427\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043b\u0438\u043d\u0438\u0438 TDO<\/td>\n<\/tr>\n<tr>\n<td>6<\/td>\n<td>\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043b\u0438\u043d\u0438\u0438 TMS<\/td>\n<\/tr>\n<tr>\n<td>7<\/td>\n<td>\u0414\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c 0, \u0438\u043d\u0430\u0447\u0435 \u044d\u0442\u043e \u0434\u0440\u0443\u0433\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430 \u043a\u043e\u043c\u0430\u043d\u0434<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u041f\u041b\u0418\u0421 \u043f\u043e \u0441\u0445\u0435\u043c\u0435 PS \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 LSB. \u0414\u043b\u044f \u043d\u0430\u0441 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u0439\u0442\u0430\u043c\u0438, \u0430 \u043d\u0435 \u0431\u0438\u0442\u0430\u043c\u0438, \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 op-code \u043f\u0440\u0438\u043c\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0001_1000b \u0438\u043b\u0438 0x18 \u0432 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u0443\u0434\u0435\u0442 \u0434\u043b\u0438\u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u0434\u0432\u0430 \u0431\u0430\u0439\u0442\u0430, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e), \u0438 \u0441\u0430\u043c\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0447\u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c: \u0434\u043b\u0438\u043d\u0430 \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0437\u0430 \u0432\u044b\u0447\u0435\u0442\u043e\u043c \u0435\u0434\u0438\u043d\u0438\u0446\u044b. \u0422\u043e \u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442, \u0442\u043e \u0434\u043b\u0438\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u0430 0, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c 65536, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u0443 65535. \u0414\u0443\u043c\u0430\u044e, \u043e\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0437\u0430\u0447\u0435\u043c \u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043d\u043e. \u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0431\u043b\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0444\u043e\u0440\u043c\u0438\u043c \u0432 \u0432\u0438\u0434\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>MPSSE_send<\/code>.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 MPSSE_send<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">static BYTE byBuffer[65536 + 3]; static FT_STATUS MPSSE_send(BYTE * buff, DWORD dwBytesToWrite) {   DWORD dwNumBytesToSend = 0, dwNumBytesSent, bytes;   FT_STATUS ftStatus;    \/\/ Output on rising clock, no input   \/\/ MSB first, clock a number of bytes out   byBuffer[dwNumBytesToSend++] = MPSSE_CMD_LSB_DATA_OUT_BYTES_POS_EDGE; \/\/ 0x18    bytes = dwBytesToWrite -1;   byBuffer[dwNumBytesToSend++] = (bytes) &amp; 0xFF; \/\/ Length L   byBuffer[dwNumBytesToSend++] = (bytes &gt;&gt; 8) &amp; 0xFF; \/\/ Length H    memcpy(&amp;byBuffer[dwNumBytesToSend], buff, dwBytesToWrite);    dwNumBytesToSend += dwBytesToWrite;   ftStatus = FT_Write(ftHandle, byBuffer, dwNumBytesToSend, &amp;dwNumBytesSent);    if (ftStatus != FT_OK )   {     printf (\"ERROR send data\\r\\n\");     return ftStatus;   } else if (dwNumBytesSent != dwNumBytesToSend)   {     printf (\"ERROR send data, %d %d\\r\\n\", dwNumBytesSent, dwNumBytesToSend);   }    return FT_OK; }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u0441\u043a\u043e\u043b\u044c\u0437\u043a\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u2014 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0431\u0443\u0444\u0435\u0440 \u043d\u0430 65 \u043a\u0431\u0430\u0439\u0442, \u0430 \u0432\u0441\u0435 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0431\u043b\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c op-code \u0438 \u0434\u043b\u0438\u043d\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c <code>byBuffer<\/code>, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <code>buff<\/code>, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u0432 \u043f\u0435\u0440\u0432\u044b\u0435 \u0442\u0440\u0438 \u0431\u0430\u0439\u0442\u0430 \u043f\u043e\u0434 op-code \u0441 \u0434\u043b\u0438\u043d\u043e\u0439. \u0414\u043b\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u044f \u0442\u0430\u043a \u0431\u044b \u0438 \u0441\u0434\u0435\u043b\u0430\u043b, \u043d\u043e \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0434\u043b\u044f \u041f\u041a \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043c \u0441\u0435\u0431\u0435 \u0442\u0430\u043a\u0443\u044e \u0440\u043e\u0441\u043a\u043e\u0448\u044c.<br \/>  \u041a\u0430\u043a \u0443\u0436\u0435 \u043e\u0442\u043c\u0435\u0447\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435, \u043f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0441\u0446\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u0444\u0430 \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c &#171;\u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u0443\u044e&#187; \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u043c\u0435\u043d\u0430, \u0443 \u043c\u043e\u0435\u0433\u043e \u043e\u0441\u0446\u0438\u043b\u043b\u043e\u0433\u0440\u0430\u0444\u0430 \u043f\u043e\u043b\u043e\u0441\u0430 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e 25 \u041c\u0413\u0446, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432, \u044f \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044e \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0432 1 \u041c\u0413\u0446 (\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043c\u0430\u043a\u0440\u043e\u0441\u0430\u043c, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c <code>#define DATA_SPEED 1000000ul<\/code>). \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c:<\/p>\n<p>  <\/p>\n<pre><code>BYTE byOutputBuffer[] = {0x02, 0x1B, 0xEE, 0x01, 0xFA}; MPSSE_send(byOutputBuffer, sizeof(byOutputBuffer));<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043a\u043b\u0438\u043a\u0430\u0431\u0435\u043b\u044c\u043d\u0430\u044f):<br \/>  <a href=\"https:\/\/habrastorage.org\/webt\/bp\/gp\/es\/bpgpesvsoradzqfecft07bdjk-u.png\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bp\/gp\/es\/bpgpesvsoradzqfecft07bdjk-u.png\"><\/a><\/p>\n<p>  <\/p>\n<p>\u0421\u0438\u043d\u0438\u0439 \u043a\u0430\u043d\u0430\u043b \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0441 \u043b\u0438\u043d\u0438\u0438 <em>DATA[0]<\/em>, \u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u2014 <em>DCLK<\/em>. \u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0434 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c. \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438, \u0442\u043e \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438.<br \/>  \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d SPI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (\u043d\u0443 \u043f\u043e\u0447\u0442\u0438). \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432 PS, \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0444\u043b\u0430\u0433\u0430\u043c\u0438. \u0422\u0440\u0438 \u0444\u043b\u0430\u0433\u0430 <em>nCONFIG<\/em>, <em>nSTATUS<\/em>, <em>CONF_DONE<\/em>. \u041f\u0435\u0440\u0432\u044b\u0439 \u0444\u043b\u0430\u0433 \u2014 \u044d\u0442\u043e \u0432\u044b\u0432\u043e\u0434, \u043c\u044b \u0438\u043c \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0434\u0432\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u2014 \u0432\u0445\u043e\u0434\u0430, \u043c\u044b \u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043c\u0435\u0442\u044c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c.<br \/>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>MPSSE_get_lbyte<\/code> \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0442\u043e\u0432\u0443\u044e \u043c\u0430\u0441\u043a\u0443. <\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 MPSSE_get_lbyte<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">static FT_STATUS MPSSE_get_lbyte(BYTE *lbyte) {   DWORD dwNumBytesToSend, dwNumBytesSent, dwNumBytesToRead, dwNumBytesRead;   BYTE byOutputBuffer[8];   FT_STATUS ftStatus;    dwNumBytesToSend = 0;   byOutputBuffer[dwNumBytesToSend++] = MPSSE_CMD_GET_DATA_BITS_LOWBYTE;   ftStatus = FT_Write(ftHandle, byOutputBuffer, dwNumBytesToSend, &amp;dwNumBytesSent);   Sleep(2); \/\/ Wait for data to be transmitted and status    ftStatus = FT_GetQueueStatus(ftHandle, &amp;dwNumBytesToRead);   ftStatus |= FT_Read(ftHandle, lbyte, dwNumBytesToRead, &amp;dwNumBytesRead);   if ((ftStatus != FT_OK) &amp; (dwNumBytesToRead != 1))   {     printf(\"Error read Lbyte\\r\\n\");     return FT_OTHER_ERROR; \/\/ Exit with error   }   return FT_OK; }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0441\u0440\u0435\u0434\u0438 op-code \u043d\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0442 \u0432 \u043f\u043e\u0440\u0442\u0443 \u0431\u0435\u0437 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0433\u043e \u0431\u0430\u0439\u0442\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u0443\u044e \u043b\u0438\u043d\u0438\u044e \u0432\u044b\u0432\u043e\u0434\u0430, \u043d\u0443\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0431\u0430\u0439\u0442, \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0431\u0438\u0442 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043f\u043e\u0440\u0442. \u041d\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043d\u043e \u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442. \u041e\u0444\u043e\u0440\u043c\u0438\u043c \u043a\u043e\u0434 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>MPSSE_set_lbyte<\/code>:<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 MPSSE_set_lbyte<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">static FT_STATUS MPSSE_set_lbyte(BYTE lb, BYTE mask) {   DWORD dwNumBytesToSend, dwNumBytesSent;   BYTE byOutputBuffer[8], lbyte;   FT_STATUS ftStatus;    ftStatus = MPSSE_get_lbyte(&amp;lbyte);   if ( ftStatus != FT_OK)     return ftStatus;    \/\/ Set to zero the bits selected by the mask:   lbyte &amp;= ~mask;   \/\/ Setting zero is not selected by the mask bits:   lb &amp;= mask;    lbyte |= lb;    dwNumBytesToSend = 0;   \/\/ Set data bits low-byte of MPSSE port:   byOutputBuffer[dwNumBytesToSend++] = MPSSE_CMD_SET_DATA_BITS_LOWBYTE;   byOutputBuffer[dwNumBytesToSend++] = lbyte;   byOutputBuffer[dwNumBytesToSend++] = PORT_DIRECTION;   ftStatus = FT_Write(ftHandle, byOutputBuffer, dwNumBytesToSend, &amp;dwNumBytesSent);    if ((ftStatus != FT_OK) &amp; (dwNumBytesSent != 1))   {     printf(\"Error set Lbyte\\r\\n\");     return FT_OTHER_ERROR;   }   return FT_OK; }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u043a\u0438\u0440\u043f\u0438\u0447\u0438\u043a\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u044b, \u043e\u0431\u043e\u0436\u0436\u0435\u043d\u044b \u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u043a\u043b\u0430\u0434\u043a\u0435. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439: \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c FTDI; \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c MPSSE; \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c rbf-\u0444\u0430\u0439\u043b \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435, \u043f\u043e\u0434\u0430\u0435\u043c \u043d\u0430 \u043b\u0438\u043d\u0438\u044e <em>nCONFIG<\/em> \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043d\u043e\u043b\u044c, \u0434\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043d\u0443\u043b\u044f \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 <em>N_STATUS<\/em>; \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 rbf-\u0444\u0430\u0439\u043b\u0430 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0432 \u041f\u041b\u0418\u0421; \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0444\u0430\u0439\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u043d \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, \u0434\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u043d\u0430 \u043b\u0438\u043d\u0438\u0438 <em>CONF_DONE<\/em>. \u0412\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0438 \u043c\u0430\u043d\u0443\u0430\u043b\u0430\u0445, \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c MPSSE \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435\u043c FTDI \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0435\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0444\u043b\u0430\u0433 <em>nCONFIG<\/em> \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432 \u043d\u0443\u043b\u0435 \u0438 \u041f\u041b\u0418\u0421 &#171;\u0437\u0430\u0431\u0443\u0434\u0435\u0442&#187; \u0432\u0441\u0435 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0432 \u043d\u0435\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u0438 \u043f\u043e\u0440\u0442.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 main<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">int main(int argc, char *argv[]) {   FT_STATUS ftStatus;   BYTE lowByte;    DWORD numDevs; \/\/ create the device information list    if ( argv[1] == NULL)   {     printf (\"NO file\\r\\n\");     return -1;   }    frbf = fopen(argv[1],\"rb\");   if (frbf == NULL)   {     printf (\"Error open rbf\\r\\n\");     return -1;   }    ftStatus = FT_CreateDeviceInfoList(&amp;numDevs);   if ((numDevs == 0) || (ftStatus != FT_OK))   {     printf(\"Error. FTDI devices not found in the system\\r\\n\");     return -1;   }    ftStatus = MPSSE_open (\"LESO7 B\");   if (ftStatus != FT_OK)   {     printf(\"Error in MPSSE_open %d\\n\", ftStatus);     EXIT(-1);   }    MPSSE_setup();   if (ftStatus != FT_OK)   {     printf(\"Error in MPSSE_setup %d\\n\", ftStatus);     EXIT(-1);   }    printf (\"nConfig -&gt; 0\\r\\n\");   MPSSE_set_lbyte(0, 1 &lt;&lt; N_CONFIG);    printf (\"nConfig -&gt; 1\\r\\n\");   MPSSE_set_lbyte(1 &lt;&lt; N_CONFIG, 1 &lt;&lt; N_CONFIG);    if (MPSSE_get_lbyte(&amp;lowByte) != FT_OK)   {     EXIT(-1);   }    if (((lowByte &gt;&gt; N_STATUS) &amp; 1) == 0)   {     printf(\"Error. FPGA is not responding\\r\\n\");     EXIT(-1);   }    int i = 0;   size_t  readBytes = 0;   \/\/ Send the configuration file:   do   {     readBytes = fread(buff, 1, MPSSE_PCK_SEND_SIZE, frbf);     if (MPSSE_send(buff, readBytes) != FT_OK)       EXIT(-1);      putchar('*');     if (!((++i)%16)) printf(\"\\r\\n\");   }   while (readBytes == MPSSE_PCK_SEND_SIZE);    printf(\"\\r\\n\");    memset(buff, 0x00, sizeof(buff));   MPSSE_send(buff, 1);  \/\/ \u043d\u0435\u0443\u0436\u0435\u043b\u0438 \u043d\u0438 \u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442 \u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443?   printf(\"Load complete\\r\\n\");    \/\/ wait CONF_DONE set   \/\/ A low-to-high transition on the CONF_DONE pin indicates that the configuration is   \/\/ complete and initialization of the device can begin.   i = 0;   do   {     if (MPSSE_get_lbyte(&amp;lowByte) != FT_OK)     {       printf (\"Error read CONF_DONE\\r\\n\");       EXIT(-1);     }     if (i++ &gt; TIMEOUT_CONF_DONE)     {       printf (\"Error CONF_DONE\\r\\n\");       EXIT(-1);     }     Sleep(2);   }   while (((lowByte &gt;&gt; CONF_DONE) &amp; 1) == 0);   printf(\"Configuration complete\\r\\n\");    FT_Close(ftHandle);   fclose(frbf); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b: <\/p>\n<p>  <\/p>\n<pre><code>\u041epen \"LESO7 B\" OK nConfig -&gt; 0 nConfig -&gt; 1 ** Load complete Configuration complete<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0423\u0442\u0438\u043b\u0438\u0442\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 rbf-\u0444\u0430\u0439\u043b \u0432 \u041f\u041b\u0418\u0421. \u041f\u041b\u0418\u0421 \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u043e \u043c\u043e\u0440\u0433\u0430\u0435\u0442 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438. \u0412\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 30 \u041c\u0431\u0438\u0442\/\u0441\u0435\u043a \u0438 \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u041f\u041e.<br \/>  \u041a \u043c\u0438\u043d\u0443\u0441\u0430\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u0442\u043e, \u0447\u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u043d\u0435 JTAG. <\/p>\n<p>  <\/p>\n<h3 id=\"materialy-po-teme\">\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u043f\u043e \u0442\u0435\u043c\u0435<\/h3>\n<p>  <\/p>\n<ol>\n<li><a href=\"https:\/\/bitbucket.org\/Shamrel\/ftdi-mpsse-altera-ps\/src\/master\/\">FTDI-MPSSE-Altera PS<\/a>. \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c.<\/li>\n<li><a href=\"http:\/\/www.labfor.ru\/devices\/leso7\">\u0423\u0447\u0435\u0431\u043d\u044b\u0439 \u0441\u0442\u0435\u043d\u0434 \u0434\u043b\u044f \u0426\u041e\u0421<\/a>. \u0416\u0435\u043b\u0435\u0437\u043e \u0434\u043b\u044f \u043e\u043f\u044b\u0442\u0430. \u0422\u0430\u043c \u0436\u0435 \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u043f\u043e\u043b\u043d\u0443\u044e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u043f\u0440\u0438\u0431\u043e\u0440\u0430.<\/li>\n<li><a href=\"http:\/\/www.ftdichip.com\/Support\/Documents\/ProgramGuides\/D2XX_Programmer's_Guide(FT_000071).pdf\">Software Application Development D2XX Programmer&#8217;s Guide<\/a>. \u0422\u043e \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043e\u0444\u0442\u0430 \u0434\u043b\u044f FTDI. \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e API D2XX. <\/li>\n<li><a href=\"https:\/\/www.ftdichip.com\/Support\/Documents\/AppNotes\/AN_135_MPSSE_Basics.pdf\">FTDI MPSSE Basics. Application Note AN_135<\/a>. \u041f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0432\u0441\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u041e\u0441\u043d\u043e\u0432\u044b FTDI MPSSE. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0443\u0442\u0438 \u0440\u0435\u0436\u0438\u043c\u0430 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u043a\u043e\u0434\u0430. <\/li>\n<li><a href=\"https:\/\/www.ftdichip.com\/Support\/Documents\/AppNotes\/AN_108_Command_Processor_for_MPSSE_and_MCU_Host_Bus_Emulation_Modes.pdf\">Command Processor for MPSSE and MCU Host Bus Emulation Modes. Application Note AN_108<\/a>. \u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u043f\u043e op-code. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e \u043d\u0438\u043a\u0430\u043a. <\/li>\n<li><a href=\"https:\/\/www.ftdichip.com\/Drivers\/D2XX.htm\">D2XX Drivers<\/a>. \u0414\u0440\u0430\u0439\u0432\u0435\u0440 FTDI.<\/li>\n<\/ol>\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\/post\/426131\/\"> https:\/\/habr.com\/post\/426131\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dx\/i7\/px\/dxi7pxs820_gc9p_q_1m6zoaakm.jpeg\">  <\/p>\n<p>\u0412 \u0436\u0438\u0437\u043d\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043b\u0438\u0441\u043e\u0432\u043e\u0434\u0430 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u041f\u041b\u0418\u0421. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043c\u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430 \u0434\u043b\u044f \u043a\u0430\u0444\u0435\u0434\u0440\u044b \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u0443\u0437\u0430. \u0421\u0442\u0435\u043d\u0434 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u0445\u043e\u0442\u044f \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0410 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0442\u0435\u043d\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 \u041f\u041b\u0418\u0421 (Altera Cyclone IV), \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e \u0437\u0430\u0434\u0443\u043c\u043a\u0435 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u0442\u0435\u043d\u0434\u0430 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u0432\u0441\u044f\u043a\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u0426\u041e\u0421. \u0421\u0442\u0435\u043d\u0434 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 USB. \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u041f\u041b\u0418\u0421 \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 USB.<br \/>  \u041f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u041f\u041a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c FTDI \u0432 \u0435\u0435 \u0434\u0432\u0443\u0445\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043f\u043e\u0441\u0442\u0430\u0441\u0438 \u2014 FT2232H. \u041e\u0434\u0438\u043d \u043a\u0430\u043d\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u041f\u041b\u0418\u0421, \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 FIFO. <\/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-290775","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/290775","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=290775"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/290775\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=290775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=290775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=290775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}