Цитата(nanorobot @ Mar 24 2017, 22:48)

Занимаюсь разработкой дивайса на STM32F051C8T6. Используется DAC в режиме DMA. "Родным" каналом для DAC в данном камне является 3 канал. Но он у меня занят под обмен по интерфейсу SPI c другой платой дивайса, которая является SPI мастером.
Как вариант:
Завести SCLK SPI на вход таймера, поделить частоту на размер слова SPI, таймером генерить запросы к DMA-каналу этого таймера и этим DMA обслуживать уже SPI.
Не знаю - возможно-ли такое на данном STM, но я такое делал когда-то давно на LPC17xx (или даже LPC23xx ещё?) на его SPI, который самостоятельно не работал с DMA. А так получилось заставить работать.
Цитата(nanorobot @ Mar 24 2017, 22:48)

Пришлось использовать для DAC TIMER15 и канал DMA номер 5("родной" для TIMER15). В регистре DAC_CR взвел биты триггера для TIMER15. Вроде все работает, но в момент запуска DAC в режиме DMA теряется связь с мастером(входящий от слейва к мастеру поток искажается, CRC не совпадает).
Ну естественно - DAC ведь отправляет запросы на DMA к своему каналу. Это вроде как бы очевидно. А Вы чего хотели?
Естественно DMA-биты в ЦАП в таком случае нельзя взводить.
Цитата(nanorobot @ Mar 24 2017, 22:48)

Потом, без всякой связи с проблемой, сообразил, что в режиме DMA установка битов триггера под соответствующий таймер не требуется. закомментил соответствующую строчку, загрузил, все работает как часы, в том числе и связь. Просто, несколько неожиданно для меня. Може сгодится кому...
Скоро буду делать работу DAC+DMA на F429. Но там вроде как я понял из даташита, если не использовать запуск от внешнего триггера (таймера например), то просто записью в регистр данных ЦАП преобразование не запустить. Надо ещё отдельную запись в другой регистр сделать (программный триггер). Наверное в вашем STM по-другому.
Да и не нужно это - я заранее предусмотрел чтобы не занимать DMA-канал ЦАП-а.