Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

STM32: Свое тактирование SPI

Пн окт 24, 2016 17:30:11

Подскажите пож-та, пытаюсь тактировать SPI по своему алгоритму:
1. настроил на таймере Output Compare на 1 секунду и режимом Toggle on match, на выходе получаю секундный меандр
2. соединил выход таймера с пином тактирования SPI, по идее теперь SPI должен сдвигать свой регистр с частотой в 1 секунду
3. пытаюсь передать 1 бит 01010100 в SPI и жду на выходе мигание светодиодом 3 раза с задержкой 1 секунда
----- проблема -------
1. диод мигает не с секундной задержкой, о несколько дольше.
2. передача повторяется циклично, т.е. передачей одного байта дело не заканчивается, он снова и снова передается, хотя HAL_SPI_Transmit я делаю сразу после инициализации, т.е. не в цикле.

Спасибо.
Вложения
spi.png
(187.89 KiB) Скачиваний: 380

Re: STM32: Свое тактирование SPI

Пн окт 24, 2016 17:59:38

В Кащенко день открытых дверей?

Re: STM32: Свое тактирование SPI

Пн окт 24, 2016 19:33:49

dosikus писал(а):В Кащенко день открытых дверей?

Ну зачем Вы так, все не так плохо.
Данная реализация нужна только для визуальной проверки. Нет в наличие осциллографа.
По сути SPI - это сдвиговый регистр, размер я указал 8bit, помещаем туда эти самые 8bit, и на каждом такте выщелкивается на пин очередной бит.

Re: STM32: Свое тактирование SPI

Пн окт 24, 2016 19:40:10

Ну тогда так, - вы уверены, что подавая на выход тактовой SPI затактируете модуль SPI? Не торопитесь с ответом...

Re: STM32: Свое тактирование SPI

Пн окт 24, 2016 20:08:14

dosikus писал(а):Ну тогда так, - вы уверены, что подавая на выход тактовой SPI затактируете модуль SPI? Не торопитесь с ответом...

почему на ВЫХОД, SPI засетапен как slave. Соответственно SCK это вход, тактируется от мастера. SPI мастера - нет, есть только тактирование.
Поэтому такты от таймера можно трактовать как такты от мастера.

dosikus писал(а):2. соединил выход таймера с пином тактирования SPI, по идее теперь SPI должен сдвигать свой регистр с частотой в 1 секунду

не уверен, поэтому и спрашиваю совета, в чем накосячил

Re: STM32: Свое тактирование SPI

Пн окт 24, 2016 20:58:38

Ну то что модуль slave , надо было сразу писать а не в иероглифах калокуба ставить. :)))
А то такое надумалось.
Если подождете до завтра, испытаю . Но не уверен что на такой низкой частоте будет работать.
Естественно все будет без калокуба.
И сразу вопрос- на хрена такие извращения?

Re: STM32: Свое тактирование SPI

Пн окт 24, 2016 21:37:50

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

Здесь на VGA правда для 103 - http://www.artekit.eu/vga-output-using-a-36-pin-stm32/

Здесь на STM32L https://sourcegate.wordpress.com/catego ... discovery/
Ответить