Гость sergey

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

3 сообщения в этой теме

Гость sergey   
Гость sergey

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

spi.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
snn_krs    40

Сдвиг происходит по одному фронту. Поэтому длительность мигания должна быть 2 сек.

SPI это простой сдвиговый регистр, поэтому если импульсы идут, то он и будет постоянно

сдвигать данные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость sergey   
Гость sergey
9 часов назад, snn_krs сказал:

Сдвиг происходит по одному фронту. Поэтому длительность мигания должна быть 2 сек.

SPI это простой сдвиговый регистр, поэтому если импульсы идут, то он и будет постоянно

сдвигать данные.

Но почему в spi регистре зависает переданное HAL_SPI_Transmit значение, я полагал, что он его протолкнул и забыл.

Получается нужно делать

HAL_SPI_Transmit(&hspi1, (uint8_t *) 0x55, 1, 0x100000); // передаем 0b01010101

SPI1->DR = 0x0; // фактически очищаем зависшее при HAL_SPI_Transmit значение

или

HAL_SPI_Transmit(&hspi1, (uint8_t *) 0x55, 1, 0x100000); // передаем 0b01010101

__HAL_SPI_DISABLE(&hspi1); // останавливаем SPI

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...