mantech 99 April 9, 2024 Posted April 9, 2024 · Report post 2 часа назад, GenaSPB сказал: Посмотрите на временные диаграммы в даташите АЦП - мне показалось что можно подобрать. Вполне возможно. Никогда не имел дел с этим аудиоинтерфейсом, поэтому и не рекомендовал его... Quote Share this post Link to post Share on other sites More sharing options...
Mysteo 0 April 9, 2024 Posted April 9, 2024 · Report post В общем пока я сделал мост SPI - SPI на STM32F427, он под рукой был. Там даже никакой огород городить не пришлось, т.к SPI имеет железную поддержку TI протокола. Хотел сделать SPI - USB , но у USB_FS пропускной способности не хватило, а для USB_HS нужнен физический интерфейс. Сейчас все практически заработало, проблемы только с разрывами между кадрами, т.к криворукий и не врублюсь как сделать непрерывный прием под Linux. Я использую spidev и по 4кб данных считываю. И вот между вызовами чтения как раз разрыв кадра и происходит. Заказчик не хочет baremetal использовать, нужен именно Линукс. Сейчас буду разбираться плотнее с SPI под линуксом. Quote Share this post Link to post Share on other sites More sharing options...
aaarrr 70 April 9, 2024 Posted April 9, 2024 · Report post 30 minutes ago, Mysteo said: как сделать непрерывный прием под Linux Боюсь, никак. Только буферизацией внутри моста можно бороться с разрывами. Quote Share this post Link to post Share on other sites More sharing options...
mantech 99 April 10, 2024 Posted April 10, 2024 · Report post 12 часов назад, aaarrr сказал: Боюсь, никак. Что, даже i2s не поможет что-ли? 13 часов назад, Mysteo сказал: Заказчик не хочет baremetal использовать, нужен именно Линукс. Если не секрет, чем он это объясняет? Стильно, модно, молодежно, или есть какая-то существенная причина? Quote Share this post Link to post Share on other sites More sharing options...
aaarrr 70 April 10, 2024 Posted April 10, 2024 · Report post 24 minutes ago, mantech said: Что, даже i2s не поможет что-ли? Причем тут I2S? Речь про spidev с мостом на МК. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 307 April 10, 2024 Posted April 10, 2024 · Report post Если гора не идёт к Магомету, то может Магомету пойти к горе? Если нельзя отказаться от линуха и он обязательно нужен, то может тогда заменить контроллер на такой, в котором есть подходящая периферия, которая позволит реализовать нужную диаграмму работы SPI? (и при этом не мешать работе линуха на нём же). Или хотя-бы есть отдельное ядро, которое можно выделить исключительно для эмуляции SPI? Quote Share this post Link to post Share on other sites More sharing options...
mantech 99 April 10, 2024 Posted April 10, 2024 (edited) · Report post 6 часов назад, jcxz сказал: Или хотя-бы есть отдельное ядро, которое можно выделить исключительно для эмуляции SPI? Отдельное ядро есть, даже в Т113ом, либо одно кортекса, либо ДСП. Тут уже об этом написано выше и не раз... 7 часов назад, aaarrr сказал: Речь про spidev с мостом на МК. Вы про это "В общем пока я сделал мост SPI - SPI на STM32F427" ? Я то все про то, чтобы еще один МК не городить))) Ну если ТСу так хочется, то пускай городит))) Edited April 10, 2024 by mantech Quote Share this post Link to post Share on other sites More sharing options...
aaarrr 70 April 10, 2024 Posted April 10, 2024 · Report post 19 minutes ago, mantech said: Вы про это "В общем пока я сделал мост SPI - SPI на STM32F427" ? Да, про это. I2S может помочь, но надо внимательно смотреть на предмет стыкуемости с АЦП. И отдельный драйвер городить придется. Quote Share this post Link to post Share on other sites More sharing options...
GenaSPB 16 April 10, 2024 Posted April 10, 2024 · Report post Теоретически могу прелставить вариант линуксовский: Полнимается i2s. Штатными средствами. Затем модификациями регистров (что там для их маппинга в память надо сделвть) переводится в режим pcm и получаем поток сэмплов тес же способом. Quote Share this post Link to post Share on other sites More sharing options...
aaarrr 70 April 10, 2024 Posted April 10, 2024 · Report post 21 minutes ago, GenaSPB said: Полнимается i2s. Штатными средствами. Затем модификациями регистров (что там для их маппинга в память надо сделвть) переводится в режим pcm и получаем поток сэмплов тес же способом. Достаточно драйвер модифицировать. Но "штатные средства" в виде alsa могут и подавиться таким потоком. Quote Share this post Link to post Share on other sites More sharing options...
sasamy 11 April 10, 2024 Posted April 10, 2024 (edited) · Report post On 4/10/2024 at 5:41 PM, aaarrr said: Достаточно драйвер модифицировать. Но "штатные средства" в виде alsa могут и подавиться таким потоком. тут больше проблема что штатными средствами для звука мегагерцы не предусмотрены, можно просто например подразумевать вместо этих констант х10 и соотвественно настраивать интерфейс https://elixir.bootlin.com/linux/latest/source/include/sound/pcm.h#L122 alsa может напрямую обращаться к кольцевому буферу драйвера через mmap без копирования - нечем особо давиться, при захвате видео на порядки больше данных, главное чтобы процессор успевал обрабатывать. Edited April 10, 2024 by sasamy Quote Share this post Link to post Share on other sites More sharing options...
mantech 99 April 11, 2024 Posted April 11, 2024 · Report post 8 часов назад, sasamy сказал: alsa может напрямую обращаться к кольцевому буферу драйвера через mmap без копирования Ну а просто прога пользователя разве не может тоже к этому буферу обращаться? 8 часов назад, sasamy сказал: главное чтобы процессор успевал обрабатывать. Вот тут тоже непонятно, что ТС будет делать дальше с этим потоком, разве, что какая-то простая логика обработчика, что-то сложное может и не успеть... Quote Share this post Link to post Share on other sites More sharing options...
sasamy 11 April 11, 2024 Posted April 11, 2024 (edited) · Report post On 4/11/2024 at 9:23 AM, mantech said: прога пользователя разве не может тоже к этому буферу обращаться? может конечно - можно напрямую через ioctl взаимодействовать с драйвером без alsa-lib, можно вообще не использовать штатные API ядра и написать свой драйвер со своими ioctl а драйвер i2s из аудиоподсистемы взять за основу Edited April 11, 2024 by sasamy Quote Share this post Link to post Share on other sites More sharing options...
sasamy 11 April 11, 2024 Posted April 11, 2024 (edited) · Report post On 4/11/2024 at 9:23 AM, mantech said: от тут тоже непонятно, что ТС будет делать дальше с этим потоком, разве, что какая-то простая логика обработчика, что-то сложное может и не успеть с этого вообще и надо начинать - от назначения зависит выбор API для какой подсистемы делать драйвер или своё думать, работать с устройствами через /dev/spidev это худшее что можно сделать. Для ацп есть iio - там тоже mmap есть https://wiki.analog.com/resources/tools-software/linux-software/libiio_internals#high-speed_mmap_interface Edited April 11, 2024 by sasamy Quote Share this post Link to post Share on other sites More sharing options...
Mysteo 0 April 11, 2024 Posted April 11, 2024 · Report post On 4/10/2024 at 8:59 AM, mantech said: Что, даже i2s не поможет что-ли? Если не секрет, чем он это объясняет? Стильно, модно, молодежно, или есть какая-то существенная причина? Да заказчик далекий от встраиваемых систем человек и ему нужен линукс, потому что через него удобно обновлять ПО и ему не объяснить , что на устройстве по хорошему и пакет менеджера быть то не должно. В общем решил пойти по простому для себя пути, в релизе будет мост SPI - SPI , а эти драйвера писать будет уже сторонний человек. Алгоритм обработки сигнала там не особо сложный, около 20 процентов F1C200s грузится от него Quote Share this post Link to post Share on other sites More sharing options...