Подключение Raspberrypi с BNO085 через соединение SPI C ++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Подключение Raspberrypi с BNO085 через соединение SPI C ++

Сообщение Anonymous »

Я недавно пытался подключить BNO085 к моему Raspberrypi 3 B+ через SPI -соединение, но он не работает, как и ожидалось: < /p>

Для большинства датчика, работающего на PIN -код, поднимается на высоком уровне, что означает, что доска не имеет данных, чтобы передавать, это должно быть очень быстро, в результате чего все, что я сделал на 3MHZ < /p>

< /br />

< /br /> < /br /pr> < /br /pr>
/> Когда я получаю данные, которые он используется с длиной 8 или 32767, что означает, что это просто мусоровые данные < /p>
< /li>
При предпринимательстве программы IMU отправляет сначала несколько пакетов с длиной 32767, но только один раз отправляет упаковку с длиной 276. Zeros) < /p>
< /li>
< /ol>
Это Usuall вывод (числа - длина полученного пакета, когда INT низкий): < /p>

Код: Выделить всё

32767

32767

32767

32767

32767

276

Quaternion: [0.0000,0.0000,0.0000,0.0000]

Yaw: 0.0000 Pitch: 0.0000 Roll: 0.0000

8

8

8

8
< /code>
Тогда он либо продолжается с 32767 или 8, и я увидел, что это в основном случайно < /p>
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define SPI_DEVICE "/dev/spidev0.0"
#define SPI_MODE   SPI_MODE_0
#define SPI_SPEED  3000000   // 3 MHz
#define SPI_BITS   8

#define GPIO_CHIP "/dev/gpiochip0"
#define INT_LINE  25   // BCM GPIO25
#define PS0 17
#define PS1 27
#define RST 24

using namespace std;

float s16_to_float(int16_t val) { return val / 16384.0f; }

void send_rotation_vector_enable(int spi_fd) {
uint8_t RequestRotationVectorReport[] = {
0x15, 0x00, 0x02, 0x00,   0xFD, 0x28,   0x00, 0x00, 0x00,   0x20, 0x4e,    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
struct spi_ioc_transfer tr{};
tr.tx_buf = (unsigned long)RequestRotationVectorReport;
tr.rx_buf = 0;
tr.len = sizeof(RequestRotationVectorReport);
tr.speed_hz = SPI_SPEED;
tr.bits_per_word = SPI_BITS;

if(ioctl(spi_fd, SPI_IOC_MESSAGE(1), &tr) < 0)
perror("SPI_IOC_MESSAGE send feature");
else
cout 1?1:t2; t2=t2

Подробнее здесь: [url]https://stackoverflow.com/questions/79747030/raspberrypi-connection-with-bno085-through-spi-connection-c[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»