This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Tool/software: Code Composer Studio
Hello,
I'm working on a project that can have up to 9 masters all trying to send information to 1 slave. It is a daisy chain connection. 1 is the slave, and then 2-10 are the masters. I have been able to get 3 and 4 masters consistently transmitting data correctly, but once I add 5, 6, and 7 masters things start to get inconsistent. I'm using buffer chip, TCA9509DGKR, to account for the capacitance in the system. In the Errata sheet of the MSP430G2403, it said that it has some issues with a multi-master transmitting scenario, and so I switched out the MSP430G2403 for MSP430G2553. Even with the new micro controllers, I am still getting the same issues. One thing that is interesting is that when I hook up launchpads together in the same enviroment, even with the buffer chips, it is successful. For some reason I'm having problems on my board, but not the launchpads.
Best Regards,
-Thomas Pinewski
Hey Ryan,
Below is my schematic for the master circuit. Some of the inconsistencies come with how many are connected together. For example, I connected 7 masters together to 1 slave. I set a start up time delay for each master, 1 with the shortest delay and up to 7 with the longest delay. With the delay, the problem was consistent that the last master, #7, was unable to communicate to the slave.When I re-ordered the masters by sticking #7 in the middle and having master #6 on the end, only 5 masters were able to communicate to the slave. Whenever the farthest one away from the slave tries to connect it messes up the i2c bus for the rest of the masters trying to connect after it (because of the time delay). When I removed the time delay I found the problem to be inconsistent, because the masters don't start up at the same speed everytime.
If I drop the number of masters down to 6 masters instead of 7, the problem goes away. For some reason the i2c bus can handle 6 masters, but when you add the 7th one it starts going haywire. By haywire I mean that if the master fails to communicate, it holds the clock low for a while. Sometimes it holds the clock indefinitely. We have firmware so that if the clock is being held low it'll re-initialize the master i2c. When that was working it still didn't fix the problem. The clk would get released and the master would try again, but it would just NACK and repeat. I show a snip-it of the the NACK and then holding the clk low.
I do have a question of the buffer chip used in my schematic (TCA9509DGKR). In the launchpad environment, it seems to be hooked up a little bit different. When we hooked up the buffer chip in a different direction from A to B and then from B to A or vise versa, we do get different results. My question is if this chip has shown failures in the past if you hook up this buffer chip differently?
I hope this makes sense, sorry if it is confusing.
Best Regards,
-Thomas Pinewski
Hey Francis,
Here is the schematic for the Master; I just have 1K pull-up on the A side of the buffer chip. Master talks in the direction of A to B. Also attached is my waveform for a successful communication. An unsuccessful communication just shows it trying to send the first byte, then it shows a NACK, then the SCL gets held low.
I'm wondering if having the buffer chip hooked up like this has caused problem for others? Does it matter which direction the data gets sent? Does it matter which side I have the pull-ups on? Does it matter that I'm only using 1K's?
Best Regards,
-Thomas Pinewski
Hey Francis,
Just following up to see if you have looked into my problem at all...
Best Regards,
-Thomas Pinewski
Ryan and Francis,
When I remove the buffer chip, the boards work well. I've got 9 masters on the bus all communicating. Is it common to have problems with these buffer chips?
I added the buffer chip to the design to take precautionary measures, because I thought the bus capacitance was going to play a bigger role. At master #9, I'm sure we are over the recommended 400pF capacitance (probably in the 550pF range), but it doesn't seem to make a difference. I'm running the I2C at 50kHz, because it is pretty low data rate. My rise time from 30% to 70% is about 1.2us and my fall time is about 800ns. These rise and fall times seem to be slow compared to what I'm seeing on the web. The data sheets for my microchip and buffer chip don't specify timing requirements for the SDA and SCL rise and fall times.
Are these rise and fall times typical for the microprocessor I'm using? I recorded these values when there was no buffer chip present. This is purely microprocessor to microprocessor.
Best Regards,
-Thomas Pinewski
Max,
I do want to use the buffer chips, because I am unsure on a the amount of masters that will be involved in the system eventually.
I added the buffer chips back onto the boards, and I reworked the boards, so that the 1K pull-up resistors are on the B Side of the chip (according to Ryan's suggestion). The system works with 5 masters, but when I add the 6th master, it fails to communicate. I captured my wave forms to show you how it is performing. In the first image it shows 2 masters communicating successfully, but then when the 3rd master tries to communicate, it just NACK's off into infinity. 2nd Image shows the NACK zoomed in.
The buffer chips say that they separate the capacitance on the A side and the B side. Does it do the same with the resistance? As I add masters, are the resistors being added in parallel?
**Attention** This is a public forum