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

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


Знающий
****

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



QUOTE (Метценгерштейн @ Feb 15 2013, 16:51) *
CODE
  SPI1->CR1 |= SPI_CR1_BR; //Baud rate = Fpclk/256
}

строка ни о чем не говорит?
36000000/256 = 140,625 кГц
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 16 2013, 16:48
Сообщение #17


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

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



здесь я уже все комбинации перепробовал. Это одна из них.

при настройке в утилите тактовой частоты PCLK2 на 8 МГц через делитель APB2 prescaler, при этом сама частота шины = 32 МГц, вне зависимости от кварца или RC, то все работает.
Так же поднимал частоту системную до 12 МГц- все работало.
Получается, что наш SPI не хочет тактироваться от частот выше 12 МГц (а при частоте шины 32 МГц больше 8 МГц и не выставить)

2-й SPI не пробовал. По-любому другой проц брать надо.
Go to the top of the page
 
+Quote Post
dac
сообщение Feb 17 2013, 07:46
Сообщение #18


Знающий
****

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



QUOTE (Метценгерштейн @ Feb 16 2013, 22:48) *
здесь я уже все комбинации перепробовал. Это одна из них.

при настройке в утилите тактовой частоты PCLK2 на 8 МГц через делитель APB2 prescaler, при этом сама частота шины = 32 МГц, вне зависимости от кварца или RC, то все работает.
Так же поднимал частоту системную до 12 МГц- все работало.
Получается, что наш SPI не хочет тактироваться от частот выше 12 МГц (а при частоте шины 32 МГц больше 8 МГц и не выставить)

2-й SPI не пробовал. По-любому другой проц брать надо.

так больше 2Мгц как в первом посте, или больше 8Мгц не работает?
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 17 2013, 08:45
Сообщение #19


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

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



8 МГц- это частота PCLK2 - при ней может работать только до частоты клоков 2 МГц или ниже. Если делителем не выставлять PCLK2, то на нее идет 32 МГц- вообще не работает.

Скажите, какой код написать для проверки, что где выставить и я это проверю.

Я замыкаю МИСО на МОСИ, получаю эхо. Должно же так работать тоже.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Feb 17 2013, 09:06
Сообщение #20


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(dimka76 @ Feb 15 2013, 12:19) *
Все ARMы и Cortexы шьются по UART или USB встроееными загрузчиками.


Не правда. Сталкивался с такими, которые можно прошить только по SWD - например Kinetis от Freescale. В документации ни слова не упоминается про наличие встроенного загрузчика.
Go to the top of the page
 
+Quote Post
dac
сообщение Feb 17 2013, 10:31
Сообщение #21


Знающий
****

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



Цитата(Метценгерштейн @ Feb 17 2013, 14:45) *
8 МГц- это частота PCLK2 - при ней может работать только до частоты клоков 2 МГц или ниже. Если делителем не выставлять PCLK2, то на нее идет 32 МГц- вообще не работает.

Скажите, какой код написать для проверки, что где выставить и я это проверю.

Я замыкаю МИСО на МОСИ, получаю эхо. Должно же так работать тоже.

для stm32L делал давно и сейчас проверить неначем, исходники тоже на работе, появлюсь там через пару недель.
для 103, 105, 107 при PCLK 32МГц все работало при делителе SPI 2 и 4.

для приведенного ниже кода PCLK 36МГц
Update - код из рабочего проекта на stm32f105V, соответсвенно SPICLK=18МГц. работает с AT25DF321
CODE
void sFLASH_LowLevel_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

/*!< sFLASH_SPI_CS_GPIO, sFLASH_SPI_MOSI_GPIO, sFLASH_SPI_MISO_GPIO
and sFLASH_SPI_SCK_GPIO Periph clock enable */
RCC_APB2PeriphClockCmd(sFLASH_CS_GPIO_CLK | sFLASH_SPI_MOSI_GPIO_CLK |
sFLASH_SPI_MISO_GPIO_CLK | sFLASH_SPI_SCK_GPIO_CLK, ENABLE);

/*!< sFLASH_SPI Periph clock enable */
if (sFLASH_SPI == SPI1)
RCC_APB2PeriphClockCmd(sFLASH_SPI_CLK, ENABLE);
else
RCC_APB1PeriphClockCmd(sFLASH_SPI_CLK, ENABLE);
/*!< Configure sFLASH_SPI pins: SCK */
GPIO_InitStructure.GPIO_Pin = sFLASH_SPI_SCK_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(sFLASH_SPI_SCK_GPIO_PORT, &GPIO_InitStructure);

/*!< Configure sFLASH_SPI pins: MOSI */
GPIO_InitStructure.GPIO_Pin = sFLASH_SPI_MOSI_PIN;
GPIO_Init(sFLASH_SPI_MOSI_GPIO_PORT, &GPIO_InitStructure);

/*!< Configure sFLASH_SPI pins: MISO */
GPIO_InitStructure.GPIO_Pin = sFLASH_SPI_MISO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(sFLASH_SPI_MISO_GPIO_PORT, &GPIO_InitStructure);

/*!< Configure sFLASH_CS_PIN pin: sFLASH Card CS pin */
GPIO_InitStructure.GPIO_Pin = sFLASH_CS_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(sFLASH_CS_GPIO_PORT, &GPIO_InitStructure);
}

unsigned char sFLASH_SendByte(unsigned char byte)
{
/*!< Loop while DR register in not emplty */
while (SPI_I2S_GetFlagStatus(sFLASH_SPI, SPI_I2S_FLAG_TXE) == RESET);

/*!< Send byte through the SPI1 peripheral */
SPI_I2S_SendData(sFLASH_SPI, byte);

/*!< Wait to receive a byte */
while (SPI_I2S_GetFlagStatus(sFLASH_SPI, SPI_I2S_FLAG_RXNE) == RESET);

/*!< Return the byte read from the SPI bus */
return SPI_I2S_ReceiveData(sFLASH_SPI);
}



void sFLASH_Init(void)
{
SPI_InitTypeDef SPI_InitStructure;

sFLASH_LowLevel_Init();

/*!< Deselect the FLASH: Chip Select high */
sFLASH_CS_HIGH();

/*!< SPI configuration */
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) || defined (STM32F10X_CL)
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
#else
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
#endif

SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(sFLASH_SPI, &SPI_InitStructure);

/*!< Enable the sFLASH_SPI */
SPI_Cmd(sFLASH_SPI, ENABLE);
}


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


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

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



я не вижу никаких особых отличий, кроме того, что я не через структуру все сделал- плохой тон)

если замыкать МИСО на МОСИ, должен же эхо корректно получать?
Go to the top of the page
 
+Quote Post
dac
сообщение Feb 17 2013, 11:25
Сообщение #23


Знающий
****

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



QUOTE (Метценгерштейн @ Feb 17 2013, 17:13) *
я не вижу никаких особых отличий, кроме того, что я не через структуру все сделал- плохой тон)

если замыкать МИСО на МОСИ, должен же эхо корректно получать?

а не особые отличия какие?
должен. осциллографом шину смотрели?
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 17 2013, 13:58
Сообщение #24


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

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



смотрел, конечно. Там, что тему с проблемой приводил- мне W5100 wiznet выдает число 13, а я своим STM32 не могу его прочитать. Начал копать и отрыл, что на скоростях больше 2 МБит глючит.

Отличия- что через структуру. Я и так тоже делал.
Go to the top of the page
 
+Quote Post
dac
сообщение Feb 17 2013, 15:12
Сообщение #25


Знающий
****

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



QUOTE (Метценгерштейн @ Feb 17 2013, 19:58) *
смотрел, конечно. Там, что тему с проблемой приводил- мне W5100 wiznet выдает число 13, а я своим STM32 не могу его прочитать. Начал копать и отрыл, что на скоростях больше 2 МБит глючит.

Отличия- что через структуру. Я и так тоже делал.

в той теме не совсем понятно, поэтому спрошу
1. эхо на высоких частотах работает?
2. осциллограммы сняты, лог. анализатором, проведите еще снятые осциллографом в нормальном аналоговом режиме
3. попробуйте в 16-битном режиме поработать, я когда с ads7843 разбирался, она у меня в 8-битном тоже отказывалась нормально работать, причину чесно говоря не выяснил, да и лень было sad.gif
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 17 2013, 17:15
Сообщение #26


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

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



эхо только на низких частотах. На высоких глючит.
да фронты не завалены были. смотрел тоже. Что именно посмотреть?
а 16 бит и 8 бит режимы чем отличаются?
Go to the top of the page
 
+Quote Post
dac
сообщение Feb 18 2013, 06:56
Сообщение #27


Знающий
****

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



QUOTE (Метценгерштейн @ Feb 17 2013, 23:15) *
да фронты не завалены были. смотрел тоже. Что именно посмотреть?
а 16 бит и 8 бит режимы чем отличаются?

осциллограмму SCL и MISO в аналоговом режиме.
передаются 8 и 16 бит соответсвенно sm.gif
в глючном режиме как отличаются принятый и переданный байты?
попробуйте сделать задержку несколько тактов после выставления флага RNE - ощущение что не успеват записаться последний бит.
Go to the top of the page
 
+Quote Post
muravei
сообщение Feb 18 2013, 08:13
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(Метценгерштейн @ Feb 17 2013, 20:15) *
да фронты не завалены были.

Может, осцил "улучшителем" работает , выдает желаемое за действительное.
Я смотрел С1-65(со щупом) , так выглядело все довольно мерзко.
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Feb 18 2013, 08:23
Сообщение #29


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

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



потихоньку проясняется

это SCK

тут уже начали ошибки сыпаться. Выясняю, что еще сидит на данном пине. Пин на плате в данный момент ни к чему не подпаян. (штырек имеется ввиду)

Сообщение отредактировал Метценгерштейн - Feb 18 2013, 08:25
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 18 2013, 08:26
Сообщение #30


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Метценгерштейн @ Feb 18 2013, 11:23) *
тут уже начали ошибки сыпаться. Выясняю, что еще сидит на данном пине. Пин в воздухе на плате в данный момент

Пайки проверьте, около площадок, дорожки тоже могут сцепиться тоненькими волосками в самой печатной плате.
Go to the top of the page
 
+Quote Post

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

 


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


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