{"id":32641,"date":"2021-09-05T08:11:45","date_gmt":"2021-09-05T08:11:45","guid":{"rendered":"https:\/\/driverbr.com\/?p=32641"},"modified":"2024-02-16T13:30:42","modified_gmt":"2024-02-16T13:30:42","slug":"interfacing-ft2232h-hi-speed-devices-to-i2c-bus","status":"publish","type":"post","link":"https:\/\/driverbr.com\/?p=32641","title":{"rendered":"Interfacing FT2232H Hi-Speed Devices to I2C Bus"},"content":{"rendered":"<p><strong>Introdu\u00e7\u00e3o<\/strong><\/p>\n<p>O FT2232H e FT4232H s\u00e3o a primeira velocidade USB 2.0 da FTDI (480MBits \/ s) USB para UART \/ FIFO. Eles tamb\u00e9m t\u00eam a capacidade de ser configurado em uma variedade de interfaces seriais usando o MPSSE interno (motor serial s\u00edncrono multi-protocolo). O dispositivo FT2232H possui duas portas independentes, ambas as quais podem ser configuradas usando o MPSSE enquanto apenas canal A e B de FT4232H podem ser configurados usando o MPSSE.<\/p>\n<p>O uso de MPSSE pode simplificar o protocolo serial s\u00edncrono (USB para SPI, I2C, Jtag, etc.). Esta nota de aplicativo ilustra como usar o MPSSE do FT2232H para interface com o barramento I2C. Os usu\u00e1rios podem usar o exemplo de c\u00f3digo de software esquem\u00e1tico e funcional para come\u00e7ar seu design. Observe que o c\u00f3digo de software \u00e9 fornecido apenas como uma ilustra\u00e7\u00e3o e n\u00e3o suportado pelo FTDI.<\/p>\n<p><strong>Introdu\u00e7\u00e3o do \u00f4nibus I2C.<\/strong><\/p>\n<p>O I2C \u00e9 um barramento de comunica\u00e7\u00e3o mestre \/ escravo de taxa de data m\u00e9dia e m\u00e9dia. Dois fios, dados seriais (SDA) e rel\u00f3gio serial (SCL), transportar informa\u00e7\u00f5es entre os dispositivos conectados ao barramento. Cada dispositivo \u00e9 reconhecido por um endere\u00e7o exclusivo e pode operar como um transmissor ou receptor, dependendo da fun\u00e7\u00e3o do dispositivo. Al\u00e9m de transmissores e receptores, os dispositivos tamb\u00e9m podem ser considerados mestres ou escravos ao realizar transfer\u00eancias de dados. Um mestre \u00e9 o dispositivo que inicia uma transfer\u00eancia de dados no barramento. Naquela \u00e9poca, qualquer dispositivo endere\u00e7ado \u00e9 considerado um escravo.<\/p>\n<p>A camada f\u00edsica do barramento I2C \u00e9 um protocolo de handshaking simples que depende de sa\u00eddas de coletor aberto nos dispositivos de barramento e ao dispositivo dirigindo ou liberando as linhas de barramento, portanto, um resistor de pull-up \u00e9 necess\u00e1rio em cada fio do barramento.<\/p>\n<p>O \u00d4nibus do I2C \u00e9 um verdadeiro barramento multi-mestre, incluindo detec\u00e7\u00e3o de colis\u00e3o e arbitragem para evitar a corrup\u00e7\u00e3o de dados se dois ou mais mestres iniciaram simultaneamente a transfer\u00eancia de dados<\/p>\n<p>Transfer\u00eancias de dados bidirecionadas em s\u00e9rie, de 8 bits, podem ser feitas em at\u00e9 100 kbit \/ s no modo padr\u00e3o de barramento I2C, at\u00e9 400 kbit \/ s no modo r\u00e1pido ou at\u00e9 3,4 mbit \/ s em o modo de alta velocidade.<\/p>\n<p>A Figura 1 mostra transfer\u00eancias de dados t\u00edpicas no barramento I2C. O mestre fornece o rel\u00f3gio; Inicia e termina as transa\u00e7\u00f5es e o escravo pretendido (com base no endere\u00e7o fornecido pelo mestre) reconhece o mestre dirigindo ou liberando o barramento. O escravo n\u00e3o pode terminar a transa\u00e7\u00e3o, mas pode indicar um desejo de um &#8220;nak&#8221; ou n\u00e3o reconhecido.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-32642 size-full\" src=\"https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img69-min.jpg\" alt=\"Figura 1 Transfer\u00eancia de dados no barramento I2C\" width=\"925\" height=\"327\" srcset=\"https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img69-min.jpg 925w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img69-min-300x106.jpg 300w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img69-min-768x271.jpg 768w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img69-min-560x198.jpg 560w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img69-min-260x92.jpg 260w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img69-min-160x57.jpg 160w\" sizes=\"auto, (max-width: 925px) 100vw, 925px\" \/><\/p>\n<p style=\"text-align: center;\">Figura 1 Transfer\u00eancia de dados no barramento I2C<\/p>\n<p>A especifica\u00e7\u00e3o i2c define situa\u00e7\u00f5es \u00fanicas como condi\u00e7\u00f5es de partida e parada (p) (veja a Figura 2). Uma transi\u00e7\u00e3o alta para baixa na linha SDA enquanto a SCL \u00e9 alta indica uma condi\u00e7\u00e3o de in\u00edcio. Uma transi\u00e7\u00e3o baixa a alta na linha SDA enquanto a SCL \u00e9 alta define uma condi\u00e7\u00e3o de parada. As condi\u00e7\u00f5es de in\u00edcio e parada s\u00e3o sempre geradas pelo mestre.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-32643 size-full\" src=\"https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img78-min.jpg\" alt=\"Figura 2 Condi\u00e7\u00f5es de in\u00edcio e parada\" width=\"717\" height=\"186\" srcset=\"https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img78-min.jpg 717w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img78-min-300x78.jpg 300w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img78-min-560x145.jpg 560w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img78-min-260x67.jpg 260w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img78-min-160x42.jpg 160w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/p>\n<p style=\"text-align: center;\">Figura 2 Condi\u00e7\u00f5es de in\u00edcio e parada<\/p>\n<p>Cada byte colocado na linha SDA deve ter 8 bits de comprimento. O n\u00famero de bytes pode ser transmitido por transfer\u00eancia \u00e9 irrestrito. Cada byte \u00e9 seguido por um bit de reconhecimento. Os dados s\u00e3o transferidos com o bit mais significativo (MSB) primeiro. Na maioria dos casos, a transfer\u00eancia de dados com reconhecimento \u00e9 obrigat\u00f3ria. O pulso de rel\u00f3gio relacionado ao reconhecimento \u00e9 gerado pelo mestre. O transmissor libera a linha SDA (alta) durante o pulso do rel\u00f3gio de reconhecimento. O receptor deve reduzir a linha SDA durante o pulso do rel\u00f3gio de confirma\u00e7\u00e3o para que ele permane\u00e7a est\u00e1vel baixo durante o alto per\u00edodo deste pulso de clock (veja a Figura 3). Al\u00e9m disso, a configura\u00e7\u00e3o e os tempos de espera tamb\u00e9m devem ser levados em conta.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-32644 size-full\" src=\"https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img79-min.jpg\" alt=\"Figura 3 Reconhe\u00e7a o I2C-BUS\" width=\"718\" height=\"310\" srcset=\"https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img79-min.jpg 718w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img79-min-300x130.jpg 300w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img79-min-560x242.jpg 560w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img79-min-260x112.jpg 260w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img79-min-160x69.jpg 160w\" sizes=\"auto, (max-width: 718px) 100vw, 718px\" \/><\/p>\n<p style=\"text-align: center;\">Figura 3 Reconhe\u00e7a o I2C-BUS<\/p>\n<p>Transfer\u00eancias de dados da especifica\u00e7\u00e3o I2C devem seguir o formato. Ap\u00f3s a (s) condi\u00e7\u00e3o (s) de in\u00edcio, um endere\u00e7o escravo deve ser enviado primeiro. Este endere\u00e7o \u00e9 de 7 bits seguidos por um oitavo bit que \u00e9 um bit de dire\u00e7\u00e3o de dados (R \/ W\u0305) &#8211; A &#8216;zero&#8217; indica uma transmiss\u00e3o (grava\u00e7\u00e3o), um &#8216;um&#8217; indica uma solicita\u00e7\u00e3o de dados (leitura). Depois que o byte do endere\u00e7o escravo for enviado, o mestre pode continuar sua transfer\u00eancia de dados, escrevendo ou lendo byte de dados como formato definido. A transfer\u00eancia de dados \u00e9 sempre encerrada por uma condi\u00e7\u00e3o de parada gerada pelo mestre.<\/p>\n<p><strong>Projeto de amostra com FT2232H<\/strong><\/p>\n<p><strong>Vis\u00e3o geral<\/strong><\/p>\n<p>Para demonstrar como usar o mecanismo serial s\u00edncrono multi-protocolo (MPSSE) em uma interface de barramento USB para I2C, \u00e9 dado um projeto de amostra. Um dispositivo EEPROM (24LC256) com interface serial I2C \u00e9 selecionado como a aplica\u00e7\u00e3o t\u00edpica. Um esquema de refer\u00eancia mostrando a conex\u00e3o I2C entre o FT2232H e o 24LC256 \u00e9 dado. Al\u00e9m disso, alguns softwares de amostra (listagem C ++) s\u00e3o fornecidos, o que ilustra como inicializar, programar e ler um dispositivo de 24LC256 EEPROM atrav\u00e9s da interface I2C.<\/p>\n<p><strong>Circuito de amostra<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-32645 size-full\" src=\"https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img86-min.jpg\" alt=\"Figura 4 Interface FT2232H com 24LC256\" width=\"635\" height=\"418\" srcset=\"https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img86-min.jpg 635w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img86-min-300x197.jpg 300w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img86-min-560x369.jpg 560w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img86-min-260x171.jpg 260w, https:\/\/driverbr.com\/wp-content\/uploads\/2021\/09\/img86-min-160x105.jpg 160w\" sizes=\"auto, (max-width: 635px) 100vw, 635px\" \/><\/p>\n<p style=\"text-align: center;\">Figura 4 Interface FT2232H com 24LC256<\/p>\n<p>A Figura 1 ilustra um exemplo de interface da porta de MPSSE de FT2232H com dispositivo EEPROM serial I2C. O FT2232H est\u00e1 em Configura\u00e7\u00e3o de Design Powered do Barramento USB. Por favor, consulte a folha de dados FT2232H para especifica\u00e7\u00f5es detalhadas. O USB VBUS (+ 5V) \u00e9 regulamentado para + 3.3V para fornecer VCCIO, VPHY, VPLL e Vregin de FT2232H, o 93C46 EEPROM e os dispositivos de 24LC256 EEPROM. A sa\u00edda do regulador LDO ON-Chip (+ 1.8V) de FT2232H impulsiona a fonte de n\u00facleo FT2232H (VCORE). O 93C46 EEPROM \u00e9 uma op\u00e7\u00e3o para permitir a personaliza\u00e7\u00e3o de configura\u00e7\u00f5es USB, como VID \/ PID, descri\u00e7\u00e3o, n\u00famero de s\u00e9rie, despertar remoto, etc.<\/p>\n<p>Um eeprom serial de microchip 24lc256 \u00e9 usado como dispositivo de destino. O 24LC256 \u00e9 um baile de 256K Bits eletricamente apag\u00e1vel com interface serial compat\u00edvel com 2 fios I2C. Suporta uma frequ\u00eancia de rel\u00f3gio serial de at\u00e9 400 kHz. Por favor, consulte a folha de dados de 24LC256 para uma especifica\u00e7\u00e3o detalhada.<\/p>\n<p>Os pinos A0, A1, A2 s\u00e3o usados \u200b\u200bpelo dispositivo 24LC256 para v\u00e1rias opera\u00e7\u00f5es de dispositivos. O chip \u00e9 selecionado quando os n\u00edveis dessas entradas s\u00e3o id\u00eanticos ao endere\u00e7o escravo. Eles podem ser vinculados a vcc ou vss no circuito acima.<\/p>\n<p>Ambos os canais de FT2232H podem ser configurados para trabalhar no modo MPSSE. O canal A \u00e9 usado na figura 1. As defini\u00e7\u00f5es detalhadas do pino para a conex\u00e3o I2C FT2232H s\u00e3o descritas na tabela 1. Uma descri\u00e7\u00e3o funcional detalhada \u00e9 dada abaixo:<\/p>\n<p>SK &#8211; Conecte-se ao Pin SCL de 24LC256. Pin do rel\u00f3gio serial para sincronizar a transfer\u00eancia de dados, iniciada por FT2232H e sa\u00edda para 24LC256. O valor do rel\u00f3gio \u00e9 determinado pelo divisor de rel\u00f3gio interno FT2232H e pode ser de at\u00e9 30 MHz, este sinal requer um resistor de pull-up para o VCC (t\u00edpico 10 k\u03a9 para 100 kHz e 2 k\u03a9 para 400 kHz).<\/p>\n<p>Fa\u00e7a \/ di-wired juntos e conectado ao Pin SDA de 24LC256 para transfer\u00eancia de dados bidirecional. Defina como PIN de sa\u00edda para transferir dados seriais ou endere\u00e7o do dispositivo FT2232H para 24LC256. DI definido como pino de entrada para receber o PIN de entrada de dados seriais do dispositivo de 24LC256 para FT2232H. Requer um resistor pull-up para o VCC (t\u00edpico 10 k\u03a9 para 100 kHz e 2 k\u03a9 para 400 kHz).<\/p>\n<p>GPiol0 &#8211; E \/ S de prop\u00f3sito geral da porta de MPSSE de FT2232H. Conecte-se ao pino WP do dispositivo de 24LC256 para controlar a fun\u00e7\u00e3o de prote\u00e7\u00e3o de grava\u00e7\u00e3o do dispositivo 24LC256. Isso \u00e9 definido para um n\u00edvel baixo l\u00f3gico para o modo de opera\u00e7\u00e3o normal do 24LC256. Se definido para um n\u00edvel de alta l\u00f3gica, a opera\u00e7\u00e3o de grava\u00e7\u00e3o do dispositivo 24LC256 ser\u00e1 proibida.<\/p>\n<table>\n<tbody>\n<tr>\n<td colspan=\"2\" width=\"121\">Channel A<\/td>\n<td colspan=\"2\" width=\"123\">Channel B<\/td>\n<td rowspan=\"2\" width=\"65\">MPSSE<\/p>\n<p>Pin Name<\/td>\n<td rowspan=\"2\" width=\"57\">Type<\/td>\n<td rowspan=\"2\" width=\"208\">Description<\/td>\n<\/tr>\n<tr>\n<td width=\"46\">Pin#<\/td>\n<td width=\"76\">Pin Name<\/td>\n<td width=\"47\">Pin #<\/td>\n<td width=\"75\">Pin Name<\/td>\n<\/tr>\n<tr>\n<td width=\"46\">16<\/td>\n<td width=\"76\">ADBUS0<\/td>\n<td width=\"47\">38<\/td>\n<td width=\"75\">BDBUS0<\/td>\n<td width=\"65\">SK<\/td>\n<td width=\"57\">Output<\/td>\n<td width=\"208\">Serial Clock<\/td>\n<\/tr>\n<tr>\n<td width=\"46\">17<\/td>\n<td width=\"76\">ADBUS1<\/td>\n<td width=\"47\">39<\/td>\n<td width=\"75\">BDBUS1<\/td>\n<td width=\"65\">DO<\/td>\n<td width=\"57\">Output<\/td>\n<td width=\"208\">Serial Data\/Address Output<\/td>\n<\/tr>\n<tr>\n<td width=\"46\">18<\/td>\n<td width=\"76\">ADBUS2<\/td>\n<td width=\"47\">40<\/td>\n<td width=\"75\">BDBUS2<\/td>\n<td width=\"65\">DI<\/td>\n<td width=\"57\">Input<\/td>\n<td width=\"208\">Serial Data Input<\/td>\n<\/tr>\n<tr>\n<td width=\"46\">21<\/td>\n<td width=\"76\">ADBUS4<\/td>\n<td width=\"47\">43<\/td>\n<td width=\"75\">BDBUS4<\/td>\n<td width=\"65\">GPIOL0\/ GPIOH0<\/td>\n<td width=\"57\">Output<\/td>\n<td width=\"208\">Write Protect control output<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: center;\">Tabela 1 Descri\u00e7\u00e3o de FT2232H Conectando com 24LC256<\/p>\n<div class=\"social-share-buttons\"><a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https:\/\/driverbr.com\/?p=32641\" target=\"_blank\" rel=\"noopener\">Facebook<\/a><a href=\"https:\/\/twitter.com\/intent\/tweet?url=https:\/\/driverbr.com\/?p=32641&text=Interfacing+FT2232H+Hi-Speed+Devices+to+I2C+Bus\" target=\"_blank\" rel=\"noopener\">Twitter<\/a><a href=\"https:\/\/www.linkedin.com\/shareArticle?url=https:\/\/driverbr.com\/?p=32641&title=Interfacing+FT2232H+Hi-Speed+Devices+to+I2C+Bus\" target=\"_blank\" rel=\"noopener\">LinkedIn<\/a><a href=\"https:\/\/pinterest.com\/pin\/create\/button\/?url=https:\/\/driverbr.com\/?p=32641&description=Interfacing+FT2232H+Hi-Speed+Devices+to+I2C+Bus\" target=\"_blank\" rel=\"noopener\">Pinterest<\/a><\/div>","protected":false},"excerpt":{"rendered":"<p>Introdu\u00e7\u00e3o O FT2232H e FT4232H s\u00e3o a primeira velocidade USB 2.0 da FTDI (480MBits \/ s) USB para UART \/ FIFO. Eles tamb\u00e9m t\u00eam a capacidade de ser configurado em uma variedade de interfaces seriais usando o MPSSE interno (motor&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/driverbr.com\/?p=32641\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"no","footnotes":""},"categories":[40],"tags":[],"class_list":["post-32641","post","type-post","status-publish","format-standard","hentry","category-software"],"modified_by":"driverbr","_links":{"self":[{"href":"https:\/\/driverbr.com\/index.php?rest_route=\/wp\/v2\/posts\/32641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/driverbr.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/driverbr.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/driverbr.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/driverbr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=32641"}],"version-history":[{"count":0,"href":"https:\/\/driverbr.com\/index.php?rest_route=\/wp\/v2\/posts\/32641\/revisions"}],"wp:attachment":[{"href":"https:\/\/driverbr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=32641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/driverbr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=32641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/driverbr.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=32641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}