SDA fixed low during I2C communication, R8C master
Question:
Answer:
A clock discrepancy may occur between the master and slave due to noise, etc. on the SCL line of the I2C bus. This occurs due to differences in VIH/VIL characteristics or noise elimination capabilities of the two devices causing a difference in whether or not noise, etc. on the SCL line is recognized is a clock. For example, ACK output from the slave side could fix SDA to low level.
To release SDA from being fixed at low level from the slave side, switch the SCL/SDA pin of the R8C microcontroller on the master side to a general port, and output a pseudo-clock from the pin shared wth SCL (use high impedance and low level output to output a pseudo-clock). Then check whether SDA has been released on the slave side. If SDA has not been released yet, repeat this pseudo-clock output the slave side releases SDA. After the slave side releases SDA, return the setting on the master side to the I2C bus and issue a stop condition to end communication. For many slave devices, the I2C bus is initialized (reset) using a stop condition or a start condition. Depending on the slave device, the initialization method (reset method) may be described in the manual. In such cases, please initialize (reset) the slave device according to the description in the manual. For how to resolve SDA of an R8C device on the master side being fixed to low level, please refer to FAQNo:107183.
R8C/32C |
R8C/33C |
R8C/34C |
R8C/35C |
R8C/36C |
R8C/38C |
R8C/3GC |
R8C/3JC |
R8C/32M |
R8C/33M |
R8C/34M |
R8C/35M |
R8C/36M |
R8C/38M |
R8C/3GM |
R8C/3JM |
R8C/3MK |
R8C/34K |
R8C/3MU |
R8C/34U |
R8C/3MQ |
R8C/L35C |
R8C/L36C |
R8C/L38C |
R8C/L3AC |
R8C/L35M |
R8C/L36M |
R8C/L38M |
R8C/L3AM |
R8C/LA3A |
R8C/LA5A |
R8C/LA6A |
R8C/LA8A |