Теперь я получаю доступ к периферийному устройству с помощью интерфейса SPI в среде Linux.
Доступ к этому устройству разрешен.
Я хочу измените SPI CLK, но он не изменяется значением настройки clk.
Следующий код предназначен для инициализации SPI.
Теперь я получаю доступ к периферийному устройству с помощью интерфейса SPI в среде Linux. Доступ к этому устройству разрешен. Я хочу измените SPI CLK, но он не изменяется значением настройки clk. Следующий код предназначен для инициализации SPI. [code]int spidev_init(char *rfdev, int mode, int bits, int speed) { int file; int ret;
file = open(rfdev, O_RDWR); if (file < 0) { printf("%s can't open device!!!\0", rfdev); return -1; }
/* * spi mode */ ret = ioctl(file, SPI_IOC_WR_MODE, &mode); if (ret == -1) { printf("%s can't set spi mode!!!", rfdev); return -2; } else bit2equ(spi_mode, mode);
ret = ioctl(file, SPI_IOC_RD_MODE, &mode); if (ret == -1) { printf("%s can't get spi mode!!!", rfdev); return -3; }
/* * bits per word */ ret = ioctl(file, SPI_IOC_WR_BITS_PER_WORD, &bits); if (ret == -1) { printf("%s can't set bits per word!!!", rfdev); return -4; } else bit2equ(spi_bits, bits);
ret = ioctl(file, SPI_IOC_RD_BITS_PER_WORD, &bits); if (ret == -1) { printf("%s can't get bits per word!!!", rfdev); return -5; }
/* * max speed hz */ ret = ioctl(file, SPI_IOC_WR_MAX_SPEED_HZ, &speed); if (ret == -1) { printf("%s can't set max speed hz!!!", rfdev); return -6; } else bit2equ(spi_speed, speed);
ret = ioctl(file, SPI_IOC_RD_MAX_SPEED_HZ, &speed); if (ret == -1) { printf("%s can't get max speed hz!!!", rfdev); return -7; }
return file; } [/code] Я думаю, что в этом коде нет отладки. Ниже приведен dts-скрипт для SPI. [code]&spi2 { pinctrl-names = "default"; pinctrl-0 = ; pinctrl-1 = ; #address-cells = ; #size-cells = ; status = "okay";