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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> посоветуйте STM32 cortex M3, частота шины максимальная, SPI чтобы стабильно держал обещанные 16 МГц
Метценгерштейн
сообщение Feb 14 2013, 21:32
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



А то на моей отладке, где проц STM32L152RBT6 SPI этот больше 2 МГц не держит, хотя обещано 16. Кто реально пользовался SPI и может порекомендовать модель проца, чтобы не глючило?

Сообщение отредактировал Метценгерштейн - Feb 15 2013, 15:45
Go to the top of the page
 
+Quote Post
HHIMERA
сообщение Feb 15 2013, 01:23
Сообщение #2


Местный
***

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



Что значит не держит??? Нонсенс!!!
Настройте как положено пины...
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 15 2013, 01:50
Сообщение #3


Гуру
******

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



Цитата(Метценгерштейн @ Feb 15 2013, 03:32) *
А то на моей отладке, где проц STM32L152RBT6 SPI этот больше 2 МГц не держит, хотя обещано 16. Кто реально пользовался SPI и может порекомендовать модель проца, чтобы не глючило?
LPC17xx, LPC177x - CPU up to 100/120Mhz, SSP - сам пользую на 25/30МГц (не глючит (почти wink.gif).
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 15 2013, 05:10
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



вот вам и нонсенс

да только STM32 освоил, лень на др. перелазить. Программатор где-то брать надо будет.

Сообщение отредактировал Метценгерштейн - Feb 15 2013, 05:11
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 15 2013, 05:49
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Метценгерштейн @ Feb 15 2013, 09:10) *
Программатор где-то брать надо будет.
Изначально стоило брать универсальный, например j-link.
А если у вас st-link на stm32, так его можно перешить версалуном....


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 15 2013, 06:19
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



буду иметь ввиду- не знал.

а по STM32- кто с SPI работал успешно?

Сообщение отредактировал Метценгерштейн - Feb 15 2013, 06:19
Go to the top of the page
 
+Quote Post
dac
сообщение Feb 15 2013, 08:02
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



QUOTE (Метценгерштейн @ Feb 15 2013, 12:19) *
буду иметь ввиду- не знал.

а по STM32- кто с SPI работал успешно?

а в чем проблема то? у меня работал stm32f105, 107, 205. частоты на память не помню, но не 2Мгц точно. точнее на 10х не мерил, неинтересно было, на 205 30Мгц при 120 тактовой - соответсвенно даташиту

приведите свой код инициализациии, включая инициализацию RCC, чтоб не гадать
Go to the top of the page
 
+Quote Post
dimka76
сообщение Feb 15 2013, 08:19
Сообщение #8


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(Метценгерштейн @ Feb 15 2013, 09:10) *
Программатор где-то брать надо будет.


Все ARMы и Cortexы шьются по UART или USB встроееными загрузчиками.


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Feb 15 2013, 08:41
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(Метценгерштейн @ Feb 15 2013, 10:19) *
буду иметь ввиду- не знал.

а по STM32- кто с SPI работал успешно?

Я, использовал в режиме без DMA. STM32F101 (36 МГц) - на 9 МГц точно работает... 18 МГц не помню точно, но но на SCK импульсы были.

Сообщение отредактировал Genadi Zawidowski - Feb 15 2013, 08:44
Go to the top of the page
 
+Quote Post
kan35
сообщение Feb 15 2013, 09:56
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



На STM32F107 запускал на 18М - нет проблем ( и по DMA работал без нареканий и программно). Кстати, в STM32F4 - SPI 40МГц.
Go to the top of the page
 
+Quote Post
VAI
сообщение Feb 15 2013, 10:15
Сообщение #11


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Если Вы используете библиотеку CMSIS:
У меня SPI в STM32F205 нормально работает. Компилю кейлом. При инициализации я использую библиотеку CMSIS.
В начале работы с проектом столкнулся с несоответствием скоростей USART ожидаемым.
В файле stm32f2xx.h есть строки
Код
#if !defined  (HSE_VALUE)
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */

Или подправьте там или вставьте в проект глобальный дефайн, чтоб HSE_VALUE стала равняться частоте вашего кварца. Из этой константы клоки высчитываются.

Цитата
Программатор где-то брать надо будет
купите самый дешёвый STM32___Discovery и будет Вам ST-Link.


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 15 2013, 10:51
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



так я и купил STM32 -Discovery плату.

Код
#define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz*/

внешний кварц как раз 8 МГц. Там частота шины всего 32 Мгц.

вот код
CODE
#include "stm32l1xx.h"
#include "USART1.h"
#include "stm32l1xx_gpio.h"

uint8_t temp, send_data = 0x01;

//Инициализация GPIO
void gpio_init()
{
RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN; //Тактирование портов A, B
//Линини SPI1 (Master)
//PA12(MOSI), PA11(MISO), PA5(SCK), PA4(NSS) - AF, Push-Pull, AF5(SPI1)
GPIOA->MODER |= GPIO_MODER_MODER12_1 | GPIO_MODER_MODER11_1 | GPIO_MODER_MODER5_1 | GPIO_MODER_MODER4_1; //Alternate function
GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_12 | GPIO_OTYPER_OT_11 | GPIO_OTYPER_OT_5 | GPIO_OTYPER_OT_4); //Push-Pull
GPIOA->AFR[1] |= (5<<16 | 5<<12); //PA12 = AF5, PA11 = AF5
GPIOA->AFR[0] |= (5<<20 | 5<<16); //PA5 = AF5, PA4 = AF5



RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //настравиваем вывод порта PA8
GPIOA->MODER |= GPIO_MODER_MODER8_1;
GPIOA->OTYPER &= ~GPIO_OTYPER_OT_8;
GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR8;
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR8;
GPIOA->AFR[1] &= ~GPIO_AFRH_AFRH8;
RCC->CFGR &= ~RCC_CFGR_MCOPRE;

}
//Инициализация SPI1, SPI2
void spi_init()
{
/*Настройка SPI1 (Master)
8 бит данных, MSB передается первым, программный режим управления NSS,
вывод NSS (PA4) разрешено использовать в качестве выхода*/
RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; //Тактирование модуля SPI1
SPI1->CR1 |= SPI_CR1_BR; //Baud rate = Fpclk/256
SPI1->CR1 &= ~SPI_CR1_CPOL; //Полярность тактового сигнала
SPI1->CR1 &= ~SPI_CR1_CPHA; //Фаза тактового сигнала
SPI1->CR1 &= ~SPI_CR1_DFF; //8 бит данных
SPI1->CR1 &= ~SPI_CR1_LSBFIRST; //MSB передается первым
SPI1->CR1 |= SPI_CR1_SSM; //Программный режим NSS
SPI1->CR1 |= SPI_CR1_SSI; //Аналогично состоянию, когда на входе NSS высокий уровень
SPI1->CR2 |= SPI_CR2_SSOE; //Вывод NSS - выход управления slave select
SPI1->CR1 |= SPI_CR1_MSTR; //Режим Master
SPI1->CR1 |= SPI_CR1_SPE; //Включаем SPI1

}

int main()
{
Init_USART1();
gpio_init(); //Вызов функции инициализации портов
spi_init(); //Вызов функции инициализации модулей SPI

RCC->CFGR |= RCC_CFGR_MCO_SYSCLK; //вывод на PA8 SYSCLK

for ( uint8_t data =0; data <10; data ++)
{
// SPI1->DR = data; //Пишем в буфер передатчика SPI1. После этого стартует обмен данными
// while(!(SPI1->SR & SPI_SR_RXNE)); //Ожидаем окончания приема данных модулем SPI1 (RXNE =1 - приемный буфер содержит данные)
// temp = SPI1->DR;//Считываем данные из приемного буфера SPI1. При этой операции происходит очистка буфера и сброс флага RXNE
//
// Usart1_Send_Byte_HEX (temp);
// Usart1_Send_String ("\r\n");

Usart1_Send_Byte_HEX (data);
Usart1_Send_String ("->");

while(!(SPI1->SR & SPI_SR_TXE))
;

SPI1->DR = data; //Пишем в буфер передатчика SPI1. После этого стартует обмен данными
while(!(SPI1->SR & SPI_SR_RXNE)); //Ожидаем окончания приема данных модулем SPI1 (RXNE =1 - приемный буфер содержит данные)
temp = SPI1->DR;//Считываем данные из приемного буфера SPI1. При этой операции происходит очистка буфера и сброс флага RXNE

Usart1_Send_Byte_HEX (temp);
Usart1_Send_String ("\r\n");

}

for (;;)
{
}
}


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

пока что нравится 205-й

Сообщение отредактировал Метценгерштейн - Feb 15 2013, 12:36
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
PoReX
сообщение Feb 16 2013, 07:16
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518



STM32F207 с Атмеловской флешкой работает на 30MHz.

Цитата(Метценгерштейн @ Feb 15 2013, 14:51) *
так я и купил STM32 -Discovery плату.

Какую именно?


--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 16 2013, 07:58
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



такую
Go to the top of the page
 
+Quote Post
Flexz
сообщение Feb 16 2013, 09:41
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Был у нас проект как раз на L151, данные снимались с SPI-датчика и сливались в SPI-флешку. Процессор работал на своих полных 32МГц, флешка вроде бы 16, датчики медленнее, точно скорости не помню уже.. зато помню забавный момент - заменили кварц на вдвое более быстрый, а инициализацию PLL я исправить забыл sm.gif в итоге проц вполне успешно работал на частоте вдвое выше номинала.

PS а вы не пробовали работать по второму SPI? их же два в этих процах.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 07:13
Рейтинг@Mail.ru


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