@dimaxa Я сейчас пробежался по коду, есть ощущение, что тут должно быть DMA_MINC_DISABLE:
hdma_spi3_tx.Init.MemInc = DMA_MINC_ENABLE;
Не нашел эту строку 🙁 Можете носом ткнуть где она? В каком файле.
В stm32f4xx_hal_msp.c, вообще это в Cube надо поменять, это сгенерированный файл.
Это я понял что в кубе. Я вообще убрал DMA из кода, теперь у меня генерируется почти меандр. В RS232 вывожу массив, там идет синус, а на осциллографе почти меандр. У меня руки опускаются победить этот DAC.
Этот код написал в обработчик прерывания таймера, таймер не зависит от переменного резистора
sin_tab_2 массив из 256 значений синусоиды
И на выходе почти меандр амплитудой 0,5 В. Блин ну что не так то.
HAL_I2S_Transmit(&hi2s3, (uint16_t*)&sin_tab_2[temp], 256,100);
Здесь каждый раз передаются 256 значений начиная с адреса sin_tab_2[temp]. По задумке наверно должно передаваться одно значение каждый раз, когда переполнился таймер?
@aveal Ну вообще да, с каждым тиком новые данные. То есть там вместо 256 надо 1? Сейчас попробую
Поставил 1 вместо 256, и вообще никакой генерации.
@dimaxa Можно с самого простого начать - таймер настроить на переполнение раз в 500 мс, чтобы точно передача успела завершиться, и отправлять значения либо из массива, либо просто попеременно ноль и не ноль. Дальше уже подумать над организацией всего, DMA и т. д. Сейчас может таймер вообще переполняется до того как передача предыдущая завершилась.
Тогда уж передачу сделать в теле while (1) {}.
Там точно успеет передать, хоть весь массив. Но вот вопрос, допустим он начнет передавать и опять меандр, почему в порт RS232 массив выходит нормально, синусоида по значениям из массива, а с DAC будет выходить меандр. Меня в тупик это ставит. ладно, сегодня попробую.
Тогда уж передачу сделать в теле while (1) {}.
Ну да, HAL_Delay() влепить туда. Просто получим отправную точку, в которой все идет по плану, а следующим шагом, как вариант, из того же места отправлять уже данные синусоиды, и посмотрим результат. То есть движение начнем относительно точки, где все работает как мы и планировали.