STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Arpad
Прорезались зубы
Сообщения: 219
Зарегистрирован: Вт ноя 13, 2012 12:49:16
Откуда: UA

Re: STM32 новичку в ARM что к чему

Сообщение Arpad »

Уважаемые владельцы STM32F3-Discovery, имеющие его наличии, может кто даст или выставит сюда файл (main.c SPI2 8-bit mode for STM32F3-Discovery ) типа непрерывно передающий через SPI2 допустим 2 байта типа 0хF6 и 0хА5 с целью наблюдения на экране тактирования и данных двумя лучами; А вот эти 2 байта 0хF6 и 0хА5 нужны для четкого определения, где его хвост и где грива. Меня интересует только «SPI2 8-bit mode» с «SPI2 16-bit mode» справился, но большие потери времени в пустую.
З.Ы. Опыт с STM32F1 и (4)-Discovery «SPI2 8-bit mode», не помог там это без проблем. Спасибо авансом, за руку помощи!!
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Arpad, Шо тяжко быдлокодить не читая даташита ? :)))

Код: Выделить всё

#define SPI1_DR_8b (*(__IO uint8_t *)((uint32_t)SPI1 + 0x0C))


void SPI1_init(void)
	{
		
		RCC->AHBENR |=RCC_AHBENR_GPIOAEN;
		RCC->APB2ENR |=RCC_APB2ENR_SPI1EN;
		GPIOA->MODER &=~
		            GPIO_MODER_MODER4 |
		            GPIO_MODER_MODER5 |
                            GPIO_MODER_MODER6 |
                            GPIO_MODER_MODER7 
		                             ;
		GPIOA->MODER|= 
		        GPIO_MODER_MODER4_1|
		        GPIO_MODER_MODER5_1|
		        GPIO_MODER_MODER6_1|
		        GPIO_MODER_MODER7_1
		                           ;
            		
		
		GPIOA->OSPEEDR|=
		         GPIO_OSPEEDER_OSPEEDR4|
		         GPIO_OSPEEDER_OSPEEDR5|
		         GPIO_OSPEEDER_OSPEEDR6|
		         GPIO_OSPEEDER_OSPEEDR7
		                               ;
	
		
	SPI1->CR1 |= 
	         SPI_CR1_BR_0 |     // 
                 SPI_CR1_MSTR 
					              ;	
	SPI1->CR2  = 0x700;   //  8 bit
        SPI1->CR2 |=SPI_CR2_SSOE|SPI_CR2_NSSP;
	SPI1->CR1 |= SPI_CR1_SPE;	
	}


void SPI_Send (unsigned char data)
{ 
  SPI1_DR_8b = data;                  
  while(SPI1->SR & SPI_SR_BSY);
}




Кусок из main

Код: Выделить всё

 while (1)
	 {
	 SPI_Send(0xAA);
	 SPI_Send(0x55);
          Delay_mS(1);	 
   }

Под F0, SPI там одинаковый .
CS(NSS) дергается аппаратно .
СпойлерИзображение


Исправил.
Нарушение Правил форума п. 2.6
http://radiokot.ru/forum/viewtopic.php?f=19&t=6538

aen
Реклама
Аватара пользователя
Arpad
Прорезались зубы
Сообщения: 219
Зарегистрирован: Вт ноя 13, 2012 12:49:16
Откуда: UA

Re: STM32 новичку в ARM что к чему

Сообщение Arpad »

Arpad писал(а):Уважаемые владельцы STM32F3-Discovery, имеющие его наличии, может кто даст или выставит сюда файл (main.c SPI2 8-bit mode for STM32F3-Discovery )
dosikus писал(а):Arpad, Шо тяжко быдлокодить не читая даташита ? :)))
Демонстрируй свой интелект полным готовым к загрузке кодом и STM32F3-Discovery обсудит кто есть кто, и все мы тебе скажем спасибо!!!
Ждемс, с нетерпением вместе с владельцами STM32F3-Discovery чтобы проверить как будет все в натуре энто ???
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Arpad писал(а): Демонстрируй свой интелект полным готовым к загрузке кодом и STM32F3-Discovery обсудит кто есть кто, и все мы тебе скажем спасибо!!!
?
Я дал все что нужно, осталось только в рот положить ...
Реклама
Эиком - электронные компоненты и радиодетали
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: STM32 новичку в ARM что к чему

Сообщение HHIMERA »

Arpad писал(а):Демонстрируй свой интелект полным готовым к загрузке кодом
"Не плюй в руку тебе подающую!"(С)
Вам уже всё объяснили... уберите с инита хардварный NSS... отправляйте напрямую, без функций... и проверяйте TXE...
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

HHIMERA писал(а):уберите с инита хардварный NSS... отправляйте напрямую, без функций... и проверяйте TXE...
Сенкс за пинок, NSS правда оставил - зато с TXE , его ширина стала 83.3 nS против 1.5 uS что было с BSY ...
СпойлерИзображение


Исправил.
Нарушение Правил форума п. 2.6
http://radiokot.ru/forum/viewtopic.php?f=19&t=6538

aen
Реклама
Аватара пользователя
Arpad
Прорезались зубы
Сообщения: 219
Зарегистрирован: Вт ноя 13, 2012 12:49:16
Откуда: UA

Re: STM32 новичку в ARM что к чему

Сообщение Arpad »

Все начинающие вместе со мной Ждемс, "Качественный код" от всех гуру, снисходте до нас джедаи!
С нетерпением вместе с владельцами STM32F3-Discovery чтобы проверить как будет все в натуре энто ???
Вложения
Foto_SPI.rar
(165.78 КБ) 174 скачивания
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Убрал NSS полилось сплошным потоком . Правда анализатор теперь хрен разберет . :)))

Код: Выделить всё

#define SPI1_DR_8b (*(__IO uint8_t *)((uint32_t)SPI1 + 0x0C))


void SPI1_init(void)
   {
      
      RCC->AHBENR |=RCC_AHBENR_GPIOAEN;
      RCC->APB2ENR |=RCC_APB2ENR_SPI1EN;
      GPIOA->MODER &=~
                  //GPIO_MODER_MODER4 |
                  GPIO_MODER_MODER5 |
                            GPIO_MODER_MODER6 |
                            GPIO_MODER_MODER7 
                                   ;
      GPIOA->MODER|= 
              //GPIO_MODER_MODER4_1|
              GPIO_MODER_MODER5_1|
              GPIO_MODER_MODER6_1|
              GPIO_MODER_MODER7_1
                                 ;
                  
      
      GPIOA->OSPEEDR|=
               GPIO_OSPEEDER_OSPEEDR4|
               GPIO_OSPEEDER_OSPEEDR5|
               GPIO_OSPEEDER_OSPEEDR6|
               GPIO_OSPEEDER_OSPEEDR7
                                     ;
   

 SPI1->CR1 |= 
	          SPI_CR1_BR_0 |     // 
               SPI_CR1_MSTR |
               SPI_CR1_SSI |				 
	          SPI_CR1_SSM        
                             ;   
   SPI1->CR2  = 0x700;   //  8 bit
   SPI1->CR1 |= SPI_CR1_SPE;   
   }


void SPI_Send (unsigned char data)
{ 
  while((SPI1->SR & SPI_SR_TXE) == RESET); 
    SPI1->DR = data;
}

Хотя нет - дернуть CS перед посылкой и все чудно . :)))
СпойлерИзображение



Исправил.
Нарушение Правил форума п. 2.6
http://radiokot.ru/forum/viewtopic.php?f=19&t=6538

aen
Последний раз редактировалось dosikus Пт сен 06, 2013 14:37:50, всего редактировалось 4 раза.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Arpad писал(а):Все начинающие вместе со мной Ждемс, "Качественный код" от всех гуру, снисходте до нас джедаи!
Слушай, хватит юродствовать. Все выложено . Копипасть и компилируй.
Аватара пользователя
Arpad
Прорезались зубы
Сообщения: 219
Зарегистрирован: Вт ноя 13, 2012 12:49:16
Откуда: UA

Re: STM32 новичку в ARM что к чему

Сообщение Arpad »

dosikus писал(а):
Arpad писал(а):Все начинающие вместе со мной Ждемс, "Качественный код" от всех гуру, снисходте до нас джедаи!
Слушай, хватит юродствовать. Все выложено . Копипасть и компилируй.

Какие магические слова надо вписать
SPI2->CR2 = 0x....;
SPI2->CR1 = 0x....;
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Arpad писал(а):
Какие магические слова надо вписать
"Магические слова" это к SPL . Код тремя постами выше посмотреть лень ?
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: STM32 новичку в ARM что к чему

Сообщение HHIMERA »

Код: Выделить всё

 while(1)
  {
    while((SPI1->SR & SPI_SR_TXE) == RESET);        // Wait for SPI Tx Buffer Empty     
    SPI1_DR_8b = 0xF6;

    while((SPI1->SR & SPI_SR_TXE) == RESET);        // Wait for SPI Tx Buffer Empty     
    SPI1_DR_8b = 0xA5;        
  }
СпойлерИзображение


Исправил.
Нарушение Правил форума п. 2.6
http://radiokot.ru/forum/viewtopic.php?f=19&t=6538

aen
Вложения
SPI_F6A5.png
(49.85 КБ) 1237 скачиваний
Аватара пользователя
Arpad
Прорезались зубы
Сообщения: 219
Зарегистрирован: Вт ноя 13, 2012 12:49:16
Откуда: UA

Re: STM32 новичку в ARM что к чему

Сообщение Arpad »

dosikus писал(а):
Arpad писал(а): Какие магические слова надо вписать
З.Ы. Опыт с STM32F1 и (4)-Discovery «SPI2 8-bit mode», не помог там это без проблем. Спасибо авансом, за руку помощи!!
"Магические слова" это к SPL . Код тремя постами выше посмотреть лень ?
Уважаемые рабочая лошадка должна быть не 24МГц = STM32F100 а именно STM32F303 = 72МГц
на 100 и 407 как писал 8-бит без проблем!
На 303 что получилось ниже.
Вложения
2 байта_0хF6 и 0хА5 8-bit.png
(76.46 КБ) 299 скачиваний
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: STM32 новичку в ARM что к чему

Сообщение HHIMERA »

Arpad писал(а): Уважаемые рабочая лошадка должна быть не 24МГц = STM32F100 а именно STM32F303 = 72МГц
Уважаемый... не учите мну как надо трахать SPI!!!
Вышеприведённые эпюры и код не для STM32F100, а для STM32F051... у STM32F051 и STM32F303 SPI одинаковый!!!
А частоты были приведены изменением RCC_CFGR_PLLMULL для того, чтобы не попортить времянку, и чтобы USB-смотрелко смогла отразить правильность и непрерывность передачи...
Короче... такая же картинка будет и на другой частоте... если средства отображения позволяют это...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

А, я понял ... Он 24МГц увидел на скринах. Похоже все еще хуже , пациент безнадежен ... :)))
Аватара пользователя
Arpad
Прорезались зубы
Сообщения: 219
Зарегистрирован: Вт ноя 13, 2012 12:49:16
Откуда: UA

Re: STM32 новичку в ARM что к чему

Сообщение Arpad »

Arpad писал(а):Уважаемые владельцы STM32F3-Discovery, имеющие его наличии, может кто даст или выставит сюда файл (main.c SPI2 8-bit mode for STM32F3-Discovery ) типа непрерывно передающий через SPI2 допустим 2 байта типа 0хF6 и 0хА5 с целью наблюдения на экране тактирования и данных двумя лучами; А вот эти 2 байта 0хF6 и 0хА5 нужны для четкого определения, где его хвост и где грива. Меня интересует только «SPI2 8-bit mode» с «SPI2 16-bit mode» справился, но большие потери времени в пустую.
З.Ы. Опыт с STM32F1 и (4)-Discovery «SPI2 8-bit mode», не помог там это без проблем. Спасибо авансом, за руку помощи!!
При таких гуру вопрос был задан вопрос - переход из SPI2 16-bit на SPI2 8-bit ответ получил вместо качественного сена,
сказку о гнилой соломе. Не зря сказано - "Кто не умеет делать - тот учит". Или что еще лучше, пишет учебник.

Американский форум- задал вопрос, тебе на него обстоятельно и вежливо ответят.
Еврейский форум- задал вопрос, тебе зададут встречный вопрос.
Русский форум - задал вопрос, тебе ещё 2 часа будут объяснять какой ты мудак!
Вложения
zadanyije i simuljator.rar
(967.41 КБ) 180 скачиваний
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Arpad , ну можешь начинать ощущать себя мудаком . :)))
Тебе дали код который делает именно то что тебе надо . SPI настроен на 8ми битные посылки
Но тебе приспичило паузу между посылками . Делай задержку.

Код: Выделить всё

   while (1)
    {
    SPI_Send(0xAA);
    Delay_mS(1);
    SPI_Send(0x55);
          Delay_mS(10);    
   }


Вот только можешь внятно и доходчиво - зачем тебе эта пауза ?

Если это для дисплеев от сотовых - там это на хрен не нужно .
На ST7735R, то что на скрине , там CS вообще не дергаю, тем более что там 16 битные посылки .
Выше кусок кода из инита nokia 1200 - так же льется потоком.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: STM32 новичку в ARM что к чему

Сообщение HHIMERA »

Arpad писал(а):был задан вопрос - переход из SPI2 16-bit на SPI2 8-bit
Ну что сказать... Русский форум, как всегда, рулит... на нём самые точные и правильные ответы...
Приведите свой код для SPI2 16-bit... потому что в ваших весёлых картинках чёрт ногу сломит, то один режим, то другой... а вопрос прозвучал так... что трёхголовый змей и то выразился бы конкретнее...

Там разница в определении регистра данных для SPI 8-bit... по умолчанию SPIx->DR - 16-bit...
#define SPI2_DR_8b (*(__IO uint8_t *)((uint32_t)SPI2 + 0x0C))

потому что иначе будет бред-передача... и...
SPI2->CR2 = 0x700; // 8 bit

потому что при попытке затолкать в SPIх->CR2 что-то левое автоматом происходит переход в режим передачи 16-bit...

И ещё... "непрерывно" в STM32... это передача по SPI без зазоров между передаваемыми данными... выражайте свои мысли и хотелки точнее...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

HHIMERA, скрин ему выложи, на слова не верит . :)))
Обязательно с паузой ... :)))
У меня все на работе. :oops:
Аватара пользователя
Arpad
Прорезались зубы
Сообщения: 219
Зарегистрирован: Вт ноя 13, 2012 12:49:16
Откуда: UA

Re: STM32 новичку в ARM что к чему

Сообщение Arpad »

dosikus писал(а):HHIMERA, скрин ему выложи, на слова не верит . :)))
Обязательно с паузой ... :)))
У меня все на работе. :oops:
вопрос - переход из SPI2 16-bit на SPI2 8-bit
Вложения
DSC03321.JPG
(35.7 КБ) 440 скачиваний
DSC03320.JPG
(29.52 КБ) 439 скачиваний
F3_spi16rb.rar
(425.11 КБ) 221 скачивание
Ответить

Вернуться в «ARM»