hello. I want use I2C program. so, I used twi_master_using_app_twi example. SDA is output only 1byte(0x21). I need to output a continuous 5byte. Where do I need to modify the part. thank you.
hello. I want use I2C program. so, I used twi_master_using_app_twi example. SDA is output only 1byte(0x21). I need to output a continuous 5byte. Where do I need to modify the part. thank you.
Hi,
On the image in your comment you are sending a 7 bit address (0x98 >> 1) with a write bit. You also get a Not Acknowledge (NACK) bit in the end. The 9th bit on the SCK is for the NACK bit.
Read about NACK and addresses in the I2C spec here: I2C Bus Specification. Read about the difference between 8 and 7 bits addresses and why you right shift some addresses here.
The NACK you get is important to note. It signifies that you are trying to transfer a byte, but no slave is responding. This is often due to one of the following reasons:
You need 8 bits to write 0x98 (b1001 1000) and the drivers expect a 7 bit address. Hence we can definitely say that you need to right shift the address 1 bit as you do. The drivers will take care of assembling the 7 bit address and the R/W bit. This means that as far as I can see you are doing everything right with regards to the address and R/W bit. What kind of slave do you use? What is the part number? Are you sure it has power?
You need 8 bits to write 0x98 (b1001 1000) and the drivers expect a 7 bit address. Hence we can definitely say that you need to right shift the address 1 bit as you do. The drivers will take care of assembling the 7 bit address and the R/W bit. This means that as far as I can see you are doing everything right with regards to the address and R/W bit. What kind of slave do you use? What is the part number? Are you sure it has power?