Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 23.01.2014, 15:27  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Kiel 5.0 и его библиотеки (SPI)

Микроконтроллер STM32F415 Keil 5.0 . Пытаюсь запустить SPI2 с ихними библиотеками...... Не выходит каменный цветок. RTE_Device.h (Startup) все выставлено.
В Manage Run - Time Environment
Стоят галочки SPI в drivers и DMA в Device.

Debug ом (Эмуляцией) смотрю заходит в функции SPI2. Но на железе увы не работает....

Я только начал с STM разбираться, так что не пинайте.

Код:
переменные
extern ARM_DRIVER_SPI Driver_SPI2;
//ARM_DRIVER_SPI ARM_Driver_SPI2;
ARM_DRIVER_SPI *drv_info;
ARM_SPI_CAPABILITIES drv_capabilities;
ARM_DRV_VERSION version;

в майне
          GPIOB -›MODER|= 
          GPIO_MODER_MODER4_0 |
          GPIO_MODER_MODER5_0 |
					GPIO_MODER_MODER12_0 |
					GPIO_MODER_MODER13_0 |
					GPIO_MODER_MODER14_0 |
					GPIO_MODER_MODER15_0;    //
     
          GPIOB -›OSPEEDR |=
          GPIO_OSPEEDER_OSPEEDR4_1 |
          GPIO_OSPEEDER_OSPEEDR5_1 |
					GPIO_OSPEEDER_OSPEEDR12_1 | 
					GPIO_OSPEEDER_OSPEEDR13_1 | 
		      GPIO_OSPEEDER_OSPEEDR14_1 |
					GPIO_OSPEEDER_OSPEEDR15_1  ;  


drv_info = &Driver_SPI2;
drv_capabilities = drv_info-›GetCapabilities ();
version = drv_info-›GetVersion();
drv_info-›Initialize(NULL);
drv_info-›PowerControl(ARM_POWER_FULL);

while(1)
	{
		
		drv_info-›TransferByte(100);
	}
Реклама:
bass1981 вне форума  
Непрочитано 24.01.2014, 15:08  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Kiel 5.0 и его библиотеки (SPI)

Принт скрин с wizarda divice.h
Миниатюры:
Нажмите на изображение для увеличения
Название: Wizard.JPG
Просмотров: 59
Размер:	143.5 Кб
ID:	57863   Нажмите на изображение для увеличения
Название: Divece.JPG
Просмотров: 50
Размер:	161.4 Кб
ID:	57864  
bass1981 вне форума  
Непрочитано 24.01.2014, 15:27  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Kiel 5.0 и его библиотеки (SPI)

bass1981, Создай проект , как я раньше описывал,
с минимумом компонентов :
system, startup и хэдеры , но только без визарда .
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 24.01.2014, 15:51  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Kiel 5.0 и его библиотеки (SPI)

Сообщение от dosikus Посмотреть сообщение
bass1981, Создай проект , как я раньше описывал,
с минимумом компонентов :
system, startup и хэдеры , но только без визарда .
OK... Сейчас.....
bass1981 вне форума  
Непрочитано 24.01.2014, 20:15  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Kiel 5.0 и его библиотеки (SPI)

И так, плата все та же mini-M4 на STM32F415RG.
Смотрим в даташит - доступны 3 SPI в перемешку с 2мя I2S .
Далее в Table 9. Alternate function mappin
ищем где висит каждый SPI и заодно на какой AF, сверяя с доступными нам пинами платы.
Ну и первое что попало :
SPI1 PA4-PA7 AF5 .
Далее смотрим Figure 5. STM32F41x block diagram:
SPI1 тактируется от APB2 .
Далее:
2.2.24 Serial peripheral interface (SPI)
Цитата:
The STM32F41x feature up to three SPIs in slave and master modes in full-duplex and
simplex communication modes. SPI1 can communicate at up to 42 Mbits/s, SPI2 and SPI3
can communicate at up to 21 Mbit/s. The 3-bit prescaler gives 8 master mode frequencies
and the frame is configurable to 8 bits or 16bits. The hardware CRC generation/verification
supports basic SD Card/MMC modes. All SPIs can be served by the DMA controller.
The SPI interface can be configured to operate in TI mode for communications in master
mode and slave mode.
Теперь открываем Referense manual на F4 RM0090.
8.3.2 I/O pin multiplexer and mapping
• Peripheral alternate function
Цитата:
For the ADC and DAC, configure the desired I/O as analog in the GPIOx_MODER
register.
For other peripherals:
– Configure the desired I/O as an alternate function in the GPIOx_MODER register
– Select the type, pull-up/pull-down andoutput speed via the GPIOx_OTYPER,
GPIOx_PUPDR and GPIOx_OSPEEDERregisters, respectively
– Connect the I/O to the desired AFx inthe GPIOx_AFRL or GPIOx_AFRH register
Для ADC и DAC пины конфигурируются как аналоговые .
Для другое периферии :
- как альтернативная функция.
- пуллап,пулдаун и скорость добавлять по вкусу.
- выбрать соответствующую конфигурацию AFx в регистрах GPIOx_AFRL или GPIOx_AFRL.

И так пины PA5-PA7 конфигурируем как AF, без пуллап/пуддаун, скорость на данный момент роли не играет. Для этих пинов - выбираем AF5 .
Пин PA4 сделаем как выход с паш_пул, почему потом объясню.
Как все сие сделать разбирали в прошлый раз для UART.
https://kazus.ru/forums/showthread.php?t=106278
Как сделаешь, отпишись и код конфигурации пинов здесь выложи .
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 25.01.2014 в 10:55.
dosikus вне форума  
Сказали "Спасибо" dosikus
bass1981 (25.01.2014)
Непрочитано 24.01.2014, 21:01  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Kiel 5.0 и его библиотеки (SPI)

Код:
void SPI_Init(void)
{
	
	

	
	
	RCC-›AHB1ENR |=RCC_AHB1ENR_GPIOAEN;//Разрешаем тактирование порта А

GPIOA-›MODER |= GPIO_MODER_MODER4_1 |
									GPIO_MODER_MODER5_1 |
								 GPIO_MODER_MODER6_1 |
								  GPIO_MODER_MODER7_1 ; //PA4-7 - выход AF
	
	GPIOA-›OTYPER &= ~GPIO_OTYPER_OT_4; //PA4 - выход push-pull


	GPIOA-›OSPEEDR |= GPIO_OSPEEDER_OSPEEDR4 |
										GPIO_OSPEEDER_OSPEEDR5 |
										GPIO_OSPEEDER_OSPEEDR6 |
										GPIO_OSPEEDER_OSPEEDR7	; //PA4-7 - скорость 40 МГц
										
	GPIOA-›AFR[0] |= (5‹‹(4*5))|(5‹‹(4*6))|(5‹‹(4*7)); // AF5 for  
	

	
}
Както так.... Но чувствую много чего здесь не правильно.
bass1981 вне форума  
Непрочитано 25.01.2014, 01:01  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
Хорошо Re: Kiel 5.0 и его библиотеки (SPI)

Код:
#define Set_CS   GPIOA-›BSRRH  =  GPIO_BSRR_BS_4
#define UNSet_CS    GPIOA-›BSRRL  =  GPIO_BSRR_BS_4


void SPI_Init2(void)
{
	

   // Порт А AF на 5-6-7 ноге
   RCC-›AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
   GPIOA-›MODER |= GPIO_MODER_MODER4_0 | GPIO_MODER_MODER5_1 | GPIO_MODER_MODER6_1 | GPIO_MODER_MODER7_1;
   GPIOA-›OTYPER &= ~(GPIO_OTYPER_OT_4 | GPIO_OTYPER_OT_5 | GPIO_OTYPER_OT_7);
   GPIOA-›OTYPER |= GPIO_OTYPER_OT_6;
   GPIOA-›OSPEEDR |= GPIO_OSPEEDER_OSPEEDR4_0 | GPIO_OSPEEDER_OSPEEDR5_0 | GPIO_OSPEEDER_OSPEEDR6_0 | GPIO_OSPEEDER_OSPEEDR7_0;
   GPIOA-›PUPDR &= ~(GPIO_PUPDR_PUPDR5 | GPIO_PUPDR_PUPDR7);
   GPIOA-›PUPDR |= GPIO_BSRR_BS_4 | GPIO_PUPDR_PUPDR6_1;
   GPIOA-›AFR[0] |= (5 ‹‹ 4*5) | (5 ‹‹ 4*6) | (5 ‹‹ 4*7);
   

   
   RCC-›APB2ENR |= RCC_APB2ENR_SPI1EN;
   SPI1-›CR1 |= SPI_CR1_CPOL | SPI_CR1_CPHA;
   SPI1-›CR1 |= SPI_CR1_BR_1 | SPI_CR1_BR_0;
   SPI1-›CR1 |= SPI_CR1_SSM | SPI_CR1_SSI;
   SPI1-›CR1 |= SPI_CR1_SPE | SPI_CR1_MSTR;


		UNSet_CS    ;
   
   return;
	
}

int main(void) {
    
        SysTick_Config(SystemCoreClock / 1000);

        SPI_Init2();
        while (1)

        {
				Set_CS    ;
				SPI1-›DR = 123;
				//while (!(SPI1-›SR & SPI_SR_RXNE));
				//spi_res = SPI1-›DR;
				UNSet_CS    ;
Delay_mS(500);
         }
}
Все засыпаю. вроде конфигурацию портов выставил правильно...
bass1981 вне форума  
Непрочитано 25.01.2014, 01:02  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Kiel 5.0 и его библиотеки (SPI)

bass1981, Ок завтра проверю. Счас так же засыпаю.
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 25.01.2014, 12:28  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Kiel 5.0 и его библиотеки (SPI)

Извиняюсь за задержку.
И так :
Код:
 void SPI1_init(void)
  {
    
    RCC-›AHB1ENR |=RCC_AHB1ENR_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_0 |
                   GPIO_MODER_MODER5_1 | 
                   GPIO_MODER_MODER6_1 | 
                   GPIO_MODER_MODER7_1
                                      ;
    
    
   GPIOA-›OTYPER &= ~
                    (GPIO_OTYPER_OT_4 | 
                     GPIO_OTYPER_OT_5 | 
                     GPIO_OTYPER_OT_6 |
                     GPIO_OTYPER_OT_7
                                      );
   GPIOA-›OSPEEDR &= ~
                    (GPIO_OSPEEDER_OSPEEDR4 | 
                    GPIO_OSPEEDER_OSPEEDR5 | 
                    GPIO_OSPEEDER_OSPEEDR6 | 
                    GPIO_OSPEEDER_OSPEEDR7
                                              );
                                              
   GPIOA-›OSPEEDR |= 
                    GPIO_OSPEEDER_OSPEEDR4_0 | 
                    GPIO_OSPEEDER_OSPEEDR5_0 | 
                    GPIO_OSPEEDER_OSPEEDR6_0 | 
                    GPIO_OSPEEDER_OSPEEDR7_0
                                              ;
    
    
   GPIOA-›PUPDR &= ~
                     (GPIO_PUPDR_PUPDR4 | 
                      GPIO_PUPDR_PUPDR5 |
                      GPIO_PUPDR_PUPDR6 |
                      GPIO_PUPDR_PUPDR7);
   
   
   
   GPIOA-›AFR[0] |= (5 ‹‹ 4*5) | (5 ‹‹ 4*6) | (5 ‹‹ 4*7);
   

   
  
  	SPI1-›CR1 |= 
						 SPI_CR1_BR_0 |     // 
						 SPI_CR1_BR_1 | 
						 SPI_CR1_BR_2 | 
						 SPI_CR1_MSTR |
						 SPI_CR1_SSI 	|				 
						 SPI_CR1_SSM 
						 ;	
	
	SPI1-›CR1 |= SPI_CR1_SPE;	
	
    
    
    
  }


И комментарии:

При конфигурации пинов, да и регистров вообще, лучше не уповать на значения по умолчанию.
И так сначала трем биты потом ставим .
OD режим для SPI - не нужен . Pullup пока так же .


Код:
    
  uint8_t SPI1_send(uint8_t data)
    {
      SPI1-›DR=data;
      while(!(SPI1-›SR & SPI_SR_RXNE)){}
        
      return SPI1-›DR;	
      
    }


Передача и прием .
Сразу - это лишь демонстрационный вариант и вариант не лучший , передача одиночных байт .
С многими девайсами можно работать потоком не дергая CS .
Но, так как девайс не озвучен , пока тестим на "кошках"

Код:
  while(1)
  {
   CS_Off; 
   SPI1_send(0x55);
   CS_On;    
   Delay_mS(10);    
  
  }
Миниатюры:
Нажмите на изображение для увеличения
Название: spi1_1.png
Просмотров: 65
Размер:	65.4 Кб
ID:	57913  
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 25.01.2014 в 12:31.
dosikus вне форума  
Сказали "Спасибо" dosikus
bass1981 (25.01.2014)
Непрочитано 25.01.2014, 17:58  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Kiel 5.0 и его библиотеки (SPI)

dosikus тебе не за что извиняться, как смог так смог... Огромное спасибо что помогаешь.....
Все разобрался с ремепом. Попробую на других ножках запустить.
bass1981 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глушилка громкой музыки у соседей VVK Отвлекитесь, эмбеддеры! 355 10.01.2019 20:09
[Решено] Так, рассказик :)) Я долго ржал :)) DK Отвлекитесь, эмбеддеры! 7 31.08.2007 22:33


Часовой пояс GMT +4, время: 09:49.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot