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

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

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

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

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

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


 
Опции темы
Непрочитано 13.09.2011, 15:36  
k000858
Временная регистрация
 
Регистрация: 14.11.2008
Сообщений: 68
Сказал спасибо: 3
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
k000858 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Кто нибудь юзал EEPROM emulation в стм32 ?
киньте примерчик сишного кода, плиз
Реклама:
k000858 вне форума  
Непрочитано 14.09.2011, 09:20  
uk8amk
Вид на жительство
 
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
uk8amk на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от DimanVIP Посмотреть сообщение
DMA_Config.DMA_M2M = DMA_M2M_Enable;
По-моему M2M здесь совсем не нужем.
uk8amk вне форума  
Непрочитано 14.09.2011, 14:56  
DimanVIP
Временная регистрация
 
Регистрация: 20.05.2010
Сообщений: 64
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DimanVIP на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от uk8amk Посмотреть сообщение
По-моему M2M здесь совсем не нужем.
Без этого светик своей ярости не меняет.

З.Ы. сейчас все переписал без использования библиотек стандартной периферии - все работает как надо.
Буду методом глубокого анализа вычислять в чем была трабла.
DimanVIP вне форума  
Непрочитано 14.09.2011, 16:09  
DimanVIP
Временная регистрация
 
Регистрация: 20.05.2010
Сообщений: 64
Сказал спасибо: 8
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DimanVIP на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Вобщем, рабочий код выглядит так:
Код:
#include ‹stm32l1xx.h›
#include ‹stm32l1xx_gpio.h›
#include ‹stm32l1xx_rcc.h›
#include ‹stm32l1xx_tim.h›
#include ‹stm32l1xx_dma.h›

const uint8_t dma_buffer[6] = { 20, 30, 40, 50, 60, 70 };

void mcu_dma_channel1_init(void)
{
  DMA_InitTypeDef DMA_Config;
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
  DMA_DeInit(DMA1_Channel1);		   
  DMA_Config.DMA_PeripheralBaseAddr =	(uint32_t)&TIM4-›CCR1; 
  DMA_Config.DMA_MemoryBaseAddr = (uint32_t)&dma_buffer; 
  DMA_Config.DMA_DIR = DMA_DIR_PeripheralDST;
  DMA_Config.DMA_BufferSize = 6;
  DMA_Config.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  DMA_Config.DMA_MemoryInc = DMA_MemoryInc_Enable;
  DMA_Config.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
  DMA_Config.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
  DMA_Config.DMA_Mode = DMA_Mode_Circular;
  DMA_Config.DMA_Priority = DMA_Priority_Low;
  DMA_Config.DMA_M2M = DMA_M2M_Disable;
  DMA_Init(DMA1_Channel1, &DMA_Config);
  DMA_Cmd(DMA1_Channel1, ENABLE);
}

void mcu_tim4_init(void)
{	  	
  TIM_TimeBaseInitTypeDef TIM_BaseConfig;	  
  TIM_OCInitTypeDef TIM_OCConfig;			  
  GPIO_InitTypeDef GPIO_Config;
 
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
  RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOBEN, ENABLE);
  
  GPIO_Config.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_Config.GPIO_Mode = GPIO_Mode_AF;
  GPIO_Config.GPIO_OType = GPIO_OType_PP;
  GPIO_Config.GPIO_Speed = GPIO_Speed_40MHz;
  GPIO_Init(GPIOB, &GPIO_Config);
  GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_TIM  4);
  GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_TIM  4);

  TIM_BaseConfig.TIM_Prescaler = 10 - 1;	 
  TIM_BaseConfig.TIM_Period = 0xff;
  TIM_BaseConfig.TIM_ClockDivision = 0;
  TIM_BaseConfig.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM4, &TIM_BaseConfig);

  /* Channel1 Configuration in PWM mode */
  TIM_OCConfig.TIM_OCMode = TIM_OCMode_PWM1;  
  TIM_OCConfig.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCConfig.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OCConfig.TIM_Pulse = 1;
  TIM_OC1Init(TIM4, &TIM_OCConfig); 

  /* Enable TIM2 DMA interface */
  TIM_DMACmd(TIM4, TIM_DMA_CC1, ENABLE);
  TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
  TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);
  TIM_ARRPreloadConfig(TIM4, ENABLE);
  TIM_Cmd(TIM4, ENABLE);
}

int main(void)
{
  mcu_tim4_init();
  mcu_dma_channel1_init();
  while (1)
    {
    }
}
Изменения коснулись:
const uint8_t dma_buffer[6] = { 20, 30, 40, 50, 60, 70 };
DMA_Config.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
DMA_Config.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_Config.DMA_M2M = DMA_M2M_Disable;

Маловероятно что повлияло:
DMA_Config.DMA_Priority = DMA_Priority_Low;

На выходе имеем:
DimanVIP вне форума  
Непрочитано 14.09.2011, 16:27  
Alexey_1811
Частый гость
 
Аватар для Alexey_1811
 
Регистрация: 10.11.2006
Адрес: Київ
Сообщений: 34
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alexey_1811 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Подскажите пожалуйста, реально ли сделать на STM32F10X генерацию синуса ШИМом, частоту синуса нужно изменять в процессе работы в пределах 20Гц-200кГц с шагом в 1Гц?
Синусоиды нужно 2 и они должны бить сдвинуты одна относительно другой.
Заранее ответившим спасибо!!!
Alexey_1811 вне форума  
Непрочитано 14.09.2011, 16:45  
tanq
Гражданин KAZUS.RU
 
Регистрация: 12.10.2009
Сообщений: 576
Сказал спасибо: 30
Сказали Спасибо 138 раз(а) в 110 сообщении(ях)
tanq на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Alexey_1811,
Что понимается под словом "реально"? STM может вычислять синус в реальном времени (по таблице) до ~300 000 раз в секунду (при F_CPU=24 МГц), ограничение будет только по разрядности самого ШИМа, т.к. она ограничивается частотой тактирования таймеров.

Я делал драйвер для двигателя, там было 3 синуса и частота ШИМ 100 кГц - все прекрасно работало. От частоты самого синуса объем вычислений не зависит.
tanq вне форума  
Непрочитано 14.09.2011, 16:49  
Alexey_1811
Частый гость
 
Аватар для Alexey_1811
 
Регистрация: 10.11.2006
Адрес: Київ
Сообщений: 34
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alexey_1811 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от tanq Посмотреть сообщение
tanq,
Я делал драйвер для двигателя, там было 3 синуса и частота ШИМ 100 кГц - все прекрасно работало.
Не поделитесь исходником?
Ну или частью программы где реализована процедура генерации?

Последний раз редактировалось Alexey_1811; 14.09.2011 в 17:54.
Alexey_1811 вне форума  
Непрочитано 16.09.2011, 18:39  
tanq
Гражданин KAZUS.RU
 
Регистрация: 12.10.2009
Сообщений: 576
Сказал спасибо: 30
Сказали Спасибо 138 раз(а) в 110 сообщении(ях)
tanq на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Alexey_1811,

Вот весьма упрощенный вариант (без манипуляций с амплитудой):

unsigned long time, time_step;
short phase1, phase2, phase3;
short sin512[512] = {........};

void timer_irq(void)
{
time += time_step;
phase1 = sin512[time››23];
phase2 = sin512[(time+0x55555555)››23];
phase3 = sin512[(time+0xAAAAAAA)››23];
}

Меня всегда дико забавляет как призводители впаривают высокопроизводительные DSP для управления мотором. Выше приведенный код, видимо, настолько крут, что требует векторного процессора на 100 МГц
tanq вне форума  
Сказали "Спасибо" tanq
Alexey_1811 (16.09.2011)
Непрочитано 16.09.2011, 21:57  
big.chupakabra
Частый гость
 
Регистрация: 03.12.2009
Сообщений: 27
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
big.chupakabra на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от tanq Посмотреть сообщение
Alexey_1811,
Меня всегда дико забавляет как призводители впаривают высокопроизводительные DSP для управления мотором. Выше приведенный код, видимо, настолько крут, что требует векторного процессора на 100 МГц
Выдача трехфазного синуса и управление двигателем - разные вещи. Посмотрите любую апноту по векторному управлению движком и оцените обьем вычислений сами
big.chupakabra вне форума  
Непрочитано 16.09.2011, 22:22  
Ar-Gen-Tum
Почётный гражданин KAZUS.RU
 
Регистрация: 19.10.2010
Сообщений: 1,752
Сказал спасибо: 158
Сказали Спасибо 640 раз(а) в 364 сообщении(ях)
Ar-Gen-Tum на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от big.chupakabra Посмотреть сообщение
Посмотрите любую апноту по векторному управлению движком и оцените обьем вычислений сами
Хм. А у движка, кроме скорости вращения (момента вращения), еще есть чем управлять?
Просто интересно.
А зачем векторное управление скоростью вращения? Похоже очередная игра в терминологию.
У меня в монтировке движки управляются довольно простеньким PIC-ом.

Последний раз редактировалось Ar-Gen-Tum; 16.09.2011 в 22:29.
Ar-Gen-Tum вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


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


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