Проблема I2C от ведущего к подчиненному - PullRequest
0 голосов
/ 04 июня 2019

Я использую TC237, и плата не обеспечивает связь I2C, поэтому я использую ее как GPIO.Читает и записывает через регистры, но без связи «ведущий-ведомый».

В соответствии с протоколом связи I2C был создан код функции ACK NACK start-stop.Я также создаю 1-байтовый код записи и чтения, и на его основе я создаю код для чтения и записи в регистры подчиненного устройства.

Я не знаю, как загрузить изображение, но когда я проверяюSDA и SCL с осциллографом, когда я читаю его, кажется, что есть два байта для чтения, а остальное в порядке.Первый байт читает 0x00, а следующий - 0xEF.

I2C_Start();
waitTime(1*TimeConst_100us);

I2C_WriteByte((uint8)(Slave_addr|0x01));//LIDAR : 0xC5/BH1750 : 0x27
I2C_ACK();//I2C_GetACK();

I2C_ReadData_H = I2C_ReadByte();
I2C_ACK();

waitTime(1*TimeConst_100us);

I2C_ReadData_L = I2C_ReadByte();
waitTime(1*TimeConst_100us);
if(I2C_NACK() == BUSY)
{
return RESET;
}
I2C_Stop();
return SET;

Результат должен быть получен внутренней IC, но он получает странное значение.Кажется, что подозрительная часть не получает ACK от устройства после чтения первого байта, что мне делать?

...