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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
xmailer
Родился
Сообщения: 7
Зарегистрирован: Пн сен 24, 2012 18:58:49

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

Сообщение xmailer »

Подскажите пож-та, пытаюсь тактировать 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 КБ) 400 скачиваний
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

В Кащенко день открытых дверей?
Реклама
xmailer
Родился
Сообщения: 7
Зарегистрирован: Пн сен 24, 2012 18:58:49

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

Сообщение xmailer »

dosikus писал(а):В Кащенко день открытых дверей?
Ну зачем Вы так, все не так плохо.
Данная реализация нужна только для визуальной проверки. Нет в наличие осциллографа.
По сути SPI - это сдвиговый регистр, размер я указал 8bit, помещаем туда эти самые 8bit, и на каждом такте выщелкивается на пин очередной бит.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Ну тогда так, - вы уверены, что подавая на выход тактовой SPI затактируете модуль SPI? Не торопитесь с ответом...
Реклама
Эиком - электронные компоненты и радиодетали
xmailer
Родился
Сообщения: 7
Зарегистрирован: Пн сен 24, 2012 18:58:49

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

Сообщение xmailer »

dosikus писал(а):Ну тогда так, - вы уверены, что подавая на выход тактовой SPI затактируете модуль SPI? Не торопитесь с ответом...
почему на ВЫХОД, SPI засетапен как slave. Соответственно SCK это вход, тактируется от мастера. SPI мастера - нет, есть только тактирование.
Поэтому такты от таймера можно трактовать как такты от мастера.
dosikus писал(а):2. соединил выход таймера с пином тактирования SPI, по идее теперь SPI должен сдвигать свой регистр с частотой в 1 секунду
не уверен, поэтому и спрашиваю совета, в чем накосячил
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Ну то что модуль slave , надо было сразу писать а не в иероглифах калокуба ставить. :)))
А то такое надумалось.
Если подождете до завтра, испытаю . Но не уверен что на такой низкой частоте будет работать.
Естественно все будет без калокуба.
И сразу вопрос- на хрена такие извращения?
Реклама
xmailer
Родился
Сообщения: 7
Зарегистрирован: Пн сен 24, 2012 18:58:49

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

Сообщение 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
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Ответить

Вернуться в «ARM»