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