STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Кислый
Поставщик валерьянки для Кота
Сообщения: 2095
Зарегистрирован: Чт апр 08, 2010 18:50:01
Откуда: Краснодар
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Кислый »

КАШАК писал(а):Где можно почитать про назначение BOOT0 и BOOT1 ? И если в МК есть аппаратный USB, через него можно прошивать? МК STM32F103VCT6.


c эти биты определяют параметры бутлоадера. первичный, вторичный или отключен. с помощью первичного бутлоадера можно прошить бут по usb ( как в филипсах - mass str dev ). Но лучше использоватьь JTAG
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics
Аватара пользователя
Кислый
Поставщик валерьянки для Кота
Сообщения: 2095
Зарегистрирован: Чт апр 08, 2010 18:50:01
Откуда: Краснодар
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Кислый »

кто-нибудь собирал тулчейн самостоятельно ?
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics
polyname
Прорезались зубы
Сообщения: 249
Зарегистрирован: Пт май 18, 2012 23:12:23

Re: STM32 новичку в ARM что к чему

Сообщение polyname »

и еще пол файла переделать?) - я правильно думаю?
как минимум (только для чтения) нужно определить функции disk_initialize, disk_status, disk_read. Для записи - disk_write, get_fattime и ioctl. Также нужны функции низкого уровня для SD - инициализации и чтения/записи сектора.
у когонить есть FATfs для STM32L152?или чтобы переделывать поменьше?
есть либа с поддержкой программного и аппаратного SPI (STM32 и AVR), также возможно использование DMA для блочных пересылок.
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

Re: STM32 новичку в ARM что к чему

Сообщение спящий »

спящий писал(а):
  Заголовок сообщения:  Re: STM32 новичку в ARM что к чему  
Вы должны обеспечить discio.c функциями аппаратного уровня, такими как запись/чтение сектора, инициализация карты, отправка команды карте и так далее. Исходник discio.c - это уже часть FatFS. Вообще, Чен указывал, какие функции разработчик должен писать самостоятельно для успешной работы с FatFS.
Поищите в сети, примеры должны быть. Год назад я использовал FatFS с STM32F407, но там все делалось на скорую руку, с "ногодрыжным" SPI, все это коряво и некрасиво.



СпойлерМодуль низкоуровневго ввода/вывода не является частью модуля FatFs, и он должен быть предоставлен пользователем (в этом собственно и заключается основной процесс портирования на целевую систему). Примеры таких низкоуровневых модулей/драйверов можно найти в разделе Ссылки. Список функций низкоуровневого ввода/вывода:
disk_initialize - инициализация диска (disk drive)
disk_status - получение состояния диска (disk status)
disk_read - прочитать сектор (секторы)
disk_write - записать сектор (секторы)
disk_ioctl - управление опциями, зависящими от устройства
get_fattime - получение текущего времени
Ссылки


тоесть как я понял мне надо эти функции вручную написать, включая инициализацию так?
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: STM32 новичку в ARM что к чему

Сообщение SubDia »

спящий писал(а):как я понял мне надо эти функции вручную написать, включая инициализацию так?

Да, верно. Весь низкоуровневый функционал.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
polyname
Прорезались зубы
Сообщения: 249
Зарегистрирован: Пт май 18, 2012 23:12:23

Re: STM32 новичку в ARM что к чему

Сообщение polyname »

да, самое сложное - инициализация карты:
http://codetidy.com/paste/raw/4306
http://codetidy.com/paste/raw/4305
http://codetidy.com/paste/raw/4307
Foks
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

Re: STM32 новичку в ARM что к чему

Сообщение Foks »

HHIMERA писал(а):Что-то это высказывание противоречит вашему нижеследующему высказыванию...
Каким образом?
HHIMERA писал(а):Заезженный штамп горе-студентов-кармодрочеров с ДиАхтунга... :)))
HHIMERA писал(а):кармодрочеров
Хммм... Я не понял, это вы про себя?
HHIMERA писал(а):СТДлиб предназначены для начального вхождения... и только... А дальше - всё наоборот... Чем больше проект содержит взаимодействия с периферией, тем больше проявляются ущербность, избыточность, тормознутость и неоптимальность... и чем выше уровень знаний, тем больше это проявляется и в итоге просто начинает раздражать...
Ну, мне как раз для старта эта библиотека очень мешала, и я программил регистры напрямую. Хотя вобщем я не далеко от этого старта ушел в случае с STM32. Ну, наверное, то что я говорил, касается идеологии библиотеки периферии вообще, а не конкретно STM32PeriphLib. Насчет ущербности последней я ничего против не имею, т.к. я толком ей и не воспользовался.
Но если есть нормально реализованная и документированная библиотека, то почему бы и нет. В случае с другой проприетарной архитектурой (название и подробности разглашать не могу) у меня было именно так: начал знакомство с "низов", потом перешел на использование подобной библиотеки, проблем - меньше, удобства - больше. Опять же, здесь выполняется условие, что я понимаю, как это работает. В противном случае она действительно сгодится только для мигания светодиодами.
Giggity giggity goo!
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Re: STM32 новичку в ARM что к чему

Сообщение TripleKill »

В продолжение темы о SD. Пытаюсь подключить карту к STM32vldiscovery. Код инициализации и прочего взял отсюда: http://pcus.ru/stati/stm32/1567-prikruchivaem-k-stm32-sd-kartu-po-spi.html. Оказалось, что скорость SPI там выставлена маленькая. Выкрутил на максимум. И всё равно как-то долго сектор читается (около секунды, скорость проца - 24 МГц). Это нормально? Запись в файл тоже будет занимать порядка секунды? Или это код такой?
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: STM32 новичку в ARM что к чему

Сообщение HHIMERA »

Это всего лишь пример... коих в инете превеликое множество... хорошо, что ещё работает... :))
А так... вывод картинки bin-файла с SD на STM32vldiscovery и N1616 128X160@16 bit ( 40 960 байт с SD и 46 080 байт на дисплей) - ~70 миллисекунд... для примера...
"Я не даю готовых решений, я заставляю думать!"(С)
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Re: STM32 новичку в ARM что к чему

Сообщение TripleKill »

HHIMERA, поделитесь кодом?)
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

Re: STM32 новичку в ARM что к чему

Сообщение спящий »

Скажите в чем косяк,при проверке флага,не обнаруживает сброс бита SPI_SR_TXE,то есть виснет(постоянно на одной строчке) при проверке флаг.

SPI1->DR = 0x0F; //Пишем в буфер передатчика SPI1. После этого стартует обмен данными
while (!(SPI1->SR & SPI_SR_TXE)); //ожидание окончания передачи ПОСТОЯННО ОЖИДАЕТ


Как исправить.
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Re: STM32 новичку в ARM что к чему

Сообщение TripleKill »

Тактирование на SPI подали?
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: STM32 новичку в ARM что к чему

Сообщение HHIMERA »

спящий писал(а): while (!(SPI1->SR & SPI_SR_TXE)); //ожидание окончания передачи ПОСТОЯННО ОЖИДАЕТ

SPI_SR_TXE ни разу не "ожидание окончания передачи"... и отладчик не совсем корректно работает в пошаговом режиме со SPI...
"Я не даю готовых решений, я заставляю думать!"(С)
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: STM32 новичку в ARM что к чему

Сообщение HHIMERA »

TripleKill писал(а):HHIMERA, поделитесь кодом?)

Мне тема SD, на данный момент, не интересна... поэтому и кода нет... да и "по сроку службы не положено"... :))
Хотите - открывайте тему, ищите единомышленников (кому это интересно)... "помогу чем смогу"...

Там всё просто...
Как вариант...

Берёте Ченовские примеры PetitFat для PIC24 или LPC17XX, перетряхиваете их под STM32...
На SPI1 вешаете N1616, на SPI2 - SD...
После того, как всё это "как-то" заработало, берёте бубен, входите в нирвану и начинаете шаманить нипадецки...

1. SPI1 включаете в режиме 16bit и организовываете передачу 18bit данных на N1616 в непрерывном режиме с перекодировкой на лету...
Ориентир - время вывода картинки из флэша МК на дисплей 30-31 миллисекунд (в случае с STM32vldiscovery)...

2. Далее... Делаете копию функции pf_read и переименовываете её, допустим, в new_pf_read... (через неё и будем, в дальнейшем, работать)...
Делаете копию функции disk_readp и переименовываете её, допустим, в new_disk_readp...
В new_pf_read меняете disk_readp на new_disk_readp...
Новые функции, естественно, нужно прописать в h-файле...
В new_disk_readp после /* Receive a part of the sector */ переводим SPI2 в режим 16bit, перемешиваем чтение SD с выводом на N1616,
а перед /* Skip trailing bytes and CRC */ возвращаем SPI2 в режим 8bit...
Как-то так... здесь возможны и варианты...

3. В майне, или в какой функциии, при выводе c SD на N1616 обращаемся к new_pf_read, оставив родную pf_read для других целей...

После всего этого безобразия получаем время вывода картинки с файла на дисплей около 70 миллисекунд...
"Я не даю готовых решений, я заставляю думать!"(С)
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Re: STM32 новичку в ARM что к чему

Сообщение TripleKill »

Ясно) Всё сложнее, чем я думал)
Спасибо за инфу, буду копать)
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Re: STM32 новичку в ARM что к чему

Сообщение drakon »

Добрый день! может, уже и спрашивали, но я не нашел, подскажите компилятор для stm32, для С и для ассемблера, чтоб через него и прошивать и отладку можно было делать. сейчас работаю с AVR на С и асме. короче поделитесь опытом на счет программного обеспечения.
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Re: STM32 новичку в ARM что к чему

Сообщение menzoda »

Варианта три: GCC, IAR'овский компилятор, ARM'овский компилятор (который в Keil).
metcenger
Открыл глаза
Сообщения: 59
Зарегистрирован: Ср ноя 17, 2010 01:03:44

Re: STM32 новичку в ARM что к чему

Сообщение metcenger »

не могу заставить работать внешнее прерывание на плате STM32L Discovery на порту PA0

обработчик

Код: Выделить всё

void EXTI0_IRQHandler(void) { 
  on (LED_Blue);
  EXTI->PR |= EXTI_PR_PR0;//сбросили бит прерывания
}

инициализация

Код: Выделить всё

void InitPeriph(void)
  {
  RCC->AHBENR |= RCC_AHBENR_GPIOBEN; //разрешение тактирования порта b. RCC-указатель,содержащий адрес структуры, и обращается он к члену структуры AHBENR
  RCC->AHBENR |= RCC_AHBENR_GPIOAEN;

  GPIOB->MODER |= GPIO_MODER_MODER7_0; //General purpose output mode (01)
  GPIOB->OTYPER &= ~GPIO_OTYPER_OT_7; //выход открытый коллектор или обычный(0) ~ инверсия
  GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR7;//скорость порта (11: 40 MHz High speed )
  GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR7; //00- без подтяжки резисторов

  GPIOB->MODER |= GPIO_MODER_MODER6_0;  //output
  GPIOB->OTYPER &= ~GPIO_OTYPER_OT_6;  //Output push-pull
  GPIOB->OSPEEDR &=~GPIO_OSPEEDER_OSPEEDR6;  //400 kHz
  GPIOB->PUPDR &=~GPIO_PUPDR_PUPDR6;  //No pull-up, pull-down

  GPIOA->MODER &= ~GPIO_MODER_MODER0;  //input
  GPIOA->OTYPER &= ~GPIO_OTYPER_OT_0;  //Output push-pull
  GPIOA->OSPEEDR |=GPIO_OSPEEDER_OSPEEDR0;  //40 MHz
  GPIOA->PUPDR &=~GPIO_PUPDR_PUPDR0;  //No pull-up, pull-down
 
 
  //настройка внешнего прерывания на int0
  __enable_irq ();
    RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
   
    SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI0_PA;
 
    EXTI->IMR |= EXTI_IMR_MR0; // какую линию выбираем из 23-х (у нас 0-я)
 
    EXTI->RTSR |= EXTI_RTSR_TR0; //настройка фронта-среза
    EXTI->FTSR |= EXTI_FTSR_TR0;
 
    NVIC_EnableIRQ(EXTI0_IRQn);
    NVIC_SetPriority(EXTI0_IRQn, 1);

  }

и при этом всем работать не хочет! Чего не так?
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

Re: STM32 новичку в ARM что к чему

Сообщение спящий »

Попробуй установить:
EXTI->IMR |= EXTI_IMR_MR0; // Это Прерывание по событию -это у тебя есть

Но сомого события нет:

EXTI -> EMR |= EXTI_EMR_MR0;//устанавливаем событие

Работает?
metcenger
Открыл глаза
Сообщения: 59
Зарегистрирован: Ср ноя 17, 2010 01:03:44

Re: STM32 новичку в ARM что к чему

Сообщение metcenger »

разобрался- заработало.
Причина- был выбран в проекте язык С++, при смене на С- все работает.

А почему так?
Ответить

Вернуться в «ARM»