I am trying to communicate an arduino with a Silabs F560 Toolstick Daughter Card.

On Arduino (Master)

I have loaded the i2c scanner program from http://playground.arduino.cc/Main/I2cScanner which basically pings all possible address (0x00 to 0x7F) on the bus trying to get an ACK.

On C8051F560 (Slave)

I have loaded the example Slave code given by Silicon Labs of address 0x78. I have changed the SMBus frequency to 100000 (since Arduino works on 100kHz)

The Arduino was not able to recognise it on the bus. I have tried pull-up resistors of different combinations 3.3k, 6.6k, 10k ohms. That didn't make any difference.

When I tried to analyse the bus with a logic analyser, the SiLabs MCU was disrupting the SCL driven by Arduino.

Bus state when only Arduino is connected - NACK

Bus state when SiLabs MCU is on the bus with Arduino

I think an example code given by a manufacturer should work fine.

Is there anything I am missing ? or is it the H/W that is damaged ?


The problem was with the F560 DC where the Pin P0.0 (VREF) is connected to GND by default. It was specified in the schematic of the F560DC. I hav changed the pins used by the SMBus peripheral to P0.2 and P0.3 and it all worked just fine.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.