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

 
 
33 страниц V  « < 23 24 25 26 27 > »   
Closed TopicStart new topic
> STM32 – вопросы – проблемы - решения.
AHTOXA
сообщение Feb 2 2012, 16:50
Сообщение #361


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

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



Цитата(Сергей Борщ @ Feb 2 2012, 20:26) *
Эти писатели документации просто вредители какие-то, если после их примеров получается такой код как ваш. А вы ленитесь осмыслить их пример, делаете тупо методом "цельнотянутости".

Документация - это ещё цветочки по сравнению с библиотекойsm.gif
Вот что там:
Код
  /* Determine the integer part */
  if ((USARTx->CR1 & CR1_OVER8_Set) != 0)
  {
    /* Integer part computing in case Oversampling mode is 8 Samples */
    integerdivider = ((25 * apbclock) / (2 * (USART_InitStruct->USART_BaudRate)));    
  }
  else /* if ((USARTx->CR1 & CR1_OVER8_Set) == 0) */
  {
    /* Integer part computing in case Oversampling mode is 16 Samples */
    integerdivider = ((25 * apbclock) / (4 * (USART_InitStruct->USART_BaudRate)));    
  }
  tmpreg = (integerdivider / 100) << 4;

  /* Determine the fractional part */
  fractionaldivider = integerdivider - (100 * (tmpreg >> 4));

  /* Implement the fractional part in the register */
  if ((USARTx->CR1 & CR1_OVER8_Set) != 0)
  {
    tmpreg |= ((((fractionaldivider * 8) + 50) / 100)) & ((uint8_t)0x07);
  }
  else /* if ((USARTx->CR1 & CR1_OVER8_Set) == 0) */
  {
    tmpreg |= ((((fractionaldivider * 16) + 50) / 100)) & ((uint8_t)0x0F);
  }
  
  /* Write to USART BRR */
  USARTx->BRR = (uint16_t)tmpreg;

Я даже табличку в экселе составил, пытаясь найти скрытый смысл этих манипуляций. Но так и не смогsm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
scifi
сообщение Feb 2 2012, 17:28
Сообщение #362


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(AHTOXA @ Feb 2 2012, 20:50) *
Документация - это ещё цветочки по сравнению с библиотекойsm.gif
Вот что там:

Просто супер! Я снова порадовался, что не использую эту "библиотеку".
В принципе логику проследить можно. Просто всё это уместилось бы строчки в 3 кода, если бы автор кода ненадолго отвлёкся от нажимания кнопок и включил моск :-)
Go to the top of the page
 
+Quote Post
x83
сообщение Feb 3 2012, 05:13
Сообщение #363


Участник
*

Группа: Свой
Сообщений: 67
Регистрация: 11-07-07
Из: Екб
Пользователь №: 29 052



Добрый день всем.


Есть STM32F407. Пытаюсь запустить таймер TIM1 в режиме счетчика квадратурного сигнала от енкодера. Но как-то успехов особых пока нет.
На реальный квадратурный сигнал никакой реакции не происходит. Если настраивать таймер просто как счетный, то все работает.

Кто-нибудь уже запускал таймер в данном режиме? поделитесь опытом какие тут подводные камни.

А вообще задача стоит чтобы по входному квадратурному сигналу определять направление, кол-во импульсов, и период следования импульсов.


Go to the top of the page
 
+Quote Post
adnega
сообщение Feb 3 2012, 05:22
Сообщение #364


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(x83 @ Feb 3 2012, 09:13) *
Кто-нибудь уже запускал таймер в данном режиме? поделитесь опытом какие тут подводные камни.


Запускал на 103-их. Никаких камней под водой не обнаружено.
До исходников могу добраться только вечером.
Go to the top of the page
 
+Quote Post
smk
сообщение Feb 3 2012, 09:41
Сообщение #365


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Вопрос: Можно ли использовать ST-LINK при отладке других АРМ-контроллеров (не ST)?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 3 2012, 09:57
Сообщение #366


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

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



Цитата(AHTOXA @ Feb 2 2012, 19:50) *
Я даже табличку в экселе составил, пытаясь найти скрытый смысл этих манипуляций. Но так и не смогsm.gif
Если мне не изменяет память, то "не все уарты одинаковы", по смутным воспоминаниям некоторые уарты или мб лишь один из всех тактируютя не той частотой что и все остальные (PCLK1 либо PCLK2).
И это библиотекой корректно учитывается.
Точно, глянул TRM раздел 27.3.4 Fractional baud rate generation:
fCK - Input clock to the peripheral (PCLK1 for USART2, 3, 4, 5 or PCLK2 for USART1)


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
x83
сообщение Feb 3 2012, 10:14
Сообщение #367


Участник
*

Группа: Свой
Сообщений: 67
Регистрация: 11-07-07
Из: Екб
Пользователь №: 29 052



Цитата(adnega @ Feb 3 2012, 10:22) *
Запускал на 103-их. Никаких камней под водой не обнаружено.
До исходников могу добраться только вечером.


Спасибо, разобрался sm.gif камней действительно никаких. Сам дурак laughing.gif - на вход подавал синфазный сигнал, потому и результат не коррелировал с реальностью.
Go to the top of the page
 
+Quote Post
=F8=
сообщение Feb 3 2012, 10:25
Сообщение #368


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Вопрос: как STM32F103 без внешнего супервизора живут?
Go to the top of the page
 
+Quote Post
scifi
сообщение Feb 3 2012, 10:37
Сообщение #369


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(=F8= @ Feb 3 2012, 14:25) *
Вопрос: как STM32F103 без внешнего супервизора живут?

Дык у них специально power-up/power-down reset сделан так, чтобы внешний супервизор не требовался. Я его никогда не ставил, и проблем не было. Но в условиях помех не тестировал.
Go to the top of the page
 
+Quote Post
ReRayne
сообщение Feb 3 2012, 12:37
Сообщение #370


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 12-10-11
Из: Москва
Пользователь №: 67 699



Возникла проблема:
Отладочная плата STARTERKIT SK-STM32F217.
Программатор JetLink8/Ultra, драйвер 4.40d.
Среда разработки: Keil 4.23.
На плате крутился FreeRTOS 7.1, и очень долгое время все было прекрасно.
Плата стартует бутлоадером по адресу 0x8000000, и перекидывает нас на адрес 0x8040000, откуда начинает выполнялся основная прошивка.
Но в какой-то момент при открытии сначала слетели все настройки программатора.
Ну а потом вообще начался цирк с конями:
1) прошивка с программатором стартует через раз;
2) начало появляться странное окошко, которого раньше не было (J-Link reprogramming flash), которое постоянно перезаписывает чистит сектора флеша на чипе;
3) в файле стартапа успешно инициализирует железо, но при этом в main не переходит, а выкидывается на адрес 0xFFFFFFFE;
4) временами все-таки вышвыривает меня в main и начинает дебажить, но в произвольный момент времени при пошаговой трассировке может просто намертво повиснуть в Trace:Running(перед этим обязательно появляется J-Link reprogramming flash).
5) во время все той же пошаговой трассироки может внезапно возникнуть инструкция в дизасемблере MOVS 0xFFFFFFFE и мы улетаем черт знает куда;
6) при попытке остановить улетевший в никуда процессор вываливает "Can't stop Cortex-M3";

Перерыла весь интернет, нигде ничего подобного не встречал, помогите =(((

Сообщение отредактировал ReRayne - Feb 3 2012, 12:39
Go to the top of the page
 
+Quote Post
mrcrook
сообщение Feb 3 2012, 20:04
Сообщение #371





Группа: Участник
Сообщений: 13
Регистрация: 31-01-12
Из: Новоуральск
Пользователь №: 69 990



Цитата(ReRayne @ Feb 3 2012, 18:37) *
Перерыла весь интернет, нигде ничего подобного не встречал, помогите =(((

так все таки "он" или "она"?) к сожалению больше ничем в твоей проблеме помочь не могу(

Очередная проблема. Имеем все тот же stm32f4 discovery, подключаем стандартную библиотеку SDIO, ну и тут сразу возникает несколько вопросов, как проверить инициализация прошла успешно или нет? И второй, я так думаю, что с первого раза ничего не получится как надо. Правильно ли я инициализировал SDIO? Повторюсь имеем stm32f4 discovery, среду разработки Atollic TRUEStudio, стандартную библиотеку stm32f4xx_sdio.

Сейчас имеем примерно следующий код
CODE
#include "stm32f4xx.h"
#include "stm32f4xx_sdio.h"

uint32_t PowerState;
uint32_t DataCounter;

void vSDIO_Init ( void ) {
GPIO_InitTypeDef GPIO_InitStructure;
SDIO_InitTypeDef SDIO_InitStructure;

/* GPIOC and GPIOD Periph clock enable */
RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD, ENABLE );
/* Enable the SDIO APB2 Clock */
RCC_APB2PeriphClockCmd( RCC_APB2Periph_SDIO, ENABLE );



/* Configure PC.12 pin: CLK pin */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIOC->BSRRL = GPIO_Pin_12;
GPIOC->BSRRH = GPIO_Pin_12;
GPIOC->BSRRL = GPIO_Pin_12;
GPIOC->BSRRH = GPIO_Pin_12;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_Init(GPIOC, &GPIO_InitStructure);


/* Configure PD.02 CMD line */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOD, &GPIO_InitStructure);

/* Configure PC.08, PC.09, PC.10, PC.11 pins: D0, D1, D2, D3 pins */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;
GPIO_Init(GPIOC, &GPIO_InitStructure);


GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_SDIO);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_SDIO);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_SDIO);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_SDIO);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource12, GPIO_AF_SDIO);
GPIO_PinAFConfig(GPIOD, GPIO_PinSource2, GPIO_AF_SDIO);


RCC_APB2PeriphResetCmd(RCC_APB2Periph_SDIO, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SDIO, DISABLE);

SDIO_InitStructure.SDIO_ClockDiv = 0x00;
SDIO_InitStructure.SDIO_ClockEdge = SDIO_ClockEdge_Rising;
SDIO_InitStructure.SDIO_ClockBypass = SDIO_ClockBypass_Enable;
SDIO_InitStructure.SDIO_ClockPowerSave = SDIO_ClockPowerSave_Disable;
SDIO_InitStructure.SDIO_BusWide = SDIO_BusWide_1b;
SDIO_InitStructure.SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable;
SDIO_Init(&SDIO_InitStructure);

/*!< Set Power State to ON */
SDIO_SetPowerState(SDIO_PowerState_ON);

/*!< Enable SDIO Clock */
SDIO_ClockCmd(ENABLE);
}

int main(void)
{
vSDIO_Init();


while (1) {
PowerState = SDIO_GetPowerState();
DataCounter = SDIO_GetDataCounter();
}
}

естественно в переменных "DataCounter", "PowerState " всегда 0x00 ну не запускается у меня ничего с первого раза laughing.gif

Сообщение отредактировал IgorKossak - Feb 3 2012, 20:30
Причина редактирования: [codebox]!!!
Go to the top of the page
 
+Quote Post
kan35
сообщение Feb 4 2012, 07:09
Сообщение #372


Знающий
****

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



А настроен ли и разрешен ли периферийный PLL на 48МГц?
Еще нюанс: вы разрешили bypass тактового сигнала, это значит что тактовый сигнал будет = частоте pll.
Go to the top of the page
 
+Quote Post
mrcrook
сообщение Feb 4 2012, 07:52
Сообщение #373





Группа: Участник
Сообщений: 13
Регистрация: 31-01-12
Из: Новоуральск
Пользователь №: 69 990



Цитата(kan35 @ Feb 4 2012, 13:09) *
А настроен ли и разрешен ли периферийный PLL на 48МГц?
Еще нюанс: вы разрешили bypass тактового сигнала, это значит что тактовый сигнал будет = частоте pll.

Насколько я понимаю тактирование описано в файле (system_stm32f4xx.c) и SDIO там 48MHz
CODE

*=============================================================================
* Supported STM32F4xx device revision | Rev A
*-----------------------------------------------------------------------------
* System Clock source | PLL (HSE)
*-----------------------------------------------------------------------------
* SYSCLK(Hz) | 168000000
*-----------------------------------------------------------------------------
* HCLK(Hz) | 168000000
*-----------------------------------------------------------------------------
* AHB Prescaler | 1
*-----------------------------------------------------------------------------
* APB1 Prescaler | 4
*-----------------------------------------------------------------------------
* APB2 Prescaler | 2
*-----------------------------------------------------------------------------
* HSE Frequency(Hz) | 8000000
*-----------------------------------------------------------------------------
* PLL_M | 8
*-----------------------------------------------------------------------------
* PLL_N | 336
*-----------------------------------------------------------------------------
* PLL_P | 2
*-----------------------------------------------------------------------------
* PLL_Q | 7
*-----------------------------------------------------------------------------
* PLLI2S_N | 258
*-----------------------------------------------------------------------------
* PLLI2S_R | 3
*-----------------------------------------------------------------------------
* I2S input clock(Hz) | 86000000
* |
* To achieve the following I2S config: |
* - Master clock output (MCKO): ON |
* - Frame wide : 16bit |
* - Audio sampling freq (KHz) : 48 |
* - Error % : 0.0186 |
* - Prescaler Odd factor (ODD): 0 |
* - Linear prescaler (DIV) : 2 |
*-----------------------------------------------------------------------------
* VDD(V) | 3.3
*-----------------------------------------------------------------------------
* Main regulator output voltage | Scale1 mode
*-----------------------------------------------------------------------------
* Flash Latency(WS) | 5
*-----------------------------------------------------------------------------
* Prefetch Buffer | OFF
*-----------------------------------------------------------------------------
* Instruction cache | ON
*-----------------------------------------------------------------------------
* Data cache | ON
*-----------------------------------------------------------------------------
* Require 48MHz for USB OTG FS, | Enabled
* SDIO and RNG clock |
*-----------------------------------------------------------------------------
*=============================================================================


Сообщение отредактировал mrcrook - Feb 4 2012, 07:53
Go to the top of the page
 
+Quote Post
wedmeed
сообщение Feb 6 2012, 04:20
Сообщение #374


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

Группа: Свой
Сообщений: 107
Регистрация: 5-04-11
Из: г.Саратов
Пользователь №: 64 137



Цитата(ReRayne @ Feb 3 2012, 16:37) *
4) временами все-таки вышвыривает меня в main и начинает дебажить

А если снять галочку "Run to main()" и пошагать по инициализации, что будет при переходе в мейн?
Цитата(ReRayne @ Feb 3 2012, 16:37) *
0xFFFFFFFE

Что-то сильно напоминает недопрожженную флешку, прочитать бы как-нибудь, что реально записалось после прошивки и сравнить с хексом, который кейл генерирует.
Go to the top of the page
 
+Quote Post
adnega
сообщение Feb 6 2012, 05:03
Сообщение #375


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



На той неделе "морозили" изделие на основе STM32F1xx.
При температуре ниже минус 65 работало без проблем (ниже не получалось).
Если нужны подробности, можно их развить.
Go to the top of the page
 
+Quote Post

33 страниц V  « < 23 24 25 26 27 > » 
Closed TopicStart new topic
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 


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


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