deni 6 6 октября, 2023 Опубликовано 6 октября, 2023 · Жалоба 43 минуты назад, dimka76 сказал: Немного не так. SYNC должен быть в единице между транзакциями. Это тот же самый переименованный CS. Если смотреть на диаграмму, то там ему все равно что на SYNC после окончания передачи, главное чтоб до начала передачи SYNC находился в единице необходимое время. Можно SYCN и как CS для SPI использовать, т.е. поднимать сразу после передачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Turgenev 1 6 октября, 2023 Опубликовано 6 октября, 2023 · Жалоба Завел SPI на 8 МБ/с и попробовал все 4 комбинации полярности и фазы, отправляя через DMA. Результат всегда один- смещение на бит вправо. В блокирующем режиме работает корректно только в конфиге SPI как в первом посте темы. 4 часа назад, dimka76 сказал: В вашем случае смысл передачи по DMA пропадает, т.к. все равно приходится отвлекаться на дергание ножкой CS. Что толку мало понимаю, но не по вашей причине. Сразу написал- просто стало интересно. Вашу причину как раз не особо понял- "отвлекаюсь", в смысле занимаю процессорное время на подъем и опускание чип-селекта? Ну а в вашем случае мне занимать это время обрабатывая прерывание от таймера и указывая что надо передавать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 6 октября, 2023 Опубликовано 6 октября, 2023 · Жалоба On 10/6/2023 at 7:09 PM, Turgenev said: "отвлекаюсь", в смысле занимаю процессорное время на подъем и опускание чип-селекта? Да On 10/6/2023 at 7:09 PM, Turgenev said: Ну а в вашем случае мне занимать это время обрабатывая прерывание от таймера и указывая что надо передавать. С таймером это не мое предложение. Но с таймером не надо никакие прерывания обрабатывать. Таймер дает команду на запуск DMA аппаратно. Одновременно с помощью функции ШИМ таймер генерирует сигнал SYNC. При этом, у вас стабильное время обновления значения ЦАП и все происходит аппаратно. Т.е. таймер это триггер для DMA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Turgenev 1 6 октября, 2023 Опубликовано 6 октября, 2023 · Жалоба 1 минуту назад, dimka76 сказал: При этом, у вас стабильное время обновления значения ЦАП и все происходит аппаратно. Т.е. таймер это триггер для DMA. Так, а зачем обновлять значение ЦАП каждые n-секунд, если это пользовательское действие (когда надо пользователю, тогда и обновил) или результат работы другой функции? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 6 октября, 2023 Опубликовано 6 октября, 2023 · Жалоба On 10/6/2023 at 9:22 PM, Turgenev said: Так, а зачем обновлять значение ЦАП каждые n-секунд, если это пользовательское действие (когда надо пользователю, тогда и обновил) или результат работы другой функции? Ну, мало ли. Может вам захочется синусоиду генерировать. А для однократного режима у таймера есть One-pulse mode. Дал пинка и все действия выполнятся аппаратно до конца. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Turgenev 1 6 октября, 2023 Опубликовано 6 октября, 2023 · Жалоба 6 минут назад, dimka76 сказал: А для однократного режима у таймера есть One-pulse mode. Дал пинка и все действия выполнятся аппаратно до конца. Так все равно же пинок таймера это аналог опускания чип-селекта у меня- занятое процессорное время. Я просто пытаюсь понять в чем преимущество работы с spi при помощи таймеров, не поймите не правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 6 октября, 2023 Опубликовано 6 октября, 2023 · Жалоба On 10/6/2023 at 9:38 PM, Turgenev said: Я просто пытаюсь понять в чем преимущество работы с spi при помощи таймеров, не поймите не правильно. В циклическом режиме (например для формирования синусоиды) не надо будет отвлекаться на формирование импульсов SYNC (CS). Все будет формироваться аппаратно. А зачем вам внешний ЦАП ? У STM32F407 есть свой внутренний и тоже 12 битный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Turgenev 1 6 октября, 2023 Опубликовано 6 октября, 2023 · Жалоба 1 час назад, dimka76 сказал: А зачем вам внешний ЦАП ? Боюсь нету нормальной причины, все было затеяно в образовательных целях. Есть задумки подключать ЦАП к более слабому МК (L0, F1) и управлять потоком воздуха. Но чтобы думать о чем-то серьезном, надо разобраться с фундаментальными вещами, а тут споткнулся вообще у подножья. И все же, что делать с DMA, может есть еще варианты? 1 час назад, dimka76 сказал: В циклическом режиме (например для формирования синусоиды) не надо будет отвлекаться на формирование импульсов SYNC (CS). Все будет формироваться аппаратно. Понял, постараюсь запомнить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 6 октября, 2023 Опубликовано 6 октября, 2023 · Жалоба On 10/6/2023 at 11:17 PM, Turgenev said: И все же, что делать с DMA, может есть еще варианты? осцилографировать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Turgenev 1 6 октября, 2023 Опубликовано 6 октября, 2023 (изменено) · Жалоба 1 час назад, dimka76 сказал: осцилографировать Сделал. На скринах разный масштаб по времени. При передаче через DMA чет совсем странно работает(2й скрин, нижний). Для первого скрина напряжение нормально выставляется. Спойлер Изменено 6 октября, 2023 пользователем Turgenev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 6 октября, 2023 Опубликовано 6 октября, 2023 · Жалоба On 10/7/2023 at 12:23 AM, Turgenev said: Сделал. На скринах разный масштаб по времени. При передаче через DMA чет совсем странно работает(2й скрин, нижний). Для первого скрина напряжение нормально выставляется. Для больше информативности надо двумя каналами снимать. Например так Первый канал - CLK Второй канал - SYNC Потом Первый канал - CLK Второй канал - данные И в итоге сопоставить эти два набора осцилограм. И снимайте в том режиме, в котором у вас не правильно пишется. Т.е. в режиме DMA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Turgenev 1 6 октября, 2023 Опубликовано 6 октября, 2023 · Жалоба 28 минут назад, dimka76 сказал: надо двумя каналами снимать. Да понимаю... Работаю над тем, чтобы второй щуп появился. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 81 7 октября, 2023 Опубликовано 7 октября, 2023 · Жалоба 8 часов назад, Turgenev сказал: Да понимаю... Работаю над тем, чтобы второй щуп появился. Воткнуть во 2й канал любой кусок провода) Лучше конечно коаксиала кусок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Turgenev 1 7 октября, 2023 Опубликовано 7 октября, 2023 · Жалоба 10 часов назад, HardEgor сказал: Воткнуть во 2й канал любой кусок провода) Лучше конечно коаксиала кусок. Коаксила под рукой нет. Заколхозил на проводе. Такие пульсации получил, что фронтов вообще не разобрать. Бросил. Но проблему решил. Дело было в размере данных передаваемых DMA. Вот так правильно, а стояло полслова: Спойлер Подскажите, почему передачей полслова дает такую ошибку? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
deni 6 8 октября, 2023 Опубликовано 8 октября, 2023 · Жалоба 15 часов назад, Turgenev сказал: Подскажите, почему передачей полслова дает такую ошибку? Не очень понятно как у вас было настроено, если источник и получатель полуслово, то куда по вашей логике DMA должен ещё 8 бит положить, если у вас SPI настроен на передачу по 8 бит. Если источник полуслово, а получатель байт, то надо внимательно прочитать раздел документации про DMA, как настроить при разной ширине источника и получателя и какое должно быть количество трансферов в вашем случае. Или просто SPI настроить на передачу 16 бит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться