squeez napisał(a):
Teoretycznie dla I2C można się obejść bez konwersji napięć, tylko linie podciągnąć do 3,3V zamiast do 5V.
Linie w I2C są typu OC, dla układów 3,3V działać będzie normalnie natomiast dla układu 5V z liniami podciągniętymi do 3,3V też powinno działać bez problemu, dla pewności sprawdzić w DS od jakiego poziomu napięcia jest logiczne 1 ale myślę że 3,3V bez problemu będzie zaliczane jako logiczne 1.
Napięcie wymusza polaryzacja rezystorem (podciągnięcie) układy nie wystawiają stanów wysokich tylko "niskie" jak by to powiedzieć, a ten jest wspólny dla wszystkich.
Nic tu nie upali, gorzej jak byś podciągał jak na twoim schemacie, czyli linie do 5V, wówczas procesor zasilany z 3,3V dostałby 5V co mogło by być mało fajne dla niego
Bardzo uprzejmie przepraszam, ale no muszę to napisać - to co kolega tu napisał to MEGA PRZEDZIWNA IDEA (żeby to delikatnie jakoś określić) i proszę mi wybaczyć to określenie ....
No ale do jasnej choinki, człowiek dwoi się i troi, żeby nauczyć początkujących w czym rzecz ... stara się wyjaśnić co i jak działa ... a ty się przyczepiasz UPALENIA ... i piszesz o "teoretycznie" .... Teoretycznie to za przeproszeniem można językiem dotknąć dwóch przewodów 230 V i nie każdemu się coś stanie ....

Brak konwersji na I2C będzie bez żadnego "ale" powodować problemy na dłuższą metę a szczególnie jak zechcemy sobie
1. stosować większe prędkości niż np standardowe popularne 100 kHz
2. stosować ciut dłuższe magistrale gdzie będzie trzeba zejść z podciąganiem linii OC
squeez napisał(a):
apięcie wymusza polaryzacja rezystorem (podciągnięcie) układy nie wystawiają stanów wysokich tylko "niskie" jak by to powiedzieć, a ten jest wspólny dla wszystkich.
Tak jeśli ZAWSZE i tylko zawsze korzystamy w 100% z pinów jako I2C ... gorzej gdy przez jakiś czas działania programu, czy to przypadkowo czy nie przypadkowo piny zadziałają jako IO ze stanem wysokim i wtedy ? .... no wtedy to możemy nawet myśleć o upaleniu bidnych scalaków zasilanych 3,3V chyba, że ... no chyba że mają wejścia 5V tolerant ... to by trzeba było sprawdzić w notach
ale jaki jest sens ... no jaki ? gdy konwersja dwukierunkowa na I2C sprowadza się do zastosowania wręcz pojedynczego MOSFET'a i dwóch rezystotów ... W pełni dwukierunkowe rozwiązanie i zdaje egzamin spokojnie przy 400 kHz ale i większych częstotliwościach a bezpieczeństwo i pewność działania układu wzrasta do 100%
a tak nawiasem mówiąc i odnośnie rozpoznawania stanów niskich i wysokich - to jeszcze zależy od rodzaju scalaka - prosty przykład

Na zakończenie dodam, że omawiana przeze mnie konwersja napięć pokazana na blogu z MOSFETAMI jest wręcz zalecana i od dawna polecana przez samego Philipsa który opracował I2C. Co więcej NIGDZIE , podkreślam bo to WAŻNE, NIGDZIE w żadnych profesjonalnych rozwiązaniach nie znajdziesz swoich "teoretycznych" rozwiązań bez konwersji ...
więc pytam - jaki jest cel takich podpowiedzi, na forum dla początkujących, na którym ludzie chcą się nauczyć jak robić coś po inżyniersku i prawidłowo a nie na zasadzie - "a teoretycznie będzie działać" ... a później w konstrukcjach niektórych młodych firm spotykamy się ze źle działającymi urządzeniami i gdy się zajrzy do środka i zobaczy takie "teoretyczne" rozwiązania to aż ciarki przechodzą po plecach i wiadomo dlaczego urządzenie ma problemy ...
Układy do konwersji napięć mają też i zapobiegają zwykłym ludzkim przeoczeniom szczególnie właśnie gdy mamy do czynienia z techniką mikroprocesorową ... gdzie nie wszystko zależy od sprzętu ale często przede wszystkim od programu a więc również od błędów programu czyli na końcu programisty .... dlatego jeszcze raz powtórzę
prosty przypadek - do testów na piny SDA i SCL zostanie wystawiony stan WYSOKI i NISKI zaś układy zasilane 3,3V nie będą miały wejść 5V tolerant ... i ?
------------------------ [ Dodano po: 1 minucie ]mczarny napisał(a):
Po co ryzykować jak dwa małe tranzystorki załatwiają sprawę i śpimy spokojnie.
I o TO WŁAŚNIE CHODZI ! ... wtedy nie ważne czy 5V tolerant, czy pin będzie przypadkowo IO ze stanem wysokim czy niskim ... zero problemu, zero