sergzaytsev |
|
|
|
|
|
|
|
Пункты: 3694 |
Регистрация: 19.07.2016 |
|
|
|
Доброго времени суток, уважаемые коллеги.
Изделие SK-iMX6S-SODIMM, настроил в dts модуль ecspi2 следующим образом:
&ecspi2 {
fsl,spi-num-chipselects = <1>;
cs-gpios = <&gpio2 26 0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi2_sodimm>;
status = "okay";
spidev: spidev@0 {
compatible = "linux,spidev";
reg = <0>;
interrupt-parent = <&gpio1>;
interrupts = <11 0x2>;
spi-max-frequency = <1000000>;
};
};
После пересборки ядра (3.14) и загрузки его в контроллер появилось устройство /dev/spidev1.0. LOOP тест (когда MOSI соединен с MISO) выполняется нормально - spi_transfer работает отлично.
Запись "interrupts = <11 0x2>;" говорит о том, что настроено прерывание по каналу GPIO1_IO11, работающее по спаду сигнала. Я буду подключать к ecspi2 АЦП AD7730, который выдает сигнал готовности данных аналого-цифрового преобразования. Как только этот сигнал падает - значит новые данные в АЦП готовы и их нужно забрать по SPI. Уважаемые коллеги, подскажите плз, как мне определить, что прерывание пришло и я могу забирать из АЦП данные? Мне просто нужно забрать данные из АЦП и положить их в буфер для последующей обработки. Поллингом заниматься очень не хотелось бы - накладно очень. Очень буду благодарен. |
|
|
|
|
|
sasamy |
|
|
|
|
|
|
|
Пункты: 83552 |
Регистрация: 14.08.2009 |
|
|
|
|
|
|
|
sergzaytsev |
|
|
|
|
|
|
|
Пункты: 3694 |
Регистрация: 19.07.2016 |
|
|
|
sasamy добрый день. Правильно ли я Вас понял, что нужно писать линуксовый драйвер для AD7730? |
|
|
|
|
|
sasamy |
|
|
|
|
|
|
|
Пункты: 83552 |
Регистрация: 14.08.2009 |
|
|
|
|
|
|
|
sergzaytsev |
|
|
|
|
|
|
|
Пункты: 3694 |
Регистрация: 19.07.2016 |
|
|
|
sasamy спасибо. Я посмотрю исходники и буду устанавливать этот драйвер. Мне нужно будет корректировать DTS? Как в этом случае будет выглядеть свойство compatible?
compatible = "AnalogDevice, AD7730"; - так? |
|
|
|
|
|
sasamy |
|
|
|
|
|
|
|
Пункты: 83552 |
Регистрация: 14.08.2009 |
|
|
|
В драйвере без вендора прописано
static const struct of_device_id ad7730_dt_ids[] = {
{ .compatible = "ad7730" },
{},
};
пропишите как в драйвере |
|
|
|
|
|
sergzaytsev |
|
|
|
|
|
|
|
Пункты: 3694 |
Регистрация: 19.07.2016 |
|
|
|
sasamy добрый день, подскажите плз где почитать про компиляцию и установку драйверов устройств (речь конечно идет о драйвере AD7730), я совсем новичок в этом вопросе.... спасибо. |
|
|
|
|
|
sasamy |
|
|
|
|
|
|
|
Пункты: 83552 |
Регистрация: 14.08.2009 |
|
|
|
Интегрируйте прямо в исходники ядра - возьмите любой простой драйвер для примера (например в директори output/build/linux-custom/drivers/misc) и по аналогии допишите Kconfig и Makefile. Если надо почитать - тут посмотрите
https://www.kernel.org/doc/Documentation/kbuild/ |
|
|
|
|
|
|