реклама на сайте
подробности

 
 
> SPI на stm32f2xx и прерывания
Непомнящий Евген...
сообщение Jun 11 2013, 17:38
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Здравствуйте

Пытаюсь реализовать обмен по SPI как описано в мануале, на прерываниях:
Цитата
2. Write the first data item to be transmitted into the SPI_DR register (this clears the TXE
flag).
3. Wait until TXE=1 and write the second data item to be transmitted. Then wait until
RXNE=1 and read the SPI_DR to get the first received data item (this clears the RXNE
bit). Repeat this operation for each data item to be transmitted/received until the n–1
received data.
4. Wait until RXNE=1 and read the last received data.


По пунктам (жирным - мои действия, курсивом - предположения о работе железа):
1. пишем в DR байт 0 для передачи
2. байт копируется в TX, Срабатывает прерывание по TXE, в котором пишем в DR байт 1. При этом передача из TX возможно еще не завершена
3. Передача TX завершается, при этом в DR оказывается принятый байт 0, а байт 1 копируется в TX
4. Если теперь прерывание по RXNE (в котором читем DR) обработается до окончания передачи байта 1 из TX - все здорово. Но если после, то будет переполнение и один из принятых байтов окажется потерян

Я реализовал передачу только на одном прерывании RXNE, т.е. пишу очередной байт после вычитки предыдущего. Это работает, но дает относительно большие задержки между байтами на шине. Рекомендованный в даташите алгоритм дает меньшие задержки, но иногда вызывает переполнение.

Или я где-то напутал и его все же можно реализовать для случая, когда возможна задержка обработка прерывания по RXNE?

Спасибо!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Непомнящий Евгений   SPI на stm32f2xx и прерывания   Jun 11 2013, 17:38
- - Golikov A.   ДМА - универсальное решение. Один момент, надо уто...   Jun 12 2013, 07:21
- - Dopler   Не совсем понятно, в чем вопрос. Все 4 пункта верн...   Jun 12 2013, 13:25
|- - jcxz   Цитата(Dopler @ Jun 12 2013, 19:25) DMA н...   Jun 13 2013, 07:23
|- - Dopler   Цитата(jcxz @ Jun 13 2013, 11:23) Вот поч...   Jun 13 2013, 08:09
||- - jcxz   Цитата(Dopler @ Jun 13 2013, 14:09) Я вид...   Jun 13 2013, 08:45
|- - Непомнящий Евгений   Цитата(jcxz @ Jun 13 2013, 11:23) И фифо ...   Jun 13 2013, 08:20
|- - etoja   Цитата(jcxz @ Jun 13 2013, 11:23) Вот поч...   Jun 14 2013, 07:39
|- - Qwertty   Цитата(etoja @ Jun 14 2013, 11:39) LPC(13...   Jun 15 2013, 15:41
|- - _Артём_   Цитата(Qwertty @ Jun 15 2013, 18:41) Тот ...   Jun 15 2013, 15:58
- - Непомнящий Евгений   Да просто полдня ковырялся с spi, пока до меня не ...   Jun 13 2013, 05:23
- - Golikov A.   не очень понятно почему не может? Он так и работае...   Jun 13 2013, 05:40
- - Непомнящий Евгений   он будет работать, если мы гарантируем отрабатывае...   Jun 13 2013, 06:20
- - syoma   Именно так и делаю, как в ТС. Так как принятый ба...   Jun 13 2013, 08:52
- - Golikov A.   вы затрете принятый байт вторым байтом только в то...   Jun 13 2013, 12:39
|- - Непомнящий Евгений   Цитата(Golikov A. @ Jun 13 2013, 16:39) Д...   Jun 14 2013, 07:27
- - Qwertty   Обычный. Просто регистры задания коэффициента запо...   Jun 15 2013, 18:30


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 15:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016