Страница 1 из 1
STM32: Свое тактирование SPI
Добавлено: Пн окт 24, 2016 17:30:11
xmailer
Подскажите пож-та, пытаюсь тактировать SPI по своему алгоритму:
1. настроил на таймере Output Compare на 1 секунду и режимом Toggle on match, на выходе получаю секундный меандр
2. соединил выход таймера с пином тактирования SPI, по идее теперь SPI должен сдвигать свой регистр с частотой в 1 секунду
3. пытаюсь передать 1 бит 01010100 в SPI и жду на выходе мигание светодиодом 3 раза с задержкой 1 секунда
----- проблема -------
1. диод мигает не с секундной задержкой, о несколько дольше.
2. передача повторяется циклично, т.е. передачей одного байта дело не заканчивается, он снова и снова передается, хотя HAL_SPI_Transmit я делаю сразу после инициализации, т.е. не в цикле.
Спасибо.
Re: STM32: Свое тактирование SPI
Добавлено: Пн окт 24, 2016 17:59:38
dosikus
В Кащенко день открытых дверей?
Re: STM32: Свое тактирование SPI
Добавлено: Пн окт 24, 2016 19:33:49
xmailer
dosikus писал(а):В Кащенко день открытых дверей?
Ну зачем Вы так, все не так плохо.
Данная реализация нужна только для визуальной проверки. Нет в наличие осциллографа.
По сути SPI - это сдвиговый регистр, размер я указал 8bit, помещаем туда эти самые 8bit, и на каждом такте выщелкивается на пин очередной бит.
Re: STM32: Свое тактирование SPI
Добавлено: Пн окт 24, 2016 19:40:10
dosikus
Ну тогда так, - вы уверены, что подавая на выход тактовой SPI затактируете модуль SPI? Не торопитесь с ответом...
Re: STM32: Свое тактирование SPI
Добавлено: Пн окт 24, 2016 20:08:14
xmailer
dosikus писал(а):Ну тогда так, - вы уверены, что подавая на выход тактовой SPI затактируете модуль SPI? Не торопитесь с ответом...
почему на
ВЫХОД, SPI засетапен как slave. Соответственно SCK это вход, тактируется от мастера. SPI мастера - нет, есть только тактирование.
Поэтому такты от таймера можно трактовать как такты от мастера.
dosikus писал(а):2. соединил выход таймера с пином тактирования SPI, по идее теперь SPI должен сдвигать свой регистр с частотой в 1 секунду
не уверен, поэтому и спрашиваю совета, в чем накосячил
Re: STM32: Свое тактирование SPI
Добавлено: Пн окт 24, 2016 20:58:38
dosikus
Ну то что модуль slave , надо было сразу писать а не в иероглифах калокуба ставить.
А то такое надумалось.
Если подождете до завтра, испытаю . Но не уверен что на такой низкой частоте будет работать.
Естественно все будет без калокуба.
И сразу вопрос- на хрена такие извращения?
Re: STM32: Свое тактирование SPI
Добавлено: Пн окт 24, 2016 21:37:50
xmailer
dosikus писал(а):Если подождете до завтра, испытаю . Но не уверен что на такой низкой частоте будет работать.
Естественно все будет без калокуба.
И сразу вопрос- на хрена такие извращения?
Буду признателен за результат испытаний.
Вся тема завертелась из-за генерации видео сигнала, там в качестве тактирующего таймера был gate таймер выдающий на выход тактовый pwm на вход spi, все гналось через dma, фактически spi биты были видео пикселами, навскидку ничего не заработало. Поэтому разбил задачу на несколько простых и вот - пытаюсь разобраться с SPI и DMA.
Основная трудность на данном этапе - HAL, на Periph-е все как-то проще, сконфигурировал spi, dma, сказал откуда и куда, сделал enable для одного и второго и все, остальное делает проц (мне нужно гнать циклично данные из массива в периферию).
На hal не прослеживается такого четкого регламента, насколько я понял, в кубе конфигурируешь spi,dma и с помощью hal_spi_transmit_dma запускаешь настроенную в кубе цепочку (spi+dma). Т.е. на перифе
DMA_Cmd(DMA_StreamX,ENABLE); SPI_Cmd(SPIX, ENABLE); на hal - hal_spi_transmit_dma
Re: STM32: Свое тактирование SPI
Добавлено: Вт окт 25, 2016 07:45:52
dosikus