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

 
 
> 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.
сообщение May 29 2014, 01:23
Сообщение #2


Гуру
******

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



не понятно что такое rev, особенно если уже в начале есть rbit.

http://infocenter.arm.com/help/index.jsp?t...g/Cihfddaf.html

здесь еще предлагают
unsigned int __rbit(unsigned int val);

ну понятно что он тоже самое делает, что и в первом посте. только надо понимать что когда вы 32 битное слово реверсируете, ваши 8 бит улетают из начала в конец, то есть после такой реверсии еще надо посылать в другом формате little endian сменить на big endian
Go to the top of the page
 
+Quote Post
adnega
сообщение May 29 2014, 02:29
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Golikov A. @ May 29 2014, 09:33) *
ну понятно что он тоже самое делает, что и в первом посте. только надо понимать что когда вы 32 битное слово реверсируете, ваши 8 бит улетают из начала в конец, то есть после такой реверсии еще надо посылать в другом формате little endian сменить на big endian

rev меняет порядок байт в слове - типа rbit, но для байтов. Т.е. rbit8 как бы реверсит биты внутри байта.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Aug 1 2014, 11:42
Сообщение #4


Гуру
******

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



Кто-нибудь может подсказать, почему программа изредка повисает при передаче байта по USART в режиме spi ?
Точно такое же зависание я когда-то наблюдал и в асинхронном режиме. В обеих случаях режим MASTER
Уже мозг сломал wacko.gif

Код
  while(!(USART2->SR & USART_SR_TXE))
   {
   }                        
  USART2->SR &=~ USART_SR_RXNE;
  USART2->DR=data;
  while(!(USART2->SR & USART_SR_RXNE))
  {
    //тут висит
  }


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


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(MiklPolikov @ Aug 1 2014, 15:42) *
Кто-нибудь может подсказать, почему программа изредка повисает при передаче байта по USART в режиме spi ?

Иногда мешает противный битик OVR. Вы его обрабатываете?
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
|- - 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
- - Golikov A.   ЦитатаПотому что USART в синхронном режиме , как S...   Aug 1 2014, 15:46
|- - MiklPolikov   Golikov A, огромное спасибо, с флагом TC висеть пе...   Aug 2 2014, 06:55
|- - jcxz   Цитата(MiklPolikov @ Aug 2 2014, 12:55) П...   Aug 3 2014, 11:40
|- - MiklPolikov   Цитата(Jekin @ Aug 3 2014, 12:29) А вы см...   Aug 3 2014, 14:58
|- - 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 Текстовая версия Сейчас: 23rd July 2025 - 01:30
Рейтинг@Mail.ru


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