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

 
 
 
Reply to this topicStart new topic
> STM32F051 SPI, Размер данных
MiklPolikov
сообщение Dec 22 2012, 21:44
Сообщение #1


Гуру
******

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



Настраиваю SPI1 в STM32F05 на передачу 8 бит в режиме master. На осциллографе вижу, что передаются 16 бит (SCK делает 16 тактов)
Первые 8 бит мои, остальные нули. CRC отключен , длинна данных выбрана 8 бит. Откуда же берутся лишние биты ?

Код
        RCC->APB2RSTR|=RCC_APB2RSTR_SPI1RST;  //сброс настроек SPI1
        RCC->APB2RSTR&=~RCC_APB2RSTR_SPI1RST;  
    
     SPI1->CR1|=SPI_CR1_MSTR; // мастер
    
     SPI1->CR2&=~SPI_CR2_DS; //
     SPI1->CR2|=SPI_CR2_DS_0|SPI_CR2_DS_1|SPI_CR2_DS_2; // данные 8 бит
        
     SPI1->CR1|=SPI_CR1_SSM; //
     SPI1->CR1|=SPI_CR1_SSI; // непонятно зачем, но без этого не работает из-за внутреннего конфликта сигналов
    
     SPI1->CR1|=SPI_CR1_SPE; //включили SPI1
    
     SPI1->DR=0xFF; //передаём данные
     while(1){}


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 23 2012, 05:52
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Не уверен насчёт F0, но в F1 для получения 8 битных посылок нужно записать CR2 = 0.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Dec 23 2012, 09:24
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Пользуйтесь поиском...
http://electronix.ru/forum/index.php?showt...t&p=1103800

Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Dec 23 2012, 15:26
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126



Да... и ещё...
Цитата(MiklPolikov @ Dec 23 2012, 00:44) *
Код
    
     SPI1->CR2&=~SPI_CR2_DS; //
     SPI1->CR2|=SPI_CR2_DS_0|SPI_CR2_DS_1|SPI_CR2_DS_2; // данные 8 бит

Для STM32F0XX не верен... причина описана в даташите...
Правильнее будет не устанавливать, а сбрасывать биты...
Код
   SPI1->CR2 |= SPI_CR2_DS;         /*!< DS[3:0] Data Size */
//   SPI1->CR2 &= ~SPI_CR2_DS_0;      /*!< Bit 0 */
//   SPI1->CR2 &= ~SPI_CR2_DS_1;      /*!< Bit 1 */
//   SPI1->CR2 &= ~SPI_CR2_DS_2;      /*!< Bit 2 */
   SPI1->CR2 &= ~SPI_CR2_DS_3;      /*!< Bit 3 */
Go to the top of the page
 
+Quote Post

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

 


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


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