I am using the I2C Driver on r_sci_i2c. Everything work perfectly as long as I have the SCL line pulled up to Vcc (I am using a 10K ohm resistor). However if I remove the pullup resistor then the g_i2c write() function will never return. If I halt the processor I see that it is stuck inside the "while(SCI_REG(channel)- SIMR3_b.IICSTIF == 0x0);" line in the function HW_SCI_SIIC_SendStart() function in the file hw_sci_i2c_private.h. I understand that in a perfect world the SCL line would always be pulled up correctly, but this doesn't appear to be a very graceful method to handle this error. I am working with prototype PCBs in various stages and I am not guaranteed that all will have the pullup populated, nor can I be guaranteed that a failure on the SCL line could not occur in the field. Having the unit lockup in the field is not really acceptable. Is the operation I am seeing intentional, or can it be fixed in a future version of SSP, or is there some setting I can do to prevent this?
↧