I2C
Andras Tantos
andras_tantos at yahoo.com
Mon Mar 28 17:26:12 CEST 2005
> Sziasztok!
>
> I2C buszon az SDA, SCL labat az I2C masternek meg lehet hajtani TP jellel,
> OC helyett?!
> Tudtommal nem, mert a slave barmikor lahuzhatja az SDA-t, vagy az SCL-t ha
> foglalt stb.
> (Nemtom melyiket, de valamelyiket biztos)
>
> Tudja ezt valaki pontosan, hogy is van?!
> Sose hajtottam meg TP jellel, igy nem foglalkoztam ezzel a dologgal
> nagyon.
>
> Arnold
Hali!
Elvben egyik jelet se lehet TP kimenettel hajtani. Az SDA jelet a slave
huzogatja iraskor az ACK bitkor, olvasaskor meg az adatbitek alatt. Persze,
ha ilyenkor bemenetre kapcsolod a labat a masteren, akkor OK, de akkor meg
lehetne akar OC is: 0: kimenet es 0-ban, 1: bemenet, es a felhuzo ellenallas
gondoskodik a magas szintrol. Az SCL jelet normalis esetben a master hajtja,
de a slave, ha idore van szuksege, 0-ban tarthatja. Ezt hivjak
clock-strechingnek. Ha ezt a funkciot nem hasznalod (azaz egyik slave se
hasznalja a buszodon), es persze csak egy master-ed van, akkor lehet az
SCL-t TP kimenettel hajtani.
Az OC hajtas nagyon fontos ha tobb master vagy slave kozott akarsz
busz-arbitraciot csinalni. Ekkor egyszerre tobb egyseg vezerli az SDA
es/vagy SCL labakat, es a huzalozott vagy kapcsolat elemi resze a
protokollnak.
Nem tudom, miert kell ez neked, de ha busz sebesseg (kapacitas) gondjaid
vannak, akkor el lehet kovetni a kovetkezot: Amikor 1-be, vagy bemenetbe
akarod kapcsolni az SDA jelet, akkor egy pillanatra 1-be huzod a labat, es
csak utana engeded el. Ezzel nagyon gyorsan at tudod tolteni a
busz-kapacitast, de ha valaki mas 0-ba akarja huzni a vonalat, egy
pillanattal kesobb megteheti. Leven ez zommel olyankor fordul elo, amikor az
SDA jel erteke erdektelen (SCL = 0), ezert ez nem okoz protokoll gondot. Ha
csak egy master van a buszon, es nem hasznalsz clock-strechinget, akkor az
SCL jelet tudod TP labbal hajtani, es a start es stop biteket is csak egy
egyseg generalhatja.
Udv,
Tantos Andras
More information about the Elektro
mailing list