Поиск сообщества
Показаны результаты для тегов 'stm32'.
Найдено: 194 результата
-
Здравствуйте Посоветуйте, с чего лучше начать при переходе с Arduino на STM32? Есть желание проектировать несложные устройства и выпускать их. С STM32 до этого дела не имел, в Ардуино собаку съел. Хочется побольше готовых библиотек + удобную отладочную (discovery? nucleo?) + удобную IDE. Заранее спасибо!
-
Подскажите: плата stm32f103c8, дисплей ili9481, 16 бит. Кубом сгенерировал проект (72 Мгц), подключил к дисплею,и скорость заливки целого экрана около 12 секунд, что-то многовато. Тактовая частота 72 Мгц, в описании команд только "подать 0" или "1" на выход (wr, dc,...). В описании передачи команд (или данных) на выход только обнуление битов и сравнение с 0 ( тогда или 0 или 1 на выход). Паузы перед командами (wr,dc) убрал, немного лучше, но не то. Дма хочу использовать для других целей. Заранее спасибо
-
Простите, продублирую свой пост в новой теме: Форумчане, коллеги! Подскажите, пожалуйста. CoIDE выдает вот такую ошибку при записи во флешпамять: Error: Connect failed, check config and cable connection. Со шнуром USB всё в порядке, ST-Link Utility установил. Но в диспетчере устройств драйвер STM32 почему-то именно в разделе дисковых устройствах отображается(в контроллерах USB его нет). На отладочной плате Discovery горит Красный светодиод. Настройки дебаггера в CoIDE прилагаю. Спасибо.
-
Продаю свои запасы разных МК список будет (позже). Есть STM8, STM32(F1,F2, F3, F4, F7), ADUC, ADUCM, SiLabs (EFM8, EFM32, 8051F), LPC, AVR. Цены будут ниже чем в магазинах. Если что в ЛС пишите посмотрю. Только Украина.
-
- микроконтроллер
- avr
-
(и ещё 2 )
C тегом:
-
С генерировал проект в CubeMX для отладочной платы stm32f303vc. Выбрал Virtual Com Port, а он его не видит вовсе(светодиод COM мигает и все). Я в расстроенных чувствах не пойму что не так сделал. Прикрепил проект EWARM к теме. ProjectUSB.rar
-
STM32L151RDT6 10 шт на подложке Цена 280 руб/шт. STM32F030F4P6 - 3 шт по 40 руб. STM32F103C6T6A - 4 шт по 160 руб STM32F100RBT6B - 2 шт по 160 руб STM32F101RCT6 - 3 шт по 150 руб. Все новые, непаяные, не тронутые. Есть также 3 платы под контроллеры STM32F100RBT6B, на некоторых еще модем WISMO228/218, FT232 , питальники , клеммники. Платы по 350 руб/ шт Есть пустые такие : Для ковыряния STM32 в связке с GSM - самое-то. Цена 100 руб/шт Обмен на некоторые комп. железяки г. Томск Отправка почтой
-
День добрый. Пробую запустить I2S на STMF407. Использую HAL. Проблема в том, что данные передаются ровно в два раза медленнее, чем это требуется. Тактирование на ножках проверял, WS ровно столько сколько я поставлю (8к, 44к и тд). CK в 32 раза больше WS. MCK в 256 раз больше, все как и должно быть. Но пакет данных из 1000 байт передается за 62мс, хотя должен за 31 передаваться (при sample rate = 8000Hz). Без разницы, polling mode или DMA. Части кода: #define WAV_BUFFER_SIZE 1000 uint8_t wavReadBuffer[WAV_BUFFER_SIZE]; for(uint16_t i = 0; i < WAV_BUFFER_SIZE; i++){ wavReadBuffer[i] = 0xff; } HAL_I2S_Transmit(&hi2s2, (uint16_t*)wavReadBuffer, WAV_BUFFER_SIZE, 5000); static void MX_I2S2_Init(void) { hi2s2.Instance = SPI2; hi2s2.Init.Mode = I2S_MODE_MASTER_TX; hi2s2.Init.Standard = I2S_STANDARD_MSB; hi2s2.Init.DataFormat = I2S_DATAFORMAT_16B; hi2s2.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE; hi2s2.Init.AudioFreq = ((uint32_t)8000U); hi2s2.Init.CPOL = I2S_CPOL_LOW; hi2s2.Init.ClockSource = I2S_CLOCK_PLL; hi2s2.Init.FullDuplexMode = I2S_FULLDUPLEXMODE_DISABLE; if (HAL_I2S_Init(&hi2s2) != HAL_OK){Error_Handler();} }
-
Данный цикл статей посвящен простейшему микроконтроллеру в линейке 32-битных камней STM32. IAR и STM32 CORTEX M0. Часть 0x00 (пустой треп и отмазки) IAR и STM32 CORTEX M0. Часть 0x01. Подготовка платформы IAR IAR и STM32 CORTEX M0. Часть 0x02, Начинаем пайку! IAR и STM32 CORTEX M0. Часть 0x03, Программируем без программатора IAR и STM32 CORTEX M0. Часть 0x04 Автоматизация прошивки IAR IAR и STM32 CORTEX M0. Часть 0x05, GPIO — входит и выходит... Автор статей: http://cxem.net/profile/17068/
-
Есть функции в HAL HAL_TIM_DMABurst_WriteStart запуска в бурст значений сразу несколько в регистры таймера,а вот такой настройки нет в самом CubeMx ?
-
Доброго времени суток, уважаемые Форумчане. Решил попробовать освоить stm32 (до этого писал несложные программы на си авр, даже что-то удельное получалось, освоил кое-как прерывания). Заказал две платы на f103 и f407 мк. Установил keil, iar. Начал читать (а в сети очень много статей типа "stm32 - это просто") и - о ужас!!! Два дня потратил чтобы просто понять как создаётся пустой проект, какие библиотеки нужно добавлять. Ну с этим вроде разобрался. Потом решил, как принято, поминать светодиодом - ещё убил день чтобы разобраться с примерами из сети. Ну с тактированием периферии более-менее понятно, сброс и установка отдельных битов - кое-как понял. Но, как записать сразу число хотя бы в младшие восемь бит - хоть убей не пойму. В авр было всё просто, кидай число в порт и готово (даже наоборот, сложнее работать с отдельными битами). Прочитал про регистры gpio, там есть регистры ODR и IDR, вроде аналоги авровских port и pin, но загнать туда байт, а тем более, два я не сумел. Пробовал писать функции со сдвигом каждого бита, сравнением и сбросом/установкой каждого бита по очереди - это дикий громоздкий ужас. И синтаксис для стм-ов меня просто убивает, какие-то стрелки, сплошные битовые операции. Разжуйте, пожалуйста, можно ли как-то просто отправлять числа в odr, чтобы изменять состояние сразу не одного пина, а нескольких.
-
Добрый вечер. Решил недавно поиграться с микроконтроллерами, ибо были в загашнике такие платы: Ппробовал погонять данные по USART. В обычном режиме - все работает нормально, но вот с прерываниями - немного не получается. Я взял пример из стандартной библиотеки, скомпилил, залил и прерывание не срабатывает. #include <stm32f10x.h> #include <misc.h> volatile char received_string[MAX_STRLEN+1]; void Delay(__IO uint32_t nCount) { while(nCount--) { } } void init_USART1(uint32_t baudrate){ GPIO_InitTypeDef GPIO_InitStruct; USART_InitTypeDef USART_InitStruct; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStruct); USART_InitStruct.USART_BaudRate = baudrate; USART_InitStruct.USART_WordLength = USART_WordLength_8b; USART_InitStruct.USART_StopBits = USART_StopBits_1; USART_InitStruct.USART_Parity = USART_Parity_No; USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; USART_Init(USART1, &USART_InitStruct); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); USART_Cmd(USART1, ENABLE); } void USART_puts(USART_TypeDef* USARTx, volatile char *s){ while(*s){ while( !(USARTx->SR & 0x00000040) ); USART_SendData(USARTx, *s); *s++; } } int main(void) { init_USART1(9600); // initialize USART1 @ 9600 baud USART_puts(USART1, "Init complete! Hello World!\r\n"); // just send a message to indicate that it works while (1){ /* * You can do whatever you want in here */ } } void USART1_IRQHandler(void){ // check if the USART1 receive interrupt flag was set if( USART_GetITStatus(USART1, USART_IT_RXNE) ){ static uint8_t cnt = 0; // this counter is used to determine the string length char t = USART1->DR; // the character from the USART1 data register is saved in t // check if the received character is not the LF character (used to determine end of string) // or the if the maximum string length has been been reached if( (t != '\n') && (cnt < MAX_STRLEN) ){ received_string[cnt] = t; cnt++; } else{ // otherwise reset the character counter and print the received string cnt = 0; USART_puts(USART1, received_string); } } } Решил упростить задачу и поморгать светодиодом: void USART2_IRQHandler(void){ USART_ClearITPendingBit(USART2, USART_IT_TC); USART_ClearITPendingBit(USART2, USART_IT_RXNE); static uint8_t isSet = SET; GPIO_WriteBit(GPIOC , GPIO_Pin_13 , isSet); isSet = !isSet; } Оно в обработчик вообще не попадает. Подскажите, может что не так делаю? Отладчика пока нету, заказал - жду. Есть FTD USB-UART преобразователи, через них прошиваю и проверяю. А еще я в основной цикл добавил постоянную отправку строки, и оно таки прерывается, когда я шлю байт с компа, но в обработчик оно, походу, не попадает. Пробовал на USART2 - такая же фигня.
- 36 ответов
-
- stm32
- stm32f103c8t6
-
(и ещё 1 )
C тегом:
-
Как правильно выделить сектор памяти для heap в stm32? Среда: Keil. Спасибо!
-
Продам остатки от производства STM32L151CBT6 20шт. в наличии. 200руб. штука + пересылка из Ростова-на-Дону. Все сразу отдам за 3500р. Для связи ЛС или sr-tech@mail.ru
-
Здравствуйте, прошу помощи. Пытаюсь осилить программирование под микроконтроллеры. Суть: есть отладочная плата, stm32f4-discovery с контроллером stm32f429zi на борту. Так же на борту имеется некоторый обвес и в том числе дисплей, ili9341. Сделан проект в кубе, на основе примера из оф библиотеки к кубу. В данном примере инициализируется сначала spi интерфейс, подключается к дисплею, дает ему команды на инициализацию. Потом включается ltdc интерфейс, и как я понял, он должен участок памяти связать с картинкой на экране. В примере есть 2 файла в которых прописаны картинки, переменными (огромные такие массивы с 16битными кодами цветов на каждый пиксель) эти самые 2 переменных указаны как стартовые участки памяти на слои LTDC. Дальше с ними идут некоторые модификации в целях демонстрации, но сейчас это не суть. Пример успешно компилируется и запускается на плате. Я пытаюсь хотя бы просто вывести картинки на экран. У меня получилось инициализировать дисплей (тупо спер код из примера, там большая пачка команд) и указать в ltds габариты слоев (я так же вывел один слой на одну половину экрана, второй на другую) Но на этих самый слоях показывается либо мусор, либо серый фон. Когда я попытался вывести одну из картинок(раньше просто пытался залить одним цветом), он мне показал более светлый фон, на половине экрана. Пытаюсь понять в чем проблема, все сидел практически посимвольно сравнивал с примером, инициализация таймеров, инициализация ltdc. Все равно не понятно почему пример работает, а мой код нет. Подскажите куда копать ) Заранее спасибо за советы. Сосбтвенно мой проект: гугл диск https://drive.google.com/open?id=0BzZx_i0QoXoqVDI1ZHk2ck54Y2M гитхаб https://github.com/Kurojneko/display
-
Помогите разобраться с библиотекой HAL!!! Для вывода в данных в Visual Studio. Используется например Console.WriteLine("Val={0} co2 ",result); как в таком же контексте сделать передачу данных по USart например по HAL_UART_Transmit или HAL_UART_Transmit_IT. то есть некий текст изменяющие значение и текст снова "text text text {значение } text text text "
- 1 ответ
-
- stm32
- hal_uart_transmit
-
(и ещё 1 )
C тегом:
-
[сделано] stm32f103, дисплей от Raspberry Pi и трехмерная графика
COKPOWEHEU опубликовал тема в STM32
Обнаружил недавно у себя дисплейчик 3.2" от Raspberry Pi на контроллере ili9341. Запустил его (не без проблем, разумеется) на программном SPI контроллера ATmega8, но скорость не устроила. Так что переделал под самодельную отладочную платку для STM32F103C8T6. Проблемы с выводом просто информации были решены, однако остановиться не удалось В результате получилась библиотека трехмерной графики с буфером глубины. В этом контроллере всего около 20 кБайт ОЗУ, чего хватает на ~400 полигонов. Частота простой сцена близка к физическому ограничению SPI, более 20 кадров в секунду, сложные модели отрисовывались с частотой 13 кадров в секунду. Как по мне, неплохо для такого контроллера. Вот видео. (сюда возможно встроить видео с ютуба?) Правда, снимал на телефон, качество не очень. Собственно, особо помощь мне с этим не нужна, скорее, делюсь радостью. Оформлять статью по такому тоже смысла нет. Разве что кому-то будет интересно полазить по библиотеке, оптимизировать, оформить покачественнее или хоть совет дать. -
Собственно сабж. Цены умеренные.
-
Что то странное с часовым кварцем. Реагирует на приближение у нему.
Гость опубликовал тема в Песочница (Q&A)
Привет. Пилю усложненный таймер контроля кой-чего, специально для него купил платку с стм32 (фото внизу), потому что на ней сидит часовой и вроде как кварцевый резонатор. Вот щас допилил до теста работы rtc. И блин эта фигня реагирует на руку: убираю руки от нее - щелкает релешкой чаще чем по секундам, подношу - замедляется, дотрагиваюсь пальцем до корпуса кварца - встает наглухо. Прям капаситив проксимити сенсор. В коде точно активирован LSE. Это я чето накосячил, или там вовсе не кварц на этих платах? -
Использую библиотеку HAL Вроде поднял SPI (как проверить не знаю) . Пытаюсь переписать существующию библиотеку для ардуино под стм но все что выдает SPI либо 0x00 либо 0xFF =( иногда пробегают цифры но это скорее случайность. Может кто объяснить в чем может быть причина? SS pin управляется железом. если есть время сегодня то - скайп Discord teamspeak Radmin - буду признателен за помощь - достаточно результата в правильном считывание регистров или ткнуть носом что идет не так. Для начала делаю без прирываний и DMA Использую мк - stm32f103c8t6 модуль : rc-522 - данные отправляю через USB в ПК KEil 5 + cubeMX последней версии. Код процедур прилагаю.
-
С наступающим, форумчане. Будьте так добры, посоветуйте дисплей под выше указанный камень и интерфейс, с разрешением не меньшим 480x320. На али нашел пару дисплеев под rasberry pi с контроллерами ili9486L, ili9488 подойдут ли они? Заранее спасибо. Да и еще вопросец. DMA2D относится только к LTDC, или к дисплеям подключенным на FMC тоже?
-
Доброго дня, хочу занять досуг, собрать трекер головы, заказал из Чины : mpu9255, отладочную плату с stm32f407vet6 на борту и esp8266. Подскажите пожалуйста, к вот такой плате STM32_F4VE, нужен ли загрузчик типо st link, или она по usb программируется? STM32_F4VE_SCHEMATIC.PDF
-
В небольшую команду, которая занимается разработкой квест-комнат и электроники для квестов, требуется инженер-программист. В ходе работы предстоит программировать игровую логику, «оживлять» загадки и головоломки. Цель нашей работы — создать интересный игровой сюжет и в совершенстве воплотить его «в железе» и софте, чтобы принести игрокам удовольствие от игры! Мы постоянно ищем новые технологии, которые можно использовать в квестах От вас требуется: — понимать (иногда плохо формализованные) моменты игрового сценария, участвовать в обсуждении деталей технической реализации — писать стабильный и поддерживаемый код. Стабильный — потому что результатом вашей работы будут пользоваться люди и любая ошибка смажет впечатление от игры; Поддерживаемый — потому как часто только после реализации можно увидеть изъяны логики, улучшения визуальной составляющей и т. д., что требует оперативной корректировки; — уметь быстро «завести» периферийный интерфейс; у нас обычно нет невидимых радиосигналов или гигабайт свежей информации© в недрах жестких дисков, вся периферия мигает, светится или норовит укусить вас за нос; На текущий момент стек технологий следующий: — STM32L1, arm-gcc/mbed; — Raspberry Pi, Raspbian; — Python (думаем хотя бы частично переходить на JS в силу чрезвычайной модности главного разработчика); Из профессиональных навыков: — знание C/C++. Да, мы пишем встраиваемый код на плюсах. Хочется, чтобы вы понимали, как вызывается виртуальный метод, почему нельзя возвращать из функции временную переменную и что не так с проклятой строчкой «++i + ++i»; — умение работать с Linux хотя бы на уровне «зайти по ssh на Raspberry и прописать скрипт в автозагрузку»; — знание Python или JS. Программ по распознаванию инопланетных сообщений в белом шуме писать не требуется, только бизнес-логика и взаимодействие с системой (последовательный порт, запуск приложений и т. д.); — знание схемотехники. Отличить, например, SPI от I²C, уметь пользоваться осциллографом и мультиметром; к сожалению, не все баги находятся с помощью отладчика, так что вас не должен смутить неприпаянный резистор в схеме, из-за которого не идут данные; умение держать паяльник за правильный конец будет большим плюсом; вот еще пункт в конец: — владение современными средствами разработки: в первую очередь, система контроля версий (мы используем git); Пользоваться можно почти любой IDE, но с любителями писать код в блокноте (без автодополнения, подсветки синтаксиса и отступами вразнобой) далеко не уедем; Работа в просторном офисе, 5 минут от ст.м. «Технологический проспект» Пишите в ЛС или mail@s3f.ru
-
Доброго времени суток! Может кто-нибудь объяснить, в чём смысл и преимущества использования специализированных программаторов для STM32 типа ST-Link и клонов, работающих по интерфейсам SWD/JTAG, если записать флеш можно прямо по UART/ISP или быстрее по USB (при его наличии)? Я так понимаю, что программаторы, кроме записи в память, ещё умеют выполнять отладку - и это их единственное отличие. А если отладка не нужна? Вернее, часто ли она используется при написании каких-нибудь маленьких прикладных программ типа реле времени? Я собираюсь развести свою печатную плату для STM32F107, а потом хочется поэкспериментировать с STM32F407ZGT - в них в обоих есть USB интерфейс, они оба есть в списке поддерживаемых USB DFU (согласно AN 3156). Но на форуме я прочитал, что пока все сидят на дискавери, в основном из-за того, что в ней есть встроенный программатор ST-LINK прямо на плате, но почему его наличие так важно и не заменяется возможностью программирования по UART/ISP или по USB? Есть ли какое-либо отличие кроме возможности отладки? Может быть, как и в случае со фьюзами у AVR, у STM32 есть какие-то функции/настройки, которые можно использовать/изменять только программатором ST-LINK? И да, разве скорость программирования по USB будет существенно ниже, чем по тому же JTAG или SWD? Заранее спасибо за ответы! Заранее предупрежу, чот с микроконтроллерами я раньше работал, но вот от ST что-то более-менее делал только на STM32F030...
-
У меня есть мощный полевик который полностью открывается при 10 вольтах. МК выдаёт 3 В и если это подключить напрямую к транзистору получим большое падение напряжения, чего мне не нужно. Сначала думал сделать умножитель напряжения на 4, но смог умножить напряжение (пульсирующее) только на 2. Сейчас склоняюсь к применению драйвера верхнего плеча, но мне не нравится то, что это микросхема в корпусе so-8 плюс обвес, а транзистор у меня в корпусе sot-23 (IRFML8244TRPBF) что в итоге как то смешно получается по размерам. Нужен ваш совет, как это грамотно реализовать. Схема: