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

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

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

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

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

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


 
Опции темы
Непрочитано 20.09.2011, 11:32  
pve70
Временная регистрация
 
Регистрация: 09.02.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
pve70 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

GPIO можно инициализировать сколько влезет, хоть по одному пину по-отдельности, вот например рабочий код:
Код:
	/*************************
	       TouchScreen	& SD-Card
	**************************/
	// Configure SPI pins: SCK and MOSI with default alternate function (not remapped) push-pull 
	GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_SD_SCK | GPIO_Pin_SD_MOSI;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
	GPIO_Init(GPIO_SD, &GPIO_InitStructure);

	// Configure MISO as Input with internal pull-up 
	GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_SD_MISO;
	GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IPU;
	GPIO_Init(GPIO_SD, &GPIO_InitStructure);

	// Configure SD_CS pin 	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_SD_CS; 
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(GPIO_SD, &GPIO_InitStructure);

  //Configure ADS7843 pins: CS
  GPIO_InitStructure.GPIO_Pin = ADS7843_CS; 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //
  GPIO_Init(ADS7843_PORT_CS,&GPIO_InitStructure);
А вот
Код:
 RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOBEN, ENABLE);
второй раз наверное не стоит делать
Реклама:
pve70 вне форума  
Непрочитано 20.09.2011, 11:46  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Короче, опыт показал, что в регистры CRL и CRH можно писать что душе угодно. Пока к ним не подключен clock, это ничего не даст. Команда RCC_AHBPeriphClockCmd всегда должна идти первой. Мелкие, но все же грабли.

pve70, вы потом асм не смотрели, сколько там кода получается? А то чует мой хвост, что совершенно примитивные операции даже при максимальной компиляции раздуваются весьма прилично. У меня тут простенький проект, объединяющий дисплей и радиочип уже весит более 4к. На восьмибитном пике при таком объеме кода он бы уже умел еду готовить и на орбиту выходить.
Easyrider83 вне форума  
Непрочитано 20.09.2011, 11:48  
serb-radio
Гражданин KAZUS.RU
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Если данные из дма передаются в цап однократно не в circle режим, то как мне можно передавать данные например нажатием кнопки, какой флаг надо сбрасывать в регистрах дма? Собственно код:

void InitDMA2_3(void)
{
/* DMA1 clock enable */
RCC-›AHBENR |= RCC_AHBENR_DMA2EN;

/*Peripheral Adress*/
DMA2_Channel3-›CPAR = (uint32_t) & DAC-›DHR8R1;

/*Memory Adress*/
DMA2_Channel3-›CMAR = (u32) &dataSOUND528;
/*Data transfer direction - To Peripheral*/
DMA2_Channel3-›CCR |= DMA_CCR3_DIR;
/*Number of data to be transferred*/
DMA2_Channel3-›CNDTR = LEN_SIN; // Lenght of sin table (Buffer size)
/*Peripheral increment mode Disable*/
DMA2_Channel3-›CCR &= ~DMA_CCR3_PINC;
/*Memory increment mode */
DMA2_Channel3-›CCR |= DMA_CCR3_MINC;
/*Memory size - 16bit*/
DMA2_Channel3-›CCR |= DMA_CCR3_MSIZE_0;
/*Peripheral size - 16bit*/
DMA2_Channel3-›CCR |= DMA_CCR3_PSIZE_0;
/*Circular mode - Enable*/
//DMA2_Channel3-›CCR |= DMA_CCR3_CIRC;
/*Channel Priority level - High) */
DMA2_Channel3-›CCR |= DMA_CCR3_PL_1;
/*Memory to memory mode - Disable */
DMA2_Channel3-›CCR &= ~DMA_CCR3_MEM2MEM;
/*DMA1 Channel3 enable */
DMA2_Channel3-›CCR |= DMA_CCR3_EN;
}

Заранее благодарен откликнувшимся
__________________
То, что нас не убивает - делает нас сильнее
serb-radio вне форума  
Непрочитано 20.09.2011, 11:53  
pve70
Временная регистрация
 
Регистрация: 09.02.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
pve70 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Цитата:
вы потом асм не смотрели, сколько там кода получается?
Да нет, я пока до оптимизации не добрался - сначала надо принцип общения с STM32 понять, а потом уж код вылизывать.
pve70 вне форума  
Непрочитано 20.09.2011, 14:01  
Gaaaaaad
Частый гость
 
Регистрация: 07.03.2011
Сообщений: 38
Сказал спасибо: 1
Сказали Спасибо 19 раз(а) в 16 сообщении(ях)
Gaaaaaad на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от pve70 Посмотреть сообщение
Есть у кого нормальный код работы с SD-картами по SPI?
А то у китаез в примерах карты через раз определяются, Kingston и Apacer - нормально, остальные плохо. К тому же повесил на этот же SPI сенсорный контроллер ADS7843 - не хочет он одновременно работать с SD картой - при чтени хрень всякую выдает, видимо в процессе работы с SD-картой у SPI на ходу режимы меняются. Но на 128-й меге у меня же все работало и дружили на одном SPI и карты и сенсор !
примеры keil через C:\Keil\ARM\RL\FlashFS\Drivers\SPI_STM32F103.c
устойчиво работают с разными картами...

В процессе инициализации обмена с картой вызывается mmc_init (перепроверка что ее не выдернули и тд) -- там меняются режимы SPI в зависимости от ответа карты -- типа карты -- иначе и быть не может -- при переходе на обмен с жк -- их надо восстанавливать...

ЗЫ исходники идут только к 4,13!!!
Gaaaaaad вне форума  
Сказали "Спасибо" Gaaaaaad
a-fisher (21.09.2011)
Непрочитано 21.09.2011, 11:50  
a-fisher
Прописка
 
Аватар для a-fisher
 
Регистрация: 15.11.2007
Адрес: СПБ
Сообщений: 214
Сказал спасибо: 37
Сказали Спасибо 42 раз(а) в 34 сообщении(ях)
a-fisher на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от pve70 Посмотреть сообщение
Да нет, я пока до оптимизации не добрался - сначала надо принцип общения с STM32 понять, а потом уж код вылизывать.
Кстати, по поводу размера кода. Случайно нашел вот такую инфу по методам доступа к отдельным битам портов ввода-вывода:
Сообщение от http://www.gaw.ru
Теперь мы можем создать указатель на этот адрес с помощью следующей Си-строки:
Код:
#define PortBbit8 (*((volatile unsigned long *) 0x422181A0 ))
После этого, этот указатель можно использовать для установки и сброса бит ПВВ:
Код:
PB8 = 1; //включаем светодиод
После компиляции будут сгенерированы следующие ассемблерные инструкции:
Код:
MOVS r0,#0x01
LDR r1,[pc,#104]
STR r0,[r1,#0x00]
Для отключения светодиода используем строку:
Код:
PB8 = 0; // отключаем светодиод
Ей соответствуют следующие ассемблерные инструкции:
Код:
MOVS r0,#0x00
LDR r1,[pc,#88]
STR r0,[r1,#0x00]
Таким образом, для установки или сброса бита необходимо выполнить три 16-битных инструкции.
Микроконтроллер STM32, работающий на частоте 72 МГц, выполнит их за 80 нс. Альтернативно установку или сброс
бита можно выполнить, если применить логическую операцию "ИЛИ" или "И" ко всему слову из области хранения бит
УВВ или статического ОЗУ:
Код:
GPIOB-›ODR |= 0x00000100; //Включение светодиода
Код:
LDR r0,[pc,#68]
ADDS r0,r0,#0x08
LDR r0,[r0,#0x00]
ORR r0,r0,#0x100
LDR r1,[pc,#64]
STR r0,[r1,#0xC0C]
Код:
GPIOB-›ODR &=!0x00000100; //Отключение светодиода
Код:
LDR r0,[pc,#40]
ADDS r0,r0,#0x08
LDR r0,[r0,#0x00]
MOVS r0,#0x00
LDR r1,[pc,#40]
STR r0,[r1,#0xC0C]
Но в таком случае, одна операция установки/сброса потребует выполнения смеси 16- и 32-битных инструкций,
которые займут минимум 14 байт и на той же тактовой частоте будут выполняться как минимум 180 нс. Таким
образом, в программе, где используется установка/сброс множества бит в регистрах УВВ, а также применяются
семафоры и флаги в статическом ОЗУ, использование метода bit banding позволит существенно сэкономить, как
размер кода программы, так и время его выполнения.

Последний раз редактировалось a-fisher; 21.09.2011 в 11:53.
a-fisher вне форума  
Эти 4 пользователя(ей) сказали Спасибо a-fisher за это сообщение:
ALEKSEY188 (06.04.2012), Bird55 (21.09.2011), kontakter (24.12.2011), kozeka (27.03.2012)
Непрочитано 21.09.2011, 12:50  
pve70
Временная регистрация
 
Регистрация: 09.02.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
pve70 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Ух, люблю въедливых людей!! Не дает покоя китайско-индусская реализация. Камрад, мы с тобой !!!
pve70 вне форума  
Непрочитано 21.09.2011, 13:26  
Serega_B
Прописка
 
Регистрация: 09.11.2010
Сообщений: 102
Сказал спасибо: 4
Сказали Спасибо 28 раз(а) в 22 сообщении(ях)
Serega_B на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от pve70 Посмотреть сообщение
Есть у кого нормальный код работы с SD-картами по SPI?
http://gandalf.arubi.uni-kl.de/avr_p...#chanfat_stm32

Не нашел пока карточки, которая не работает с такой инициализацией.
SanDisk, Transcend, Kingston, Noname (несколько разных) ; НС и обычные; объемом 1, 2, 4, 8, 16 ГБ - работают нормально.
Serega_B вне форума  
Сказали "Спасибо" Serega_B
kozeka (27.03.2012)
Непрочитано 21.09.2011, 17:39  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от a-fisher Посмотреть сообщение
Случайно нашел вот такую инфу по методам доступа к отдельным битам портов ввода-вывода
"Всё уже украдено до нас!"...
Февраль 2008-го...
http://www.hitex.com/fileadmin/pdf/i...2-v18d-scr.pdf
st_1 вне форума  
Сказали "Спасибо" st_1
kozeka (27.03.2012)
Непрочитано 21.09.2011, 18:41  
avs2009
Прописка
 
Аватар для avs2009
 
Регистрация: 10.08.2010
Сообщений: 113
Сказал спасибо: 30
Сказали Спасибо 43 раз(а) в 26 сообщении(ях)
avs2009 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от st_1 Посмотреть сообщение
"Всё уже украдено до нас!"
и даже переведено на русский
http://www.gaw.ru/html.cgi/txt/doc/m..._arh/index.htm
avs2009 вне форума  
Сказали "Спасибо" avs2009
kozeka (27.03.2012)
 

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

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

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


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