Ich habe ein Problem mit der Kommunikation mit MAX31865. Ich habe eine einfache Linux-Anwendung geschrieben, aber wenn ich es ausführe, endet das Programm nie. Ich habe keine Antwort von MAX31865.MAX31865 SPI Kommunikation fehlgeschlagen
hier ist mein Code (nur conf):
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;
}
Ich werde für jede Hilfe
für die einfache Lesbarkeit und Verständnis von uns Menschen: 1) Einzug konsequent. Nach jeder öffnenden Klammer '{' einrücken. Un-Einzug vor jeder schließenden Klammer '}'. Verwenden Sie niemals Tabs zum Einrücken. Schlagen Sie vor, für jede Einzugsebene 4 Leerzeichen zu verwenden, da diese so breit sind, dass sie auch mit Schriftarten mit variabler Breite angezeigt werden können. – user3629249
Sie haben Probleme mit der externen Hardware. DU hast alles, was du brauchst, um es zu reparieren. Wir haben ein bisschen Quellcode und "Programm endet nie". Ich habe keine Antwort. Sie haben uns nicht einmal gesagt, wie weit das Programm gekommen ist, als Sie es mit Ihrem Debugger durchgegangen sind. Wir wissen nicht einmal, ob Sie Strom auf dem Chip haben. Wir können Ihnen nicht helfen, und Sie sollten gewusst haben, bevor Sie gepostet :( –
Fügen Sie einige 'printf' für debug, so dass Sie genau wissen, welcher Anruf, der – 4386427