Hi Craig. The SSP gave me a lot of headaches too. You can check my postings on the PIClist archive, which should show how they were solved. Tell us what it is trying to do, and exactly how it fails, and we may be able to make a more accurate diagnosis. What errors do you expect to detect? You wrote: > The problem is that after the first string transfer, > the bus locks up and my clock and data lines are > held low by the slave module. Hmm, looks like the CKP bit is not being operated to allow the I2C bus to continue after a transfer. Is this incoming or outgoing bytes, or both? If you do not NACK the last byte of a string read from your PIC, the SSP assumes you will be wanting another and interrupts the CPU to get another. If there are no more to be sent, what do you do? My PIC has had to reply to such naughty masters. You can't clear CKP to un-wait the bus until SSPBUF is loaded. What I do is load a dummy byte. The MS bit always manages to get onto SDA, so the master cannot produce a stop condition if SDA is low. So D7 of the dummy byte has to be high. That took some finding out I can tell you!