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

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

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

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

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

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


 
Опции темы
Непрочитано 03.10.2011, 18:10  
FROG45
Частый гость
 
Регистрация: 11.05.2010
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
FROG45 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Dccharacter, контроллер прерываний является частью ядра Cortex-Mx и его описание логичнее искать в документации от ARMа. Есть такой документ DDI0337H_cortex_m3_r2p0_trm.pdf там и найдёте описание, целая глава посвящена. Любой арм на базе кортекса состоит как бы из двух частей собственно ядро, одинаковое для всех производителей и периферия которую разрабатывает каждый свою .Поэтому для освоения надо как минимум курить 3 документа сразу , описание ядра, референс мануал на линейку и даташит на конкретный камень .
Реклама:
FROG45 вне форума  
Непрочитано 03.10.2011, 18:21  
dccharacter
Временная регистрация
 
Регистрация: 28.03.2010
Сообщений: 56
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
dccharacter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от FROG45 Посмотреть сообщение
Dccharacter, контроллер прерываний является частью ядра Cortex-Mx и его описание логичнее искать в документации от ARMа. Есть такой документ DDI0337H_cortex_m3_r2p0_trm.pdf там и найдёте описание, целая глава посвящена. Любой арм на базе кортекса состоит как бы из двух частей собственно ядро, одинаковое для всех производителей и периферия которую разрабатывает каждый свою .Поэтому для освоения надо как минимум курить 3 документа сразу , описание ядра, референс мануал на линейку и даташит на конкретный камень .
4 страницы общей информации Смотрю документ Cortex M3 rev r2p0 Technical Reference Manual
dccharacter вне форума  
Непрочитано 03.10.2011, 18:41  
FROG45
Частый гость
 
Регистрация: 11.05.2010
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
FROG45 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

а что Вы хотите найти ? что в NVIC Вас интересует , в папке CMSIS , библиотеки стандартной периферии вроде все подробно расписано .
FROG45 вне форума  
Непрочитано 03.10.2011, 20:08  
EugenPKH
Прописка
 
Регистрация: 08.10.2009
Сообщений: 101
Сказал спасибо: 2
Сказали Спасибо 11 раз(а) в 10 сообщении(ях)
EugenPKH на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Подскажите как ст-link тот , тот что на дискавери , обновить до версии 2 . скачал утилиту он не видит его.
EugenPKH вне форума  
Непрочитано 03.10.2011, 20:56  
FROG45
Частый гость
 
Регистрация: 11.05.2010
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
FROG45 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

на плате дискавери линк стоит первый , до второго Вы его вряд ли сумеете обновить . закладка Target connect должен подключиться , апгрейд прошивки закладка st link firmware update обновляет до версии v1.J12.S0, тока что свой пробовал всё работает.
FROG45 вне форума  
Непрочитано 03.10.2011, 21:37  
dccharacter
Временная регистрация
 
Регистрация: 28.03.2010
Сообщений: 56
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
dccharacter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от FROG45 Посмотреть сообщение
а что Вы хотите найти ? что в NVIC Вас интересует , в папке CMSIS , библиотеки стандартной периферии вроде все подробно расписано .
Ну вот, например, пытаюсь понять разницу между interrupt flag и pending bit. Есть две пары функций:

TIM_GetITStatus — TIM_ClearITPendingBit
и
TIM_GetFlagStatus — TIM_ClearFlag

Например мой код (переключение светодиода по переполнению таймера) работает с использованием любой из пар. Логичного объяснения нигде не нашел. Более того, в программинг мануале написано, что флаги опускаются автоматом при переходе в хендлер, но на самом деле этого не происходит...
dccharacter вне форума  
Непрочитано 03.10.2011, 21:44  
EugenPKH
Прописка
 
Регистрация: 08.10.2009
Сообщений: 101
Сказал спасибо: 2
Сказали Спасибо 11 раз(а) в 10 сообщении(ях)
EugenPKH на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от FROG45 Посмотреть сообщение
на плате дискавери линк стоит первый , до второго Вы его вряд ли сумеете обновить . закладка Target connect должен подключиться , апгрейд прошивки закладка st link firmware update обновляет до версии v1.J12.S0, тока что свой пробовал всё работает.
В том то и дело , что у меня новый кеил а в нем драйвера st_link V2 и первый он не видит в упор .
st link firmware update от первого видит мою дискавери и обновляет до v1.J12.S0, а от второго не видит и соответственно до v2 не обновлят .

А как обновить V1 до v2 так и не пойму
EugenPKH вне форума  
Непрочитано 03.10.2011, 22:30  
FROG45
Частый гость
 
Регистрация: 11.05.2010
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
FROG45 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

сейчас проверил со своей платой , всё видит , кейл 4.22 новее некуда , компилирует, заливает прошивку , по шагам ходит весь функционал доступен. Плата MB913C00/ Проверьте настройки может у Вас житаг стоит вместо swd это в опциях дебаг настройки там два выбора житаг и swd должен стоять swd . До 2 линка стандартными средствами Вы не сможете обновить .
По прерываниям постараюсь завтра выложить справочный материал , ща на работе лежит.
FROG45 вне форума  
Непрочитано 03.10.2011, 22:51  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от FROG45 Посмотреть сообщение
кейл 4.22 новее некуда
Последний - 4.22а...
st_1 вне форума  
Непрочитано 04.10.2011, 10:00  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Ну вот и я решил поработать с I2c на STM32.
Для экспериментов была выбрана память 24C64. Плата STM Discovery и панелька в DIP корпусе находятся в макетной плате. Проблемы с флюсами и пайками исключены.
Почитав тему был не много опечален ситуацией, но все же решил накатать код.
Итак, инициализация без особых вопросов:
Код:
void EE24Init(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
	I2C_InitTypeDef I2C_InitStructure;

	RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE)  ;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);

	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6 | GPIO_Pin_7;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_OD;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStruct);

           I2C_DeInit(I2C1);
           I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
           I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
           I2C_InitStructure.I2C_OwnAddress1 = 0;
           I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
           I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
           I2C_InitStructure.I2C_ClockSpeed = 100000;  /* 100kHz */
	
	I2C_Cmd(I2C1, ENABLE);
	I2C_Init(I2C1, &I2C_InitStructure); 
	I2C_AcknowledgeConfig(I2C1, ENABLE);
}
Далее сам код:
Код:
int EE24ReadWrite(I2C_TypeDef* I2Cx, char val, int WriteAddr)
{
	if(I2C_GetFlagStatus(I2Cx, I2C_FLAG_BUSY)){return I2C_BUS_BUSY;}					 /* While the bus is busy */
    
	I2C_GenerateSTART(I2Cx, ENABLE);													 /* Send START condition */
    	if(I2C_Wait_Event(I2Cx,I2C_EVENT_MASTER_MODE_SELEC  T)){return I2C_ERROR;}		 /* Test on EV5 and clear it */
    
	I2C_Send7bitAddress(I2Cx, EEPROM_HW_ADDRESS, I2C_Direction_Transmitter);			 /* Send EEPROM address for write */
    	if(I2C_Wait_Event(I2Cx,I2C_EVENT_MASTER_TRANSMITTE  R_MODE_SELECTED))		 		 /* Test on EV6 and clear it */
    						   {return I2C_ERROR;}
	I2C_SendData(I2Cx, (char)((WriteAddr & 0xFF00) ›› 8));								 /* Send the EEPROM's internal address to write to : MSB of the address first */
    	if(I2C_Wait_Event(I2Cx,I2C_EVENT_MASTER_BYTE_TRANS  MITTED)){return I2C_ERROR;}	 /* Test on EV8 and clear it */
    
	I2C_SendData(I2Cx, (char)(WriteAddr & 0x00FF));										 /* Send the EEPROM's internal address to write to : LSB of the address */    
    	if(I2C_Wait_Event(I2Cx,I2C_EVENT_MASTER_BYTE_TRANS  MITTED)){return I2C_ERROR;}	 /* Test on EV8 and clear it */
     
	I2C_SendData(I2Cx, val);
    	if(I2C_Wait_Event(I2Cx,I2C_EVENT_MASTER_BYTE_TRANS  MITTED)){return I2C_ERROR;}	 /* Test on EV8 and clear it */
    
	I2C_GenerateSTOP(I2Cx, ENABLE);													     /* Send STOP condition */																		 //delay between write and read...not less 4ms
	return 0;							   
}
Здесь все просто за исключением того, что от использования бесконечного ожидания я сразу отказался и завел такую функцию:
Код:
char I2C_Wait_Event(I2C_TypeDef* I2Cx, long event)
{
	long tmr = 0;
	long err = 0xFF;	
	while ((tmr!=Max_I2C_delay_cls)&(err))
	{
		tmr++;																  
		err=!I2C_CheckEvent(I2Cx, event);						  
	}
	if (tmr==Max_I2C_delay_cls)
		{
			led_flash(BLUE_LED);
			return 1;	   						//ERROR
		}
	else
		{return 0;}							//OK
}
Ну здесь все понятно. Если шина молчит примерно пол секунды, моргнуть диодом и завершить операцию. Как бы код рабочий. Операция чтения проходит замечательно - информация считывается. Но при повторном запросе шина зависает. Причины этого зависания меня и интересуют. И зачем читается второй байт? Операция чтения используется только один раз.
Хочется написать работу с 24ххх только на прерываниях, но с такими проблемами мне туда пока рано.
Миниатюры:
Нажмите на изображение для увеличения
Название: i2c-1.png
Просмотров: 169
Размер:	368.3 Кб
ID:	26745   Нажмите на изображение для увеличения
Название: i2c-2.png
Просмотров: 142
Размер:	353.7 Кб
ID:	26746  

Последний раз редактировалось Easyrider83; 04.10.2011 в 10:20.
Easyrider83 вне форума  
 

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

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

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, время: 06:26.


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