Skip to content
Snippets Groups Projects
Commit 52fc56a6 authored by Beat Küng's avatar Beat Küng Committed by Daniel Agar
Browse files

gps: explicitly set SPI bus speed to 1MHz

Required on RPi, the default seems to be too high.
parent bec43b0b
No related branches found
No related tags found
No related merge requests found
......@@ -87,6 +87,9 @@
#include "devices/src/mtk.h"
#include "devices/src/ashtech.h"
#ifdef __PX4_LINUX
#include <linux/spi/spidev.h>
#endif /* __PX4_LINUX */
#define TIMEOUT_5HZ 500
#define RATE_MEASUREMENT_PERIOD 5000000
......@@ -608,6 +611,27 @@ GPS::run()
PX4_ERR("GPS: failed to open serial port: %s err: %d", _port, errno);
return;
}
#ifdef __PX4_LINUX
if (_interface == GPSHelper::Interface::SPI) {
int spi_speed = 1000000; // make sure the bus speed is not too high (required on RPi)
int status_value = ioctl(_serial_fd, SPI_IOC_WR_MAX_SPEED_HZ, &spi_speed);
if (status_value < 0) {
PX4_ERR("SPI_IOC_WR_MAX_SPEED_HZ failed for %s (%d)", _port, errno);
return;
}
status_value = ioctl(_serial_fd, SPI_IOC_RD_MAX_SPEED_HZ, &spi_speed);
if (status_value < 0) {
PX4_ERR("SPI_IOC_RD_MAX_SPEED_HZ failed for %s (%d)", _port, errno);
return;
}
}
#endif /* __PX4_LINUX */
}
param_t handle = param_find("GPS_YAW_OFFSET");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment