mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-08 17:08:28 -04:00
HAL_Linux: added bus scanning test
This commit is contained in:
parent
bcc8768358
commit
9e921719ca
59
libraries/AP_HAL_Linux/examples/BusTest/BusTest.pde
Normal file
59
libraries/AP_HAL_Linux/examples/BusTest/BusTest.pde
Normal file
@ -0,0 +1,59 @@
|
||||
// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
//
|
||||
// scan I2C and SPI buses for expected devices
|
||||
//
|
||||
|
||||
#include <AP_Common.h>
|
||||
#include <AP_Progmem.h>
|
||||
#include <AP_HAL.h>
|
||||
#include <AP_HAL_Linux.h>
|
||||
#include <AP_HAL_Empty.h>
|
||||
|
||||
const AP_HAL::HAL& hal = AP_HAL_BOARD_DRIVER;
|
||||
|
||||
void setup(void)
|
||||
{
|
||||
hal.console->println("BusTest startup...");
|
||||
}
|
||||
|
||||
static struct {
|
||||
const char *name;
|
||||
enum AP_HAL::SPIDevice dev;
|
||||
uint8_t whoami_reg;
|
||||
} whoami_list[] = {
|
||||
{ "MPU9250", AP_HAL::SPIDevice_MPU9250, 0x75 | 0x80 },
|
||||
{ "LSM9DSO", AP_HAL::SPIDevice_LSM9DS0, 0x0f | 0x80 },
|
||||
{ "MPU6000", AP_HAL::SPIDevice_MPU6000, 0x75 | 0x80 },
|
||||
};
|
||||
|
||||
void loop(void)
|
||||
{
|
||||
AP_HAL::SPIDeviceDriver *spi;
|
||||
AP_HAL::Semaphore *spi_sem;
|
||||
|
||||
hal.console->printf("Scanning SPI bus devices\n");
|
||||
|
||||
for (uint8_t i=0; i<sizeof(whoami_list)/sizeof(whoami_list[0]); i++) {
|
||||
spi = hal.spi->device(whoami_list[i].dev);
|
||||
if (spi == NULL) {
|
||||
hal.console->printf("Failed to get SPI device for %s\n", whoami_list[i].name);
|
||||
continue;
|
||||
}
|
||||
spi_sem = spi->get_semaphore();
|
||||
if (!spi_sem->take(1000)) {
|
||||
hal.console->printf("Failed to get SPI semaphore for %s\n", whoami_list[i].name);
|
||||
continue;
|
||||
}
|
||||
uint8_t tx[2] = { whoami_list[i].whoami_reg, 0 };
|
||||
uint8_t rx[2];
|
||||
|
||||
spi->transaction(tx, rx, 2);
|
||||
|
||||
hal.console->printf("WHO_AM_I for %s: 0x%02x\n", whoami_list[i].name, (unsigned)rx[1]);
|
||||
spi_sem->give();
|
||||
}
|
||||
hal.scheduler->delay(2000);
|
||||
}
|
||||
|
||||
AP_HAL_MAIN();
|
1
libraries/AP_HAL_Linux/examples/BusTest/Makefile
Normal file
1
libraries/AP_HAL_Linux/examples/BusTest/Makefile
Normal file
@ -0,0 +1 @@
|
||||
include ../../../../mk/apm.mk
|
0
libraries/AP_HAL_Linux/examples/BusTest/nobuild.txt
Normal file
0
libraries/AP_HAL_Linux/examples/BusTest/nobuild.txt
Normal file
Loading…
Reference in New Issue
Block a user