For my recent project I needed to use three different I2C buses, unfortunately I'm using PSoC5,
and apparently as for now you can't use more than two I2C modules for PSoC5 nor three
I2C modules for PSoC3.
So, with some help of the support team and a couple hours of work and experiments
I mannaged to desgin a component which uses only one built in I2C module which let you
mux four different I2C buses. I found it very usefull. The drawback of this method is of course the speed
limit of 100kbps.
I also made a simple I2C driver for this module and tested the component.
Is someone interested?
Solved! Go to Solution.
This is a I2C Mux, means that you can connect only to one I2C bus at a time. I've tested both receiving and sending data @ 100kbps with no problem. Actually, I've tested also @125kbps and it took it with no problem.
I saw, in a prevous post from you, that u had the MPU6000 I2C connection running on the PSoC5.
I have tried everything including the code you posted back then. Apparently the problem is that my PSoC cant take the bus, because my I2C_1_MasterSendStart() returns I2C_MSTR_NOT_READY.
Can u help me? How did you set up your I2C module on the PSoC?..
Sorry for being off topic, but i am kind a desperate here 🙂 ..
You can write to me at Texton1@msn.com if you can help.
Welcome in the forum, Peter.
Seems as if this thread is a bit old (a few years). So when you have got an actual I2C problem do not hesitate to start a new question.
Tell us which kind (type) of board you use, what you want to control (Link to datasheet helps us a lot) and what you already tried (Project archive or workspace bundle).
I would be interested in your I2C Mux, I have a board with a whole bunch of I2C chips on which all have the same address and I had to use external circuitry to to the MUX because Creator insists on a bidirectional pin, so I couldn't just use the buit in mux.
This is a very interesting component, but I have several questions.
The datasheet for BUFOE says that yfb gets y irrespective of x only when OE is 0. You have OE permanently enabled. I do see that you have the inout pin only capable of driving low, but I don't understand how BUFOE is allowing the pin state to be read back because OE is always 1.
The other question I had was regarding the speed; why was this design restricted to 100KHz?
I was able to add 3 I2C masters to ma schematic without problems. Are you using the Fixed-Function block or the UDB-baseed components (I was using the latter)?