Chuẩn giao tiếp I2C
Em có 1 thắc mắc là ở việc read data:
Master: start -> write slave address -> write slave register -> restart -> read slave address… //0
Code em lấy trên mạng:
với add := 0x00
unsigned char Ds1307_Read(unsigned char add)
{
unsigned char dat;
Soft_I2c_Start();
Soft_I2c_Write(0xD0); _**//1**_
Soft_I2c_Write(add);
Soft_I2c_Start();
Soft_I2c_Write(0xD1); _**//2**_
dat = Soft_I2c_Read(0);
Soft_I2c_Stop();
return dat;
}
Cho em hỏi suy nghĩ của em như thế này có phải là đúng không?
(2) > (1) 1 đơn vị. Có nghĩa là (1) đang ở chế độ write còn (2) là thông báo chuyển chế độ sang read Vì bit cuối cùng là thông báo của master cho slave là read hoặc write. Vậy thì (0) read slave address thì em viết như vậy là đúng hay sai! Nếu sai thì em chỉnh như thế nào cho đúng! Em cảm ơn mọi người!
http://www.hocavr.com/index.php/app/ds1307
Em cảm ơn anh nhiều! Xin lỗi vì tới giờ mới respone lại!