Я использую Raspberry pi для связи I2C с чипом.
I2C работает на i2c-1, и я хочу установить связь с чипом mux0, для которого указан адрес. Я использовал неправильный адрес, чтобы увидеть, какое значение я получаю из I2C_SLAVE и I2C_RDWR.
Я хочу проверить, правильно ли я открываю шину или нет. Поэтому я использую оператор if, и он отлично работает для меня. `
int file;
file = open(i2c_adapt, O_RDWR);
if (file == -1)
{
perror("Check I2C Bus");
exit(1);
}
`
Затем я увидел две функции, которые можно использовать для определения адреса чипа. I2C_SLAVE и I2C_RDWR.
Я хочу проверить, является ли адрес чипа правильным или нет, но оба они возвращают одинаковые значения.
Я напечатал их возвращаемое значение для проверки.
`
printf("\nThe file value when Mux0 is %d", open("/dev/i2c-1", O_RDWR));
printf("\nThe file value of random bus is %d\n", open("/dev/i2c-0", O_RDWR));
printf("\nThe i2c_Slave value when Mux0 is %d", ioctl(file, I2C_SLAVE, mux0));
printf("\nThe i2c_Slave value of random address is %d\n\n", ioctl(file, I2C_SLAVE, 0x60));
printf("\nThe I2C_RDWR value when Mux0 is %d", ioctl(file, I2C_RDWR, mux0));
printf("\nThe i2c_RDWR value of random address is %d\n\n", ioctl(file, I2C_RDWR, 0x60));
Когда я запускаю эти команды, я получаю следующие значения:
Значение файла, когда Mux0 равно 4. Значение файла случайной шины равно -1
, поэтому я могу использовать оператор if, чтобы узнать, использую ли я неправильную шину
. Значение i2c_Slave, когда Mux0 равно 0 Случайный адрес значения i2c_Slave равен 0
Значение i2c_RDRW, когда Mux0 равно -1 Значение случайного адреса i2c_RDRW равно -1 , введите описание изображения здесь
Может кто-нибудь сказать мне, почему я получаю одинаковое значение и для неправильного чипа?