Перейти к содержанию
    

2 часа назад, GenaSPB сказал:

Посмотрите на временные диаграммы в даташите АЦП - мне показалось что можно подобрать.

Вполне возможно. Никогда не имел дел с этим аудиоинтерфейсом, поэтому и не рекомендовал его...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем пока я сделал мост SPI - SPI на STM32F427, он под рукой был. Там даже никакой огород городить не пришлось, т.к SPI имеет железную поддержку TI протокола.  Хотел сделать SPI - USB , но у USB_FS пропускной способности не хватило, а для USB_HS нужнен физический интерфейс. 
Сейчас все практически заработало, проблемы только с разрывами между кадрами, т.к криворукий и не врублюсь как сделать непрерывный прием под Linux. Я использую spidev и по 4кб данных считываю. И вот между вызовами чтения как раз разрыв кадра и происходит. 

Заказчик не хочет baremetal использовать, нужен именно Линукс. Сейчас буду разбираться плотнее с SPI  под линуксом. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

30 minutes ago, Mysteo said:

как сделать непрерывный прием под Linux

Боюсь, никак. Только буферизацией внутри моста можно бороться с разрывами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, aaarrr сказал:

Боюсь, никак.

Что, даже i2s не поможет что-ли?

13 часов назад, Mysteo сказал:

Заказчик не хочет baremetal использовать, нужен именно Линукс.

Если не секрет, чем он это объясняет? Стильно, модно, молодежно, или есть какая-то существенная причина?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 minutes ago, mantech said:

Что, даже i2s не поможет что-ли?

Причем тут I2S? Речь про spidev с мостом на МК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если гора не идёт к Магомету, то может Магомету пойти к горе? Если нельзя отказаться от линуха и он обязательно нужен, то может тогда заменить контроллер на такой, в котором есть подходящая периферия, которая позволит реализовать нужную диаграмму работы SPI? (и при этом не мешать работе линуха на нём же). Или хотя-бы есть отдельное ядро, которое можно выделить исключительно для эмуляции SPI?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, jcxz сказал:

Или хотя-бы есть отдельное ядро, которое можно выделить исключительно для эмуляции SPI?

Отдельное ядро есть, даже в Т113ом, либо одно кортекса, либо ДСП. Тут уже об этом написано выше и не раз...

7 часов назад, aaarrr сказал:

Речь про spidev с мостом на МК.

Вы про это "В общем пока я сделал мост SPI - SPI на STM32F427" ? Я то все про то, чтобы еще один МК не городить))) Ну если ТСу так хочется, то пускай городит)))

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 minutes ago, mantech said:

Вы про это "В общем пока я сделал мост SPI - SPI на STM32F427" ?

Да, про это. I2S может помочь, но надо внимательно смотреть на предмет стыкуемости с АЦП. И отдельный драйвер городить придется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теоретически могу прелставить вариант линуксовский:

Полнимается i2s. Штатными средствами. Затем модификациями регистров (что там для их маппинга в память надо сделвть) переводится в режим pcm и получаем поток сэмплов тес же способом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 minutes ago, GenaSPB said:

Полнимается i2s. Штатными средствами. Затем модификациями регистров (что там для их маппинга в память надо сделвть) переводится в режим pcm и получаем поток сэмплов тес же способом.

Достаточно драйвер модифицировать. Но "штатные средства" в виде alsa могут и подавиться таким потоком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 без копирования - нечем особо давиться, при захвате видео на порядки больше данных, главное чтобы процессор успевал обрабатывать.

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, sasamy сказал:

alsa может напрямую обращаться к кольцевому буферу драйвера через mmap без копирования

Ну а просто прога пользователя разве не может тоже к этому буферу обращаться?

8 часов назад, sasamy сказал:

главное чтобы процессор успевал обрабатывать.

Вот тут тоже непонятно, что ТС будет делать дальше с этим потоком, разве, что какая-то простая логика обработчика, что-то сложное может и не успеть...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 4/11/2024 at 9:23 AM, mantech said:

прога пользователя разве не может тоже к этому буферу обращаться?

может конечно - можно напрямую через ioctl взаимодействовать с драйвером без alsa-lib, можно вообще не использовать штатные API ядра и написать свой драйвер со своими ioctl а драйвер i2s из аудиоподсистемы взять за основу

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 4/10/2024 at 8:59 AM, mantech said:

Что, даже i2s не поможет что-ли?

Если не секрет, чем он это объясняет? Стильно, модно, молодежно, или есть какая-то существенная причина?

 

Да заказчик далекий от встраиваемых систем человек и ему нужен линукс, потому что через него удобно обновлять ПО и ему не объяснить , что на устройстве по хорошему и пакет менеджера быть то не должно. 
В общем решил пойти по простому для себя пути, в релизе будет мост SPI - SPI , а эти драйвера писать будет уже сторонний человек. 

Алгоритм обработки сигнала там не особо сложный, около 20 процентов F1C200s грузится от него

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...