€•zCŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒEnglish”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ /i2c/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Simplified)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/zh_CN/i2c/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/zh_TW/i2c/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ja_JP/i2c/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/ko_KR/i2c/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/pt_BR/i2c/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ/translations/sp_SP/i2c/summary”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒItalian”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒIntroduzione a I2C e SMBus”h]”hŒIntroduzione a I2C e SMBus”…””}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒL/var/lib/git/docbuild/linux/Documentation/translations/it_IT/i2c/summary.rst”h´KubhŒ paragraph”“”)”}”(hXgI²C (letteralmente "I al quadrato C" e scritto I2C nella documentazione del kernel) è un protocollo sviluppato da Philips. É un protocollo a 2 fili (a velocità variabile, solitamente fino a 400KHz, e in modalità alta velocità fino a 5 MHz). Questo protocollo offre un bus a basso costo per collegare dispositivi di vario genere a cui si accede sporadicamente e utilizzando poca banda. I2C è ampiamente usato nei sistemi integrati. Alcuni sistemi usano varianti che non rispettano i requisiti originali, per cui non sono indicati come I2C, ma hanno nomi diversi, per esempio TWI (Interfaccia a due fili), IIC.”h]”hXkI²C (letteralmente “I al quadrato C†e scritto I2C nella documentazione del kernel) è un protocollo sviluppato da Philips. É un protocollo a 2 fili (a velocità variabile, solitamente fino a 400KHz, e in modalità alta velocità fino a 5 MHz). Questo protocollo offre un bus a basso costo per collegare dispositivi di vario genere a cui si accede sporadicamente e utilizzando poca banda. I2C è ampiamente usato nei sistemi integrati. Alcuni sistemi usano varianti che non rispettano i requisiti originali, per cui non sono indicati come I2C, ma hanno nomi diversi, per esempio TWI (Interfaccia a due fili), IIC.”…””}”(hhÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)”}”(hŒåL'ultima specifica ufficiale I2C è la `"Specifica I2C-bus e manuale utente" (UM10204) `_ pubblicata da NXP Semiconductors, al momento della scrittura si tratta della versione 7”h]”(hŒ)L’ultima specifica ufficiale I2C è la ”…””}”(hhÛh²hh³Nh´NubhŒ reference”“”)”}”(hŒf`"Specifica I2C-bus e manuale utente" (UM10204) `_”h]”hŒ2“Specifica I2C-bus e manuale utente†(UM10204)”…””}”(hhåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ."Specifica I2C-bus e manuale utente" (UM10204)”Œrefuri”Œ2https://www.nxp.com/docs/en/user-guide/UM10204.pdf”uh1hãhhÛubhŒtarget”“”)”}”(hŒ5 ”h]”h}”(h]”Œ*specifica-i2c-bus-e-manuale-utente-um10204”ah ]”h"]”Œ."specifica i2c-bus e manuale utente" (um10204)”ah$]”h&]”Œrefuri”höuh1h÷Œ referenced”KhhÛubhŒX pubblicata da NXP Semiconductors, al momento della scrittura si tratta della versione 7”…””}”(hhÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)”}”(hXÊSMBus (Bus per la gestione del sistema) si basa sul protocollo I2C ed è principalmente un sottoinsieme di protocolli e segnali I2C. Molti dispositivi I2C funzioneranno su SMBus, ma alcuni protocolli SMBus aggiungono semantica oltre quanto richiesto da I2C. Le moderne schede madri dei PC si affidano a SMBus. I più comuni dispositivi collegati tramite SMBus sono moduli RAM configurati utilizzando EEPROM I2C, e circuiti integrati di monitoraggio hardware.”h]”hXÊSMBus (Bus per la gestione del sistema) si basa sul protocollo I2C ed è principalmente un sottoinsieme di protocolli e segnali I2C. Molti dispositivi I2C funzioneranno su SMBus, ma alcuni protocolli SMBus aggiungono semantica oltre quanto richiesto da I2C. Le moderne schede madri dei PC si affidano a SMBus. I più comuni dispositivi collegati tramite SMBus sono moduli RAM configurati utilizzando EEPROM I2C, e circuiti integrati di monitoraggio hardware.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)”}”(hXPoiché SMBus è principalmente un sottoinsieme del bus I2C, possiamo farne uso su molti sistemi I2C. Ci sono però sistemi che non soddisfano i vincoli elettrici sia di SMBus che di I2C; e altri che non possono implementare tutta la semantica o messaggi comuni del protocollo SMBus.”h]”hXPoiché SMBus è principalmente un sottoinsieme del bus I2C, possiamo farne uso su molti sistemi I2C. Ci sono però sistemi che non soddisfano i vincoli elettrici sia di SMBus che di I2C; e altri che non possono implementare tutta la semantica o messaggi comuni del protocollo SMBus.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubh¶)”}”(hhh]”(h»)”}”(hŒ Terminologia”h]”hŒ Terminologia”…””}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj-h²hh³hÊh´K!ubhÌ)”}”(hŒPIl bus I2C connette uno o più circuiti integrati controllori a dei dispositivi.”h]”hŒPIl bus I2C connette uno o più circuiti integrati controllori a dei dispositivi.”…””}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K#hj-h²hubŒkfigure”Œ kernel_figure”“”)”}”(hhh]”hŒfigure”“”)”}”(hhh]”(hŒimage”“”)”}”(hŒˆ.. kernel-figure:: ../../../i2c/i2c_bus.svg :alt: Un semplice bus I2C con un controllore e 3 dispositivi Un semplice Bus I2C ”h]”h}”(h]”h ]”h"]”h$]”h&]”Œalt”Œ6Un semplice bus I2C con un controllore e 3 dispositivi”Œuri”Œi2c/i2c_bus.svg”Œ candidates”}”Œ*”jfsuh1jWhjTh³hÊh´KubhŒcaption”“”)”}”(hŒUn semplice Bus I2C”h]”hŒUn semplice Bus I2C”…””}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjh³hÊh´K(hjTubeh}”(h]”Œid1”ah ]”h"]”h$]”h&]”uh1jRhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jMhj-h²hh³hÊh´NubhÌ)”}”(hXUn circuito integrato **controllore** (*controller*) è un nodo che inizia le comunicazioni con i dispositivi (*targets*). Nell'implementazione del kernel Linux è chiamato **adattatore** o bus. I driver degli adattatori si trovano nella sottocartella ``drivers/i2c/busses/``.”h]”(hŒUn circuito integrato ”…””}”(hj‡h²hh³Nh´NubhŒstrong”“”)”}”(hŒ**controllore**”h]”hŒ controllore”…””}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡ubhŒ (”…””}”(hj‡h²hh³Nh´NubhŒemphasis”“”)”}”(hŒ *controller*”h]”hŒ controller”…””}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj‡ubhŒ<) è un nodo che inizia le comunicazioni con i dispositivi (”…””}”(hj‡h²hh³Nh´Nubj¤)”}”(hŒ *targets*”h]”hŒtargets”…””}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj‡ubhŒ7). Nell’implementazione del kernel Linux è chiamato ”…””}”(hj‡h²hh³Nh´Nubj)”}”(hŒ**adattatore**”h]”hŒ adattatore”…””}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡ubhŒA o bus. I driver degli adattatori si trovano nella sottocartella ”…””}”(hj‡h²hh³Nh´NubhŒliteral”“”)”}”(hŒ``drivers/i2c/busses/``”h]”hŒdrivers/i2c/busses/”…””}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÛhj‡ubhŒ.”…””}”(hj‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K*hj-h²hubhÌ)”}”(hXUn **algoritmo** contiene codice generico che può essere utilizzato per implementare una intera classe di adattatori I2C. Ciascun driver dell' adattatore specifico dipende da un driver dell'algoritmo nella sottocartella ``drivers/i2c/algos/`` o include la propria implementazione.”h]”(hŒUn ”…””}”(hjõh²hh³Nh´Nubj)”}”(hŒ **algoritmo**”h]”hŒ algoritmo”…””}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõubhŒÑ contiene codice generico che può essere utilizzato per implementare una intera classe di adattatori I2C. Ciascun driver dell’ adattatore specifico dipende da un driver dell’algoritmo nella sottocartella ”…””}”(hjõh²hh³Nh´NubjÜ)”}”(hŒ``drivers/i2c/algos/``”h]”hŒdrivers/i2c/algos/”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÛhjõubhŒ& o include la propria implementazione.”…””}”(hjõh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K/hj-h²hubhÌ)”}”(hXÚUn circuito integrato **dispositivo** è un nodo che risponde alle comunicazioni quando indirizzato dal controllore. In Linux è chiamato **client**. Nonostante i dispositivi siano circuiti integrati esterni al sistema, Linux può agire come dispositivo (se l'hardware lo permette) e rispondere alla richieste di altri controllori sul bus. Questo verrà chiamato **dispositivo locale** (*local target*). Negli altri casi si parla di **dispositivo remoto** (*remote target*).”h]”(hŒUn circuito integrato ”…””}”(hj'h²hh³Nh´Nubj)”}”(hŒ**dispositivo**”h]”hŒ dispositivo”…””}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubhŒe è un nodo che risponde alle comunicazioni quando indirizzato dal controllore. In Linux è chiamato ”…””}”(hj'h²hh³Nh´Nubj)”}”(hŒ **client**”h]”hŒclient”…””}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubhŒÙ. Nonostante i dispositivi siano circuiti integrati esterni al sistema, Linux può agire come dispositivo (se l’hardware lo permette) e rispondere alla richieste di altri controllori sul bus. Questo verrà chiamato ”…””}”(hj'h²hh³Nh´Nubj)”}”(hŒ**dispositivo locale**”h]”hŒdispositivo locale”…””}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubhŒ (”…””}”(hj'h²hh³Nh´Nubj¤)”}”(hŒ*local target*”h]”hŒ local target”…””}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj'ubhŒ ). Negli altri casi si parla di ”…””}”(hj'h²hh³Nh´Nubj)”}”(hŒ**dispositivo remoto**”h]”hŒdispositivo remoto”…””}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubhŒ (”…””}”hj'sbj¤)”}”(hŒ*remote target*”h]”hŒ remote target”…””}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj'ubhŒ).”…””}”(hj'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K4hj-h²hubhÌ)”}”(hŒßI driver dei dispositivi sono contenuti in una cartella specifica per la funzionalità che forniscono, ad esempio ``drivers/media/gpio/`` per espansori GPIO e ``drivers/media/i2c/`` per circuiti integrati relativi ai video.”h]”(hŒrI driver dei dispositivi sono contenuti in una cartella specifica per la funzionalità che forniscono, ad esempio ”…””}”(hj¡h²hh³Nh´NubjÜ)”}”(hŒ``drivers/media/gpio/``”h]”hŒdrivers/media/gpio/”…””}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÛhj¡ubhŒ per espansori GPIO e ”…””}”(hj¡h²hh³Nh´NubjÜ)”}”(hŒ``drivers/media/i2c/``”h]”hŒdrivers/media/i2c/”…””}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÛhj¡ubhŒ* per circuiti integrati relativi ai video.”…””}”(hj¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K;hj-h²hubhÌ)”}”(hŒ¶Per la configurazione di esempio in figura, avrai bisogno di un driver per il tuo adattatore I2C e driver per i tuoi dispositivi I2C (solitamente un driver per ciascuno dispositivo).”h]”hŒ¶Per la configurazione di esempio in figura, avrai bisogno di un driver per il tuo adattatore I2C e driver per i tuoi dispositivi I2C (solitamente un driver per ciascuno dispositivo).”…””}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K?hj-h²hubh¶)”}”(hhh]”(h»)”}”(hŒSinonimi”h]”hŒSinonimi”…””}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjáh²hh³hÊh´KDubhÌ)”}”(hXCome menzionato precedentemente, per ragioni storiche l'implementazione I2C del kernel Linux usa "adatattore" (*adapter*) per i controllori e "client" per i dispositivi. Un certo numero di strutture dati usano questi sinonimi nei loro nomi. Dunque, durante le discussioni riguardanti l'implementazione dovrete essere a coscienza anche di questi termini. Tuttavia si preferiscono i termini ufficiali.”h]”(hŒuCome menzionato precedentemente, per ragioni storiche l’implementazione I2C del kernel Linux usa “adatattore†(”…””}”(hjòh²hh³Nh´Nubj¤)”}”(hŒ *adapter*”h]”hŒadapter”…””}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjòubhX) per i controllori e “client†per i dispositivi. Un certo numero di strutture dati usano questi sinonimi nei loro nomi. Dunque, durante le discussioni riguardanti l’implementazione dovrete essere a coscienza anche di questi termini. Tuttavia si preferiscono i termini ufficiali.”…””}”(hjòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KFhjáh²hubeh}”(h]”Œsinonimi”ah ]”h"]”Œsinonimi”ah$]”h&]”uh1hµhj-h²hh³hÊh´KDubh¶)”}”(hhh]”(h»)”}”(hŒTerminologia obsoleta”h]”hŒTerminologia obsoleta”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´KNubhÌ)”}”(hX‰Nelle prime specifiche di I2C, il controllore veniva chiamato "master" ed i dispositivi "slave". Questi termini sono stati resi obsoleti con la versione 7 della specifica. Inoltre, il loro uso viene scoraggiato dal codice di condotta del kernel Linux. Tuttavia, potreste ancora trovare questi termini in pagine non aggiornate. In generale si cerca di usare i termini controllore e dispositivo.”h]”hX‘Nelle prime specifiche di I2C, il controllore veniva chiamato “master†ed i dispositivi “slaveâ€. Questi termini sono stati resi obsoleti con la versione 7 della specifica. Inoltre, il loro uso viene scoraggiato dal codice di condotta del kernel Linux. Tuttavia, potreste ancora trovare questi termini in pagine non aggiornate. In generale si cerca di usare i termini controllore e dispositivo.”…””}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KPhjh²hubeh}”(h]”Œterminologia-obsoleta”ah ]”h"]”Œterminologia obsoleta”ah$]”h&]”uh1hµhj-h²hh³hÊh´KNubeh}”(h]”Œ terminologia”ah ]”h"]”Œ terminologia”ah$]”h&]”uh1hµhh·h²hh³hÊh´K!ubeh}”(h]”Œintroduzione-a-i2c-e-smbus”ah ]”h"]”Œintroduzione a i2c e smbus”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jtŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jNjKjhÿjFjCjjj>j;uŒ nametypes”}”(jN‰jˆjF‰j‰j>‰uh}”(jKh·hÿhùjCj-jjáj;jj|jTuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”j‚Ks…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.