Я пытаюсь получить огромное количество данных через i2 c. Вот мой код Основная проблема заключается в том, что требуется более 2 секунд, когда мне нужно, чтобы сделать это менее чем за 0,5 сек c. Вот устройство: https://www.st.com/resource/en/datasheet/lsm6ds33.pdf
изображение с интерфейсом i2 c
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <linux/i2c-dev.h>
#include <sys/ioctl.h>
#include <time.h>
#include <sys/time.h>
#include <fcntl.h>
#include <stdint.h>
#include <stddef.h>
#define FIFO_DATA_OUT_L 0x3E
#define FIFO_DATA_OUT_H 0X3F
struct timeval stop, start;
int main()
{
uint8_t addressL = FIFO_DATA_OUT_L;
uint8_t addressH = FIFO_DATA_OUT_H;
uint8_t resultL;
uint8_t resultH;
int16_t result;
gettimeofday(&start,NULL);
int fd;
if ((fd = open("/dev/i2c-0",O_RDWR))< 0)
{
perror("failed to connect to i2c");
exit(0);
}
ioctl(fd,I2C_SLAVE,0x6b);// Setting slave address
long i;
for (i=0; i< 2499; i++)
{
write(fd,&addressL,1);
read(fd,&resultL,1);
write(fd,&addressH,1);
read(fd,&resultH,1);
result = (resultH << 8) | resultL;
}
gettimeofday(&stop,NULL);
printf("Time elapsed: %d \n",stop.tv_sec-start.tv_sec);
return;
}
Интересно, есть ли возможность чтобы сделать вещи быстрее. Приветствия.