Hallo,
Ik ben bezig met een projectje, in de vorm van een 5 kanaals voorversterker, en nu wil ik daarin 5 3-band equalizers gebruiken. Ik wil de equalizers met een microcontroller (PIC18F4550) kunnen besturen en toen is mijn oog gevallen op de TDA7439, het enige probleem is dat ik dan 5 IC's heb met hetzelfde adres, en dus niet allemaal aan 1 I2C bus kan hangen.
Nu was mijn idee om de SCL en SDA lijnen te schakelen via bidirectionele buffers. Ik wil dus via een enable signaal steeds 1 equalizer aan de I2C bus hangen.
Ik heb het een en ander bestudeerd en volgens mij moet het mogelijk zijn om het zo op te lossen. Maar ik vraag me af of ik niets over het hoofd heb gezien?
Groeten
Erik
als er genoeg I/O is aan uw controller kan je via software 5 I²C bussen maken. dus 5 SCL's en 5 SDA's. op elke bus komt dan 1 TDA7439.
Er zijn ook speciale i2c multiplexers te krijgen voor dit doel;
# PCA9540B - 2-channel I2C multiplexer
# PCA9541 - 2-to-1 I2C master selector with interrupt logic and reset
# PCA9542A - 2-channel I2C multiplexer and interrupt logic
# PCA9543A - 2-channel I2C switch with interrupt logic and reset
# PCA9544A - 4-channel I2C multiplexer with interrupt logic
# PCA9545A - 4-channel I2C switch with interrupt logic and reset
# PCA9546A - 4-channel I2C switch with reset
# PCA9548A - 8-channel I2C switch with reset
Die i2c multiplexers zijn inderdaad precies wat ik zoek. % software I2C's is geen optie omdat ik hiervoor geen IO over heb.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
je maakt het veel te moeilijk.
plak op je i2c bus een 8574 ( io expander. en stuur daar een analoge multiplexer mee aan (4052 en consoorten )
daarmee schakel je ALLEEN de SDA om. probleem opgelost ( de scl omschaelen hoeft niet tenzijn je multimaster doet. )
die pca dinges zijn niet altjid makkelijk te krijgen. pcf8574 lit op hoek van de straat.
ik gebruik die truuk veel om i2c te 'expanderen'
Mijn huidige oplossing was niet veel anders. Op de print die ik nu ga maken heb ik een decade counter gezet met de clock en reset naar de microcontroller. Heb nu 8 enable signalen, deze wilde ik via een 4066 oid de SCL en SDA mee schakelen. Als ik alleen de SDA hoef te schakelen scheelt natuurlijk weer. Ik zat er alleen mee hoe het op te lossen met de zwevende SDA lijn, deze via een 56k pull-up oid aan de voeding hangen?
Groeten
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
ik zet meestal een pullup van 10k langs de kant van de processor. en dan ene van 10 vlak na de mux
dus zo
vcc |________________
| 4052 | | | |
[10k] ___________ [10k][10k][10k][10k]
| | |___|______|___|_____|____ sda 1
SDA]-----+---| |___|______|___|__________ sda 2
CPU | |___|______|______________ sda 3
| |___|_____________________ sda 4
|__________|
zo ziet de totale pull up 4k7 ( onafhankelijk welk kanaal je stuurt. en zweeft er nooit geen enkele node.
let wel goed opdat je alleen omschakelt NA een stop gegeven te hebben !