i2c-scan: добавлена опция -s
Этот коммит содержится в:
родитель
1036a12b0f
Коммит
1974eebdd1
|
@ -3,7 +3,7 @@
|
|||
Сканер шины I2C и чтение/запись произвольного регистра I2C устройства.
|
||||
|
||||
### Синтаксис
|
||||
```i2c-scan [-d устройство] [-f] [-a адрес] [-r смещение] [-w значение] [-c количество]]```
|
||||
```i2c-scan [-d устройство] [-f] [-s] [-a адрес] [-r смещение] [-w значение] [-c количество]```
|
||||
|
||||
### Опции
|
||||
- **-d устройство**
|
||||
|
@ -29,10 +29,14 @@
|
|||
- **-c количество**
|
||||
|
||||
Количество регистров для чтения/записи. По умолчанию: 1.
|
||||
|
||||
|
||||
- **-s**
|
||||
|
||||
Не пропускать сканирование специального адреса 0 (general call address).
|
||||
|
||||
### Описание
|
||||
|
||||
Утилита i2c-scan сканирует шину I2C, последовательно перебирая доступные адреса (0-127), и выводит таблицу с присутствующими на шине устройствами.
|
||||
Утилита i2c-scan сканирует шину I2C, последовательно перебирая доступные адреса (1-127), и выводит таблицу с присутствующими на шине устройствами.
|
||||
|
||||
При задании адреса устройства на шине (опция -a) считывает указанное количество регистров (опция -c) со смещением, заданным опцией -r.
|
||||
|
||||
|
@ -41,7 +45,7 @@
|
|||
# i2c-scan
|
||||
Scanning I2C device /dev/i2c0 for I2C devices...
|
||||
0 1 2 3 4 5 6 7 8 9 a b c d e f
|
||||
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
00: xx -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
|
@ -54,7 +58,7 @@ Scanning done
|
|||
# i2c-scan -d /dev/i2c1
|
||||
Scanning I2C device /dev/i2c1 for I2C devices...
|
||||
0 1 2 3 4 5 6 7 8 9 a b c d e f
|
||||
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
00: xx -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
10: -- -- -- -- -- -- -- -- 18 19 -- -- -- -- -- --
|
||||
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||
|
|
|
@ -7,6 +7,7 @@ Options:
|
|||
-r Register offset
|
||||
-w Value to write to the device
|
||||
-c Number of registers to read/write
|
||||
-s Don't skip zero (general call) address during scan
|
||||
|
||||
Examples:
|
||||
Scan I2C 0 bus
|
||||
|
|
|
@ -117,7 +117,7 @@ int write_i2c_register( int device_desc, int reg_num, uint8_t addr, uint16_t val
|
|||
}
|
||||
|
||||
|
||||
void scan_i2c( int fd )
|
||||
void scan_i2c( int fd, int skip_zero )
|
||||
{
|
||||
int i, j;
|
||||
|
||||
|
@ -128,7 +128,9 @@ void scan_i2c( int fd )
|
|||
fprintf( stderr, "%02x: ", j );
|
||||
for ( i = 0; i < 16 ; i++ )
|
||||
{
|
||||
if ( read_i2c_register( fd, 0, i + j ) >= 0 )
|
||||
if ( skip_zero && (i + j) == 0 )
|
||||
fprintf( stderr, "xx " );
|
||||
else if ( read_i2c_register( fd, 0, i + j ) >= 0 )
|
||||
fprintf( stderr, "%02x ", i + j );
|
||||
else
|
||||
fprintf( stderr, "-- " );
|
||||
|
@ -149,9 +151,10 @@ int main( int argc, char **argv )
|
|||
reg_num = 0,
|
||||
addr = 0,
|
||||
val,
|
||||
register_count = 1;
|
||||
register_count = 1,
|
||||
skip_zero = 1;
|
||||
|
||||
while ( (option = getopt( argc, argv, "d:a:r:c:w:f" )) != -1 )
|
||||
while ( (option = getopt( argc, argv, "d:a:r:c:w:fs" )) != -1 )
|
||||
{
|
||||
switch ( option )
|
||||
{
|
||||
|
@ -182,6 +185,10 @@ int main( int argc, char **argv )
|
|||
utility_mode = UTILITY_MODE_FIND;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
skip_zero = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
return (-1);
|
||||
}
|
||||
|
@ -199,7 +206,7 @@ int main( int argc, char **argv )
|
|||
if ( utility_mode == UTILITY_MODE_FIND )
|
||||
{
|
||||
printf( "Scanning I2C device %s for I2C devices...\n", device_name );
|
||||
scan_i2c( device_desc );
|
||||
scan_i2c( device_desc, skip_zero );
|
||||
printf( "Scanning done \n" );
|
||||
close( device_desc );
|
||||
return (0);
|
||||
|
|
Загрузка…
Ссылка в новой задаче