У меня проблема с обменом данными с MAX31865. Я написал простое приложение linux, но когда я его запускаю, программа никогда не заканчивается. У меня нет ответа от MAX31865.MAX31865 Ошибка связи SPI
вот мой код (только конф):
static void transfer(int fd)
{
int ret;
uint8_t tx[] ={0x80};
uint8_t rx[ARRAY_SIZE(tx)];
struct spi_ioc_transfer tr = {
.tx_buf = (unsigned long)tx,
.rx_buf = (unsigned long)rx,
.len = ARRAY_SIZE(tx),
.delay_usecs = delay,
.speed_hz = 0,
.bits_per_word = 0,
};
ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);
if (ret == 1)
pabort("can't send spi message");
}
int main(int argc, char *argv[])
{
int ret = 0;
int fd;
parse_opts(argc, argv);
fd = open(device, O_RDWR);
if (fd < 0)
pabort("can't open device");
ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
if (ret == -1)
pabort("can't set spi mode");
ret = ioctl(fd, SPI_IOC_RD_MODE, &mode);
if (ret == -1)
pabort("can't get spi mode");
ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
if (ret == -1)
pabort("can't set bits per word");
ret = ioctl(fd, SPI_IOC_RD_BITS_PER_WORD, &bits);
if (ret == -1)
pabort("can't get bits per word");
printf("%d",bits);
ret = ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed);
if (ret == -1)
pabort("can't set max speed hz");
ret = ioctl(fd, SPI_IOC_RD_MAX_SPEED_HZ, &speed);
if (ret == -1)
pabort("can't get max speed hz");
printf("spi mode: %d\n", mode);
printf("bits per word: %d\n", bits);
transfer(fd);
printf("max speed: %d Hz\n", speed);
transfer(fd);
close(fd);
return ret;
}
буду благодарен за любую помощь
для удобства читаемости и понимания нами людей: 1) последовательно отступать. Отступ после каждой открывающей скобки '{'. un-indent перед каждой закрывающей скобкой '}'. никогда не используйте вкладки для отступов. Предложите использовать 4 пробела для каждого уровня отступов, который достаточно широкий, чтобы быть видимым даже с изменяемыми ширинами шрифтов. – user3629249
У вас проблемы с внешним оборудованием. У вас есть все, что вам нужно, чтобы исправить это. У нас есть немного исходного кода, и программа никогда не заканчивается. У меня нет ответа ». Вы даже не сказали нам, как далеко продвинулась программа, когда вы перешли через нее с вашим отладчиком. Мы даже не знаем, есть ли у вас мощность на чипе. Мы не можем вам помочь, и вы должны были знать, что перед тем, как вы разместили :( –
Вставьте некоторые 'printf' для отладки, чтобы вы точно знали, какой вызов, который стоит за столом – 4386427