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

 
 
> STM32L151 USART в режиме SPI, LSB и MSB
MiklPolikov
сообщение May 28 2014, 20:53
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Пытаюсь использовать USART в синхронном режиме, т.е. сделать из него SPI .
Но вот беда : бит 0 передаётся первым, а мне нужно в противоположном порядке.
Я правильно понимаю, что этой настройки в USART нету ?

Заранее спасибо за ответ !


Отвечу сам на свой вопрос :

Действительно, настройки нет.
Вот тут http://forum.micromouseonline.com/index.php?topic=460.0 приведён ответ из службы поддержки STM.
Но есть быстрый способ перекодировать MSB в LSB

uint32_t __RBIT(uint32_t value)
{
__ASM("rbit r0, r0");
__ASM("bx lr");
}


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Aug 1 2014, 15:46
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Потому что USART в синхронном режиме , как SPI. Передача байта происходит одновременно с приёмом.

ну то есть у вас все хорошо работаетsm.gif?

if RXNE=0, then it means that the last valid data has already been read and thus there
is nothing to be read in the RDR. This case can occur when the last valid data is read in
the RDR at the same time as the new (and lost) data is received. It may also occur
when the new data is received during the reading sequence (between the USART_SR
register read access and the USART_DR read access).

вижу много причин пропадания этого флага... кстати если у вас в отладке где то просматривается RDR, то это тоже наверняка может сбросить флаг....


Почему не использовать идеологически более правильный флаг TC - Transmission complete?

Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Aug 2 2014, 06:55
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Golikov A, огромное спасибо, с флагом TC висеть перестало !

Может ещё подскажете :
Почему при работе USART+DMA иногда не происходит прерывание конца передачи DMA TC ( Transmission complete) ?


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 3 2014, 11:40
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(MiklPolikov @ Aug 2 2014, 12:55) *
Почему при работе USART+DMA иногда не происходит прерывание конца передачи DMA TC ( Transmission complete) ?

"Иногда" - это насколько часто? Недавно переносил проект на F103, так не заметил такого - UART-DMA работает без единого сбоя.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Aug 3 2014, 14:58
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(Jekin @ Aug 3 2014, 12:29) *
А вы смотрели что в DMA_CNDTRx? если до нуля не декрементирует, то прерывание не произойдет.


Нет, не смотрел. Ну наверно, если посмотреть, то так и окажется.

Цитата(jcxz @ Aug 3 2014, 15:40) *
"Иногда" - это насколько часто? Недавно переносил проект на F103, так не заметил такого - UART-DMA работает без единого сбоя.


Раз в несколько ч непрерывной передачи.

Когда у меня SD карты висели на SPI , всё было без сучка без задоринки. А сейчас перевесил на USART в синхронном режиме, и началась эта нестабильная работа. И в другом проекте USART то же глючит, нет-нет да и не пройдёт передача.

Я так понимаю, что это специфика USART. Успех передачи почему-то не гарантирован, и надо обрабатывать не успех. Но непонятно, что ему мешает работать стабильно ? В асинхронном режиме ещё бы можно было понять, но в синхронном-то почему ? Видимо он и в синхронном режиме не до конца превращается в SPI


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MiklPolikov   STM32L151 USART в режиме SPI   May 28 2014, 20:53
- - adnega   Так можно байтик кувырнуть. Кодrbit8: rbit r0...   May 28 2014, 23:40
- - Golikov A.   не понятно что такое rev, особенно если уже в нач...   May 29 2014, 01:23
|- - adnega   Цитата(Golikov A. @ May 29 2014, 09:33) н...   May 29 2014, 02:29
|- - MiklPolikov   Кто-нибудь может подсказать, почему программа изре...   Aug 1 2014, 11:42
|- - adnega   Цитата(MiklPolikov @ Aug 1 2014, 15:42) К...   Aug 1 2014, 12:18
|- - MiklPolikov   Цитата(adnega @ Aug 1 2014, 16:18) Иногда...   Aug 1 2014, 12:53
- - Golikov A.   while(!(USART2->SR & USART_SR_RXNE)) п...   Aug 1 2014, 13:29
|- - MiklPolikov   Цитата(Golikov A. @ Aug 1 2014, 17:29) wh...   Aug 1 2014, 13:45
- - adnega   Может, нарушение кадра имеет место быть. Типа, нет...   Aug 1 2014, 14:46
|- - jcxz   Цитата(MiklPolikov @ Aug 3 2014, 20:58) Я...   Aug 4 2014, 02:03
- - Genadi Zawidowski   А кто-нибудь может объяснить, зачем флаг USART_SR_...   Aug 2 2014, 11:03
|- - MiklPolikov   Цитата(Genadi Zawidowski @ Aug 2 2014, 15...   Aug 2 2014, 14:23
- - Golikov A.   ЦитатаПочему при работе USART+DMA иногда не происх...   Aug 2 2014, 17:37
- - Jekin   Цитата(MiklPolikov @ Aug 2 2014, 09:55) М...   Aug 3 2014, 08:29
- - Golikov A.   А он в синхронном режиме старт, стоп, четность пр...   Aug 3 2014, 18:13


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 01:21
Рейтинг@Mail.ru


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