kyrex 0 23 июня, 2023 Опубликовано 23 июня, 2023 · Жалоба Доброго времени. Пытаюсь настроить I2S в режиме master rx. Источник данных - микрофон. На шине все присутствует, CK, WS ,SD микрофон данные отправляет. Прерывание по получению данных срабатывает, но регистр приема всегда пуст. Пробовал через DMA, результат то же. Данная конфигурация нормально работает на stm32f446. Так же пробовал настроить в режиме master tx и отправлять случайные данные - все нормально данные на шине появляются, прерывания срабатывают. Пробовал менять настройки режима GPIO на mode_input (по умолчанию предлагает alternate push pull) результата не дало. Куда еще посмотреть ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 23 июня, 2023 Опубликовано 23 июня, 2023 · Жалоба 26 minutes ago, kyrex said: но регистр приема всегда пуст. Добрый день! А физически данные на линии приёма есть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 141 23 июня, 2023 Опубликовано 23 июня, 2023 · Жалоба 54 минуты назад, kyrex сказал: Прерывание по получению данных срабатывает, но регистр приема всегда пуст. В этой фразе 2 противоречащих друг другу события. Если срабатывает прерывание по приему, т.е. в регистре статуса установлен бит RXNE (или как он там), то DR по определению не пуст. Значит, контроллер I2S исправен (с точки зрения инициализации), копайте в сторону настройки ног. Может, тактирование GPIO-модулей не настроено у Rx-линии. Смотрите прямиком из-под отладчика. Еще про свап пинов SDI/SDO не забудьте, бит IOSWP в CFG2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
deni 6 23 июня, 2023 Опубликовано 23 июня, 2023 · Жалоба 14 минут назад, Arlleex сказал: В этой фразе 2 противоречащих друг другу события. Если срабатывает прерывание по приему, т.е. в регистре статуса установлен бит RXNE (или как он там), то DR по определению не пуст. Нет никакого противоречия, чтоб сработало прерывание по приему, достаточно чтоб прошло необходимое количество клоков на CK. При этом что было на линии RX не важно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 141 23 июня, 2023 Опубликовано 23 июня, 2023 · Жалоба Только что, deni сказал: Нет никакого противоречия, чтоб сработало прерывание по приему, достаточно чтоб прошло необходимое количество клоков на CK. При этом что было на линии RX не важно. А я о чем? Перечитайте еще раз. Противоречие есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
deni 6 23 июня, 2023 Опубликовано 23 июня, 2023 · Жалоба 18 минут назад, Arlleex сказал: А я о чем? Перечитайте еще раз. Противоречие есть. В чем противоречие то? Прерывание есть, данных в регистре нет. К такой ситуации скорее всего приводит неверно настроенный пин, что собственно у вас далее и написано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 23 июня, 2023 Опубликовано 23 июня, 2023 · Жалоба 4 minutes ago, deni said: Прерывание есть, данных в регистре нет Как их нет? Нули разве что. Но это тоже данные. В таких случаях выручает логический анализатор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 141 23 июня, 2023 Опубликовано 23 июня, 2023 · Жалоба 11 минут назад, deni сказал: В чем противоречие то? Прерывание есть, данных в регистре нет. 6 минут назад, haker_fox сказал: Как их нет? Нули разве что. Но это тоже данные. Именно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 23 июня, 2023 Опубликовано 23 июня, 2023 · Жалоба 7 minutes ago, Arlleex said: Именно... Всё ж я за логический анализатор. Хотя бы осциллограф. Сразу развеивает все сомнения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kyrex 0 23 июня, 2023 Опубликовано 23 июня, 2023 · Жалоба Если отключить внешнее устройство (микрофон), то прерывания все равно срабатывают, а буфер при этом пуст, получается контроллер i2s генерирует их по тактовым импульсам согласно размеру принимаемого слова. IOSWAP решил проблему. CubeMX не правильно пишет конфигурацию, при использовании master receive предлагает ногу SDO вместо SDI. SWAP он тоже не прописывает, хотя в меню он присутствует, пришлось вручную процедуру инициализации править. ВСЕМ СПАСИБО ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 141 23 июня, 2023 Опубликовано 23 июня, 2023 · Жалоба 12 часов назад, kyrex сказал: CubeMX не правильно пишет конфигурацию... пришлось вручную процедуру инициализации править. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 23 июня, 2023 Опубликовано 23 июня, 2023 · Жалоба 1 hour ago, kyrex said: получается контроллер i2s генерирует их по тактовым импульсам согласно размеру принимаемого слова. Вы бы почитали, как работает SPI/I2S))) Тогда это не было бы открытием) По-другому быть и не может. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться