Jump to content

Search the Community

Showing results for tags 'STM32'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • admin
    • Питание
    • Ремонт
    • Системы охраны и наблюдения. Личная безопасность
    • Роботы и модели на ДУ-управлении
    • Световые эффекты и LED
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Металлоискатели
    • Автоматика
    • Электрика
    • Промышленная электроника
    • Измерительная техника
    • Мастерская радиолюбителя
    • КВ и УКВ радиосвязь
    • Радиопередатчики
    • Сотовая связь
    • Спутниковое ТВ
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Схемотехника для профессионалов
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
    • МК для начинающих
    • AVR
    • PIC
    • STM32
    • Arduino и Raspberry Pi
    • ПЛИС
    • Другие микроконтроллеры и семейства
    • Алгоритмы
    • Программаторы и отладочные модули
    • Периферия и внешние устройства
    • Разное
  • Товары и услуги
    • Коммерческие предложения
    • Продам-Отдам, Услуги
    • Куплю
    • Уголок потребителя
    • Вакансии и разовая работа
    • Наши обзоры и тесты
  • Разное
    • Конкурсы сайта с призами
    • Сайт Паяльник и форум
    • Курилка
    • Технический английский (English)
    • Наши проекты для Android и Web
    • FAQ (Архив)
    • Личные блоги
    • Корзина
    • Вопросы с VK
  • Переделки's ATX->ЛБП
  • Переделки's разные темы
  • Киловольты юмора's Юмор в youtube

Blogs

  • Твори, выдумывай, пробуй.
  • fant's блог
  • Ток покоя
  • Где купить велпатасвир, epclusa, velpanat, velasof, софосбувир в России по лучшей цене.
  • Китайские бренды видеокамер
  • Создание Маленькой Мастерской
  • Блог администрации
  • STEN50's блог
  • Изучение, наладка, исследование
  • MiSol62's блог
  • короткие записки по ходу дела
  • Программирование AVR и PIC блог
  • Стабилизированный выпрямитель тока ТЕС 12-3-НТ
  • Блог getshket
  • ТНПА
  • welder's блог
  • blog cheloveka loshadi
  • OPeX3's блог
  • Подводная робототехника
  • Сабвуфер и акустика.
  • Радиоуправляемая машина
  • Консультация психолога сексолога онлайн, психолог онлайн
  • Nokian блог
  • Оповещения Dermabellix Scam !! Не покупайте это !!!
  • Cheerful Boss' блог
  • Cheerful Boss' блог
  • VLAD1996B's блог
  • "Коллективное увеличение продаж"
  • Dudok's блог
  • "Коллективное увеличение продаж"
  • Goluboglazyi's блог
  • Прибор определяющий электролитический конденсатор на работоспособность.
  • Mosfet@'s блог
  • mazzi's блог
  • Лучшие компьютерные игры 2017
  • Marchenkokerya's блог
  • Заметки начинаущего аудиофила
  • Почти бесполезные проги
  • Светлый блог.
  • дядюшка Филин's блог
  • Дневники нуба
  • satyrn's блог
  • Люк. В погреб.
  • Фильм Дом Солнца
  • Светодиодная лента B-LED 2835-120 W белая негерметичная
  • Само-Реплицируещиеся Производственные Системы
  • Блог от Eknous
  • РВС's блог
  • Den_R's blog
  • РВС's блог
  • Чтото крутое и про криворукость
  • ekadom's блог
  • Проектирование любых чертежей
  • Lisovic's блог
  • Блог уже не юного радиогубителя
  • денди
  • eHouse
  • zaregan's блог
  • Схемотехника УНЧ с низковольтным питанием на примере приёмников фирмы Grundig
  • То, что в руки попало.
  • Блок питания водородного генератора и все что с ним связано
  • slava_va@mail.ru's блог
  • Блог alex123al97
  • slava_va@mail.ru's блог
  • параленое соединение КРЕНок или как сделать стабилизатор напряжения 24-12в
  • Свободная генерация Андрея Мельниченко
  • реобас
  • Модернизации системы впрыска на 555
  • помощь
  • Копии схем и печатных плат устройств попавшие ко мне
  • MBM75's блог
  • Буду
  • lagutai's блог
  • Мои проекты.
  • lagutai's блог
  • Трудовик
  • vOVK@'s блог
  • токарь-радиолюбитель
  • azlk3000's блог
  • Коллизия сингулярности
  • SmallAlex's блог
  • Вопрос по Цифровому усилителю мощности звука 2x12 Вт YDA138-E
  • bebulo's блог
  • Простейший макет станка термо-вакуумной формовки
  • Блог им. pryanic
  • peratronika
  • Zer's блог
  • Сага о китайском PCB сборщике
  • MEDBEDb's
  • Гнездо кукушки
  • hiMiческий блог
  • luna_kamen's блог
  • Изучаем USI на основе сверхэкономичного прототипа
  • Алекс-Юстасу
  • SUBWOOFER.RU
  • kot sansher's блог
  • Поделки стареющего пионера
  • доброжелатель2's блог
  • Grig96. Полезные заметки.
  • Attiny 0-ой и 1-ой серии (Attiny817, 1614 и прочие)
  • pavlo's блог
  • MSP430FR
  • viper2's блог
  • Моя Электро Чинильня
  • Selyk's блог
  • VoltServis.ru
  • kpush's блог
  • OM3 на новых платах.
  • конни's блог
  • Электронный экстазёр "MASHKA".
  • ptimai's блог
  • noc functionalities
  • Sun kapitane's blog
  • ODEON AV-500
  • Sun kapitane's blog
  • Логика на транзисторах,диодах, счетние тригери на транзисторах
  • AleksandrBulchuck's блог
  • Качественные окна от производителя
  • KRALEX's блог
  • Javaman's projects
  • SeVeR36's блог
  • 3232
  • Пять копеек.
  • Az@t's блог
  • Индукционный нагрев
  • Схемы разных устройств
  • Кардшаринг SAT ТВ блог
  • PENTAGRID SAYS
  • Ещо раз о "Кощее 5И"
  • Игровые автоматы на официальном сайте
  • коллекционер
  • дямон's блог
  • Ламповый усилитель и акустика для озвучки семейных мероприятий
  • дямон's блог
  • tiosmutoutrup1971
  • Светомузыкальная установка для новачков
  • Лучшие игры для ПК скачать бесплатно
  • sqait's блог
  • Блокнотик
  • Gubernator's блог
  • Записки электрика
  • Полстакана
  • Vrednyuka
  • Интегральные микросхемы
  • grigorik's блог
  • Интегральные микросхемы
  • VMWare удобство и безопастность
  • Профсоюз обычных пользователей
  • rtfcnf's блог
  • Гидроэнергетика в России: отечественные гидроэлектростанции, типы и характеристики
  • VMWare удобство и безопастность
  • Лайфхаки от Кати
  • Kinh chong anh sang xanh gia re
  • ukabumaga's блог
  • АО "Диполь Технологии"
  • artos5's блог
  • блог
  • Kraftwerk's блог
  • 1
  • Kraftwerk's блог
  • Как выбрать точечный светильник?
  • мастерская ky3ne4ik'а
  • Работа с микроконтроллером Atmega8
  • Aronsky
  • Игорь Камский
  • Диммеры
  • 5В = 1,5+3
  • vitiv' блог
  • Ремонт цифровой панели прибора тойоты марк 100. Замена транзистора 36 ( SOT- 23 )PNP
  • Все СРО России
  • 300writers
  • Металлоискатель Tracker FM-1D3
  • Былое
  • Создание монстра "Blaster 8920"
  • 2Smart Cloud Blog
  • EmmGold's блог
  • 2Smart Cloud Blog
  • ivan15961596's блог
  • Кумир у-001
  • ivan15961596's блог
  • My blog
  • Интернет радио в машину
  • SamON
  • Помогите люди добрые
  • AI
  • Помогите подключить маяк 231 стерео.
  • Гаусс-пушки
  • Название
  • 7400's блог
  • Как я собирал свой первый импульсный источник питания
  • Віталік Приходько_130349's блог
  • Lithium ECAD - российская САПР печатных плат
  • Евгений Малюта's блог
  • ПИшу свои мысли
  • werekpro
  • Venera Electronica
  • afurgon's блог
  • Выбросьте это в парашу!
  • odaplus' блог
  • Zvik's блог
  • Smart overload protection power amplifier «Zita (Z) ThermalTrak™»
  • радиоэлектоника
  • BoBka777's блог
  • МиУЗР - Модернизация и Усовершенствование Звуковой Радиотехники .
  • aleksey9900's блог
  • Лабораторная блок питания
  • Нашел статью о пайке проводов к светодиодов
  • Китайский городовой
  • Костик0's блог
  • УФ лампа для маникюра SK-818
  • 8 Contrasts Between Web Servers and Application Servers
  • Конденсатор
  • OPeX3's блог
  • Sem2012's блог
  • это не хлам – это часть моей жизни
  • OdiS' блог
  • aleksfil's блог
  • EmmGold's блог; AVR
  • З
  • Блог Плотникова Ильи
  • yureika's блог
  • Для начинающих
  • Fumitox's блог
  • Самоделки блог
  • ульян's блог
  • Блок питания 0-12В для начинающих
  • Dimko's блог
  • Иван Самец's блог
  • SolomonVR's блог
  • gendzz's блог
  • fleh138's блог
  • Электроника forever!
  • aleksejhozhenets' блог
  • aleksejhozhenets' блог
  • diserver блог
  • aleksey290476 блог
  • ВАРГ's блог
  • Люстра Чижевского
  • wanes101's блог
  • voldemar2009's блог
  • Jana's блог
  • Jana's блог
  • Рена Искужин's блог
  • abduraxman7's блог
  • Kuzumba's блог
  • Самопальник
  • заработок через интернет на запчасти!!!
  • electric.kiev's блог
  • lolo's блог
  • leravalera's блог
  • ideomatic's блог
  • приглашаем на работу инженера-радиоэлектронщика
  • FREEMAN_77's блог
  • Блог автоэлектрика
  • Блог начинающего электронщика
  • Dersu's блог
  • Электроэнергия и её экономия!
  • Электроэнергия и её экономия!
  • Семён Ковалёв's блог
  • piligrim-666's блог
  • помогите с партотивной калонкой
  • помогите с партотивной калонкой
  • Музыка в стене.
  • m-a-r-i-k-a's блог
  • cosmos44's блог
  • oyama14's блог
  • блог Виталика!
  • ciornii's блог
  • Великий и Ужастный блог
  • Denis__Ricov's блог
  • Universal12's блог
  • Sprut's блог
  • Alexeyslav's блог
  • cosmosemo's блог
  • Заметки радиолюбителя
  • Falconist. Мемуары
  • Блог MillyVolt
  • усилитель импульсов
  • Panasonic sa-ak 18
  • Простое радиоуправление из того, что было.
  • 35house
  • Блог Радиочайника
  • Блохи iiiytnik'a
  • Хороший сервис- Бяка
  • Аудиолаборатория "Философия Звука"
  • ОколоCADовое
  • Блог KVLADS
  • Короп блог
  • Автоматизация котла Protherm MTV
  • Бложиг Касянича
  • Обо всём
  • Эксперимент
  • No electronics
  • ПРИРОДА СВЕТА и ЕГО ВОЗМОЖНОСТИ
  • Генератор на xr2206
  • HTPOWLASER
  • Когда-то были очень популярны у радиолюбителей
  • AVR - микроконтроллеры
  • Микроконтроллер
  • Самодельный автосимулятор
  • Интернет-магазин керамической плитки «Боярская Плитка»
  • Разработка электронных метрических мишеней IPSC для мягкой пневматики (страйкбол)
  • ,

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

  1. Мы – команда из десятка человек. Каждый из нас имеет внешнюю постоянную работу по совершенно разным специальностям. Но нас объединило одно дело, над которым мы трудимся более трех лет. Это проект по полной автоматизации сдачи и съема жилья в аренду. Именно - полной, то есть, архитектура этой идеи более сложная и более функциональная, чем у Букинга и у иных конкурентов. В целях защиты корпоративных интересов наше название и адрес сайта я называть в этом публичном пространстве не буду. Но сделаю известным, что у нас есть инвесторы и в наш проект уже вложено порядка десятка миллионов рублей, что у нас есть созданное нами же работающее оборудование на объектах и сложнейшее серверное ПО и что уже выложено в популярные магазины наше мобильное приложения для съема жилья в аренду. Т.е. мы фактически уже не стартап, а компания с клиентами и доходами. Но, чтобы масштабировать сервис, чтобы привлечь новых инвесторов и выйти на более серьёзный уровень доходов, нам нужны новые разработки в области СКУД и тщательный анализ имеющихся на предмет модернизации. Поэтому нам нужны опытные специалисты по аналоговой и цифровой радиоэлектронике. А именно, в данный момент единица нашей системы работает на Raspberry Pi c простейшей обвязкой из реле, i2c – устройств ввода и вывода и иных простейших компонентов. Но далее предполагается усложнить ее с помощью добавления новых устройств на основе МК ESP (или более энергоэффективных МК), беспроводной связи типа LoRa и создания более сложных аналоговых устройств сбора обезличенной информации. В более далекой перспективе – создание собственных модулей шифрования и, может быть, даже собственного протокола беспроводной связи, что будет очень полезно для защиты отечественных интересов в условиях войны. От Вас не требуется менять работу, переезжать. Работу можно делать удаленно, хоть даже из другого региона, при этом строго соблюдая оговоренный график выполнения работы, неформальной отчетности и регулярного участия в онлайн-конференциях с командой. Объем работы, если у Вас есть опыт в указанных выше областях, на мой взгляд, не должен превышать нескольких часов в неделю, т.к. предполагается, что Вы уже знаете, что и как принято и нужно делать. Однако, если задача окажется более творческой, а Вы – творческим человеком, то расход времени будет таким, каким сочтете нужным. В данный момент мы можем предложить в качестве вознаграждения за работу долю в компании, для чего потребуется поработать некоторое время (полгода - год) над поставленной задачей и демонстрировать положительные результаты своей работы. А в случае успешной динамики компании, Вам, как и всем нынешним участникам компании, будет предложено перейти на оплачиваемую должность в компании. Как видите, мы не обещаем Вас озолотить. Но, с другой стороны, на данном этапе Вы ничем иным не рискуете, кроме своего времени. Для связи со мной прошу писать в личку, где нужно коротко написать о себе, в т.ч. город проживания и Ваш возраст. А здесь отвечать я не буду, потому что этот форум читают конкуренты)
  2. STM32F746NG keil 5.0 аудиокодек aday1361 При использовании одного буфера на приём и передачу звука через DMA всё работает нормально, если использовать разные буферы на приём и передачу, появляются лишние шумы и записанного голоса почти не слышно, буфер заполняется при срабатывании callback подскажите пожалуйста по данному вопросу
  3. Доброго времени суток! Недавно была предпринята попытка разобраться с STM32L071 при поддержке STM32CubeIDE. Скрины генерации проекта прилагаю. Решено было начать с самого базового - с UART. Для теста в UART была выдана строка, которая была принята компьютером. После чего я настраиваю прием данных по UART, зная максимальный объём посылки - включаю прерывание IDLE и запускаю приём. Несмотря на очевидное наличие данных на входе контроллера (видимое с помощью осциллографа), я не получаю признак их прихода, т.е. ни прерывание IDLE, ни коллбек. В чем может быть причина? //main.c void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) { if (huart->Instance == USART1) { } } int main (void) { /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ uint8_t aTxBuffer[] = " ****UART_TwoBoards_ComIT**** "; /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART1_UART_Init() HAL_UART_Transmit(&huart1, (uint8_t*)aTxBuffer, sizeof(aTxBuffer), 1000); __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE); HAL_UARTEx_ReceiveToIdle_IT(&huart1, (uint8_t*)receive_buff, 20); while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } } void USART1_IRQHandler(void) { /* USER CODE BEGIN USART1_IRQn 0 */ /* USER CODE END USART1_IRQn 0 */ HAL_UART_IRQHandler(&huart1); /* USER CODE BEGIN USART1_IRQn 1 */ if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE) == SET) { __HAL_UART_CLEAR_IDLEFLAG(&huart1); HAL_UARTEx_ReceiveToIdle_IT(&huart1, (uint8_t*)receive_buff, 20); } /* USER CODE END USART1_IRQn 1 */ }
  4. Всем привет! Хочу разработать платку, которая расширяет возможности БК машины, не знаю с чего начать. В программировании опыта более 10 лет, но это серверное программирование Вопросы 1) На чем лучше разработать CAN сниффер? чтобы недорого и удобно разрабатывать. У меня есть готовый образен на STM32, пока смотрю в его сторону, нашел еще варианты на Arduino 2) Как можно снять прошивку с STM32, или безопасно понять есть ли там защита? 3) Инструментарий: Что нужно для разработки кроме IDE? Какой-то переходник для прошивки? 4) Кто печатает платы по проекту чтобы можно было на себя взять только разработку, а печать заказать? 5) может ли быть такое что плата что у меня в образце какая-то типовая и её просто надо купить по каталогу и прошить? 6) есть ли какие-то распространенные библиотеки для разработки в CAN? 7) как провести отладку? что для этого нужно? Как я понимаю надо одновременно и комп к плате подключить и плату к can-шине?
  5. Начал изучать UART STM32 на отладочной плате STM2F446RE. Включил UART2, по умолчанию включились порты PA2,PA3. Включил прерывания, подключил переходник UART/USB CH340, перед этим установив драйвера. Добавил простенький код в stm32f4xx_it.c: в нём объявил две переменные, когда принимается 8 бит buffrec в ответ должен отправляться "Hello world!". /* USER CODE BEGIN Includes */ uint8_t buffrec[8]; uint8_t TX_data[]="Hello world!\n\r"; /* USER CODE END Includes */ void USART2_IRQHandler(void) { /* USER CODE BEGIN USART2_IRQn 0 */ /* USER CODE END USART2_IRQn 0 */ HAL_UART_IRQHandler(&huart2); /* USER CODE BEGIN USART2_IRQn 1 */ HAL_UART_Transmit(&huart2,TX_data,14,0xFFFF); HAL_UART_Receive_IT(&huart2, buffrec,8); /* USER CODE END USART2_IRQn 1 */ } В main.c объявил приём и передачу сигнала UART: /* USER CODE BEGIN 2 */ __HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE); __HAL_UART_ENABLE_IT(&huart2, UART_IT_TC); /* USER CODE END 2 */ В компиляции нет никаких ошибок и предупреждений. Приём и передачу мониторю через Advanced Serial Port Terminal 6. В итоге при попытке отправить комбинацию "12345" записываются только первые 2 числа. При этом происходит отправка 2 сообщений "Hello world!" сразу. При этом при записи двух бит, они записываются в пустые биты, а затем перезаписывают их. Кроме того, результат приходит на COM3 (порт подключения отладочной платы), а не на COM4 (порт подключения CH340), к которым подключены пины UART2 PA2, PA3. Из-за чего могут возникать эти проблемы?
  6. Есть плата, на которой находятся MCP348 и STM32F103T8U6. К MCP подключается термопара, стмка должна собирать преобразованные данные с MCP через интерфейс I2C и обрабатывать данные. Я застрял на моменте сбора данных. Написал функции для общения стм и mcp, но в ответ получаю это: При этом не важно какой канал выбран и к какому каналу подключена термопара. Функция main: int main(void) { Configure_GPIO_LED(); Configure_GPIO_I2C1(); Configure_I2C1_Master(); Configure_SysTick(); reg_conf = CONFIG_REG(1, 3, 1, 0, 0); while (1) { I2C_write_MCP(DA3_1_ADDR, reg_conf); delay(50); I2C_read_MCP(DA3_1_ADDR); delay(50); } } Функция чтения: void I2C_read_MCP(uint8_t slave_addr) { I2C1->CR1 |= I2C_CR1_START; while(!(I2C1->SR1 & I2C_SR1_SB)); I2C1->DR = (uint8_t)(DEVICE_CODE | (slave_addr << 1) | MODE_READ); while(!(I2C1->SR1 & I2C_SR1_ADDR)); for(int i = 0; i < 3; i++) { while(!(I2C1->SR1 & I2C_SR1_RXNE)); output[i] = I2C1->DR; } I2C1->CR1 |= I2C_CR1_STOP; } Функция записи: void I2C_write_MCP(uint8_t slave_addr, uint8_t data) { I2C1->CR1 |= I2C_CR1_START; while(!(I2C1->SR1 & I2C_SR1_SB)); I2C1->DR = (uint8_t)(DEVICE_CODE | (slave_addr << 1) | MODE_WRITE); while(!(I2C1->SR1 & I2C_SR1_TXE)); delay(1); I2C1->DR = data; while(!(I2C1->SR1 & I2C_SR1_TXE)); I2C1->CR1 |= I2C_CR1_STOP; } Функция настройки модуля I2C: void Configure_I2C1_Master(void) { RCC->APB1ENR |= RCC_APB1ENR_I2C1EN; I2C1->CR1 &= ~I2C_CR1_SMBUS; I2C1->CR2 |= 48; I2C1->CCR &= ~I2C_CCR_CCR; I2C1->CCR |= 120; I2C1->CCR |= I2C_CCR_FS; I2C1->TRISE = 24; I2C1->CR1 |= I2C_CR1_PE; } Подскажите, в чем может быть проблема? Или что я делаю не так.
  7. Добрый день! Пытаюсь наладить передачу по SPI данных к дисплею с DMA. Передача работает, дисплей полностью закрашивается, но устанавливается флаг ошибки FIFO в регистрах DMA. МК: STM32F401CEU6 Инициализация //Где-то там alignas(32) uint16_t buff[80 * 160]; // SPI init SPI2->CR1 |= (0b000 << SPI_CR1_BR_Pos) | SPI_CR1_MSTR | SPI_CR1_SSI | SPI_CR1_SSM; SPI2->CR2 |= SPI_CR2_TXDMAEN; SPI2->CR1 |= SPI_CR1_SPE; // DMA init DMA1_Stream4->CR |= (0b01 << DMA_SxCR_DIR_Pos) | (0 << DMA_SxCR_CHSEL_Pos) | (0b11 << DMA_SxCR_MBURST_Pos) | DMA_SxCR_MINC; DMA1_Stream4->PAR = (uint32_t)&SPI2->DR; DMA1_Stream4->M0AR = (uint32_t)getBuffer(); DMA1_Stream4->FCR &= ~DMA_SxFCR_FTH; DMA1_Stream4->FCR |= DMA_SxFCR_DMDIS; __DMB(); DMA1_Stream4->FCR |= (0b11 << DMA_SxFCR_FTH_Pos); Функции отправки void ST7735s::stopScreenUpdate() { DMA1_Stream4->CR &= ~DMA_SxCR_EN; while (DMA2_Stream4->CR & DMA_SxCR_EN) ; CS_Up(); } void ST7735s::startScreenUpdate() { stopScreenUpdate(); sendCommand(ST77XX_RAMWR); CS_Down(); DC_Up(); DMA1->HIFCR = DMA_HIFCR_CFEIF4 | DMA_HIFCR_CHTIF4 | DMA_HIFCR_CTCIF4 | DMA_HIFCR_CTEIF4 | DMA_HIFCR_CDMEIF4; DMA1_Stream4->NDTR = WIDTH * HEIGHT * 2; DMA1_Stream4->CR |= DMA_SxCR_EN; } После передачи устанавливается флаг ошибки работы FIFO-буфера в DMA. Флаг приходится сбрасывать вручную + ненормально это как-то. Ошибка, как-никак. Выдержка из документации 80 пикселей * 160 пикселей * 2 байта = 25 600 байт. Итого, если я правильно понял логику, при размере пакета в 16 кусков, при размере куска = MSIZE = 1 байту, должно всё работать, т.к. конфигурации допустима + 25 600 байт ровно делиться на транзакции по 16 байт. Пробовал менять NDTR - делил на 16, но это не помогло, т.к. надо указать именно количество передаваемых байт. С делением на 16 заполняется лишь 1/16 часть дисплея. Перезаписи (ovverun) тоже нет - все пиксели занимают свои места Ошибок SPI нет Выравнивание сделал с запасом. Пробовал ранее 4 - без результата (Точнее результат - ошибка).
  8. Привет всем! Помогите, пожалуйста, я только начал программировать МК STM32F407VG. Программирую в среде keil. Проект создал, все ок. НО есть единственное НО, в котором я не могу разобраться. Программа самая простая зажечь светодиоды на плате. #include "stm32f4xx.h" int main(void) { RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; GPIOD->MODER = 0x55000000; GPIOD->OTYPER = 0; GPIOD->OSPEEDR = 0; GPIOD->ODR = 0xF000; while(1) { } } Этот код работает, все диоды загораются, все ок. Вот, если рассматривать следующий код, где я переставляю одну строчку GPIOD->ODR = 0xF000; в цикл while(1) #include "stm32f4xx.h" int main(void) { RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; GPIOD->MODER = 0x55000000; GPIOD->OTYPER = 0; GPIOD->OSPEEDR = 0; while(1) { GPIOD->ODR = 0xF000; } } То код успешно НЕ работает, соответственно речи нет никакой, чтобы элементарно помигать диодами нет, через цикл for. Перерыл весь инет, инфы по данному вопросу никак не могу найти. Может кто-нибудь знает в чем дело??? Добавлю еще одно: САМОЕ интересное, что через отладку ПОШАГОВО, все работает, светодиоды загораются, а если просто выполнить код, ничего не горит P.S. не кидайте, пожалуйста, помидорами, я только начинающий...
  9. Здравствуйте! Имеется плата на основе микрокотроллера stm32f405vg, есть задача получения значения rms(среднеквадратичное значение тока) посредством АЦП ade7953. Данные с АЦП принимаются по SPI(посредством обращения к регистру 0x31a) в массив по типу arr[0] = 0x00, arr[1] = 0x00, arr[2] = 0xB1, arr[3] = 2C. Столкнулся с проблемой перевода этого значения в амперы. В application note к АЦП я нашел формулу, прикреплённых ниже, которая должна решать этот вопрос, но как применить её так и не додумался, прошу знающих помочь. Язык Си
  10. Здравствуйте, хочу впаять АУКС в магнитолу CD. Кассетные переделываются легко(замыкаются нужные концевики чтобы магнитофон думал что работает кассета, а на предусилитель кидаем линии aux, и специальную ножку мк подтягиваем к лог 1 или 0). А вот с мафоном CD все сложно, линии аукс включаются по цифровому протоколу, и с CD сигнал передается по SPI, что тоже вызывает сложность в переделке. Было решено обойти сам предусилитель магнитолы, а именно с помощью реле переключить линии основного усилителя на заказанный модуль USB-Bluetooth-MP3 из Китая. Также была разведена и изготовлена печатная плата с универсальными входами и выходами и реле. Управление платой осуществляю с помощью родной кнопки достать диск и при ее нажатии переключается управления родного энкодера. Оставалась сложность с регулировкой звука, решил попробовать цифровой потенциометр, и просто им подтягивать сигнал к земле(не знаю на сколько это правильно). Все алгоритмы реализовал, треки переключает, в память сохраняет. Но вот уже 2 день сижу и пытаюсь крутить цифровой потенциометр AD5263. Посмотрите пожалуйста, что я не так делаю? Питание логики у него разрешено 3V3, далее везде 5V. Подтянул res, shdn к +5V. Отправка по SPI 10bit, старших 2 адрес. Только не понятно нужно ли дергать ножку CS после каждых 10bit, или же можно отправить 4 по 10bit и потом дернуть CS чтобы данные потенциометре внеслись в регистр (стр.28)? Схема подключения: https://cloud.mail.ru/public/BQ7p/biynVUh2V Даташит AD5263: https://cloud.mail.ru/public/ihyh/sJzPohn2f Инициализировал SPI uint16_t spi_data; void Init_SPI(void){ //SPI1 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure); //подключение портов //GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_0);//NSS GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_0);//SCK GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_0);//MISO GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_0);//MOSI CLEAR_BIT(SPI1->CR1, SPI_CR1_BIDIMODE); //0: 2-line unidirectional data mode selected SET_BIT(SPI1->CR1, SPI_CR1_BIDIOE);//1: Output enabled (transmit-only mode) CLEAR_BIT(SPI1->CR1, SPI_CR1_CRCEN | SPI_CR1_CRCNEXT | SPI_CR1_CRCNEXT | SPI_CR1_CRCL);//0: CRC calculation disabled | 0: Next transmit value is from Tx buffer | 0: 8-bit CRC length CLEAR_BIT(SPI1->CR1, SPI_CR1_RXONLY);//0: Full-duplex (Transmit and receive) SET_BIT(SPI1->CR1, SPI_CR1_SSM);//1: Software slave management enabled SET_BIT(SPI1->CR1, SPI_CR1_SSI);////SS в высоком состоянии CLEAR_BIT(SPI1->CR1, SPI_CR1_LSBFIRST);//0: data is transmitted/received with the MSB first // Первым отправляется старший бит MODIFY_REG(SPI1->CR1, SPI_CR1_BR , SPI_CR1_BR_2 | SPI_CR1_BR_0);//011: fPCLK/16 SET_BIT(SPI1->CR1, SPI_CR1_MSTR);//1: Master configuration CLEAR_BIT(SPI1->CR1, SPI_CR1_CPOL);//0: CK to 0 when idle **** 1: CK to 1 when idle CLEAR_BIT(SPI1->CR1, SPI_CR1_CPHA);//0: The first clock transition is the first data capture edge ***** 1: The second clock transition is the first data capture ed SET_BIT(SPI1->CR2, SPI_CR2_TXDMAEN);//1: Tx buffer DMA enabled CLEAR_BIT(SPI1->CR2, SPI_CR2_RXDMAEN);//0: Rx buffer DMA disabled CLEAR_BIT(SPI1->CR2, SPI_CR2_SSOE);//0: SS output is disabled in master mode and the SPI interface can work in multimaster configuration CLEAR_BIT(SPI1->CR2, SPI_CR2_NSSP);//0: No NSS pulse CLEAR_BIT(SPI1->CR2, SPI_CR2_FRF);//0: SPI Motorola mode **** 1 SPI TI mode CLEAR_BIT(SPI1->CR2, SPI_CR2_ERRIE | SPI_CR2_RXNEIE | SPI_CR2_TXEIE); //0: Error interrupt is masked | 0: RXNE interrupt masked | 0: TXE interrupt masked MODIFY_REG(SPI1->CR2, SPI_CR2_DS, SPI_CR2_DS_3 | SPI_CR2_DS_0);//1001: 10-bit CLEAR_BIT(SPI1->CR2, SPI_CR2_FRXTH | SPI_CR2_LDMARX | SPI_CR2_LDMATX);//Last DMA transfer for reception/transmission SET_BIT(SPI1->CR1, SPI_CR1_SPE);//SPI enable// 1: Peripheral enabled } void start_SPI(uint8_t num){ //количество слов DMA_Cmd(DMA1_Channel3, DISABLE);//выкл для установки CNDTR DMA1_Channel3->CNDTR = num; SPI1_CS_ON(); DMA_Cmd(DMA1_Channel3, ENABLE); } void set_SPI_Tx(uint8_t adr, uint16_t Data) { SPI1_TX_buff[adr] = Data; } DMA uint16_t SPI1_TX_buff[4]; void SPI_DMA_Init(void){ //TX DMA1_Channel3->CPAR = (uint32_t)(&SPI1->DR); DMA1_Channel3->CMAR = (uint32_t)(SPI1_TX_buff); DMA1_Channel3->CNDTR = 0; CLEAR_BIT(DMA1_Channel3->CCR, DMA_CCR_MEM2MEM); CLEAR_BIT(DMA1_Channel3->CCR, DMA_CCR_PL); //Channel priority level 00:low MODIFY_REG(DMA1_Channel3->CCR, DMA_CCR_MSIZE, DMA_CCR_MSIZE_0);//01: 16-bits MODIFY_REG(DMA1_Channel3->CCR, DMA_CCR_PSIZE, DMA_CCR_PSIZE_0);//01: 16-bits SET_BIT(DMA1_Channel3->CCR, DMA_CCR_MINC);//1: Memory increment mode enabled CLEAR_BIT(DMA1_Channel3->CCR, DMA_CCR_PINC);//0: Peripheral increment mode disabled CLEAR_BIT(DMA1_Channel3->CCR, DMA_CCR_CIRC);//0: Circular mode disabled SET_BIT(DMA1_Channel3->CCR, DMA_CCR_DIR);//1: Read from memory CLEAR_BIT(DMA1_Channel3->CCR, DMA_CCR_TCIE | DMA_CCR_HTIE | DMA_CCR_TCIE);//Transfer error interrupt disable | Half transfer interrupt disable | Transfer complete interrupt disable SET_BIT(DMA1_Channel3->CCR, DMA_CCR_EN); } В таймере собираю и отправляю в потенциометр, также выключаю CS if(vol_level.send_flag_for_spi){//флаг отправки по SPI если выставлен, отправляем в потенциометр vol_level.send_flag_for_spi = OFF; set_SPI_Tx(0, vol_level.pot_1); set_SPI_Tx(1, (0x100 + vol_level.pot_2)); set_SPI_Tx(2, (0x200 + vol_level.pot_3)); set_SPI_Tx(3, (0x300 + vol_level.pot_4)); start_SPI(4); }else SPI1_CS_OFF();
  11. Приветствую уважаемые дамы и господа! Занимаюсь разработкой носимого устройства с целью исследования технологий LoRaWAN и BLE 5.0. А также поработать с энергоэффективными режимами работы МК STM32L4-серии. Исходные данные: где - D3 микросхема зарядки Li-ion\Li-Pol аккумулятора (MCP73831), D4 - DC\DC преобразователь USB -> 3.3V (LM3671), D5 - DC\DC преобразователь VBAT -> 3.3V (LM3671). Суть моего вопроса: Если присутствует напряжение VBUS (USB), то необходимо выключать преобразователь D5 сигналом LM3671_BAT, но включать D4 сигналом LM3671_USB. Таким образом получается, что аккумулятор будет заряжаться, а питаться прибор будет от USB. Мои предположения, рассуждения и решения которые я вижу: Если управлять преобразователями при помощи GPIO портов МК, то получится, что как только питание по USB отключится, то прибор выключится быстрее, чем успеет включиться преобразователь работающий от VBAT, ввиду чего я такое решение и отмёл. Использовать небольшую схемку на двух полевых транзисторах в одном корпусе (p и n типа). В симуляторе вроде как всё работает, но вероятно может произойти та же ситуация, что и в случае 1; Использовать микросхему выполняющую данную задачу, но тут играет роль, что достать её сложно, стоит 7$ и выглядит как overkill для такой простой задачи. Покидайтесь, пожалуйста, камнями и критикой решений, своими вариантами решения задачи или же исправлениями к приложенным схемам. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Если вдруг кого-то заинтересует, то вот ссылка на GitHub проекта, а так же ссылка на GitHub библиотеки. Используются шрифты T-Flex GOST, можно получить по ссылке.
  12. Я написал программу последовательного порта с stm32, OP отправляет число, а затем возвращает число, но возвращаемое число - это какой-то неизвестный символ, скорость передачи синхронизирована 9608, стоп-биты данных и т.д. одинаковы, от tx до rx, все еще грязный код. Я поменял 3 помощника для отладки последовательного интерфейса, но они все одинаковые, кто-нибудь знает? Спасибо за ваш ответ.
  13. Добрый день. На проект требуется программист микроконтроллеров STM32 с пониманием Ethernet. Проект: плата работает под управлением STM32F413VGT6, представляет собой SIP-приставку для домофона. Для связи с Ethernet используется микросхема ENC424J600-I/P - мост SPI <-> Ethernet. Ниже приведено краткое описание функционала: Устройство должно обеспечивать: 1. Прием голоса из домофоной линии и оцифровка с помощью встроенного в контроллер АЦП. 2. Передача голоса по сети Ethernet по протоколу RTP. В качестве транспорта использовать UDP. 3. Прием голосовых сообщений по Ethernet по протоколу RTP и передачу их на встроенный ЦАП. 4. Микроконтроллер должен обеспечивать связь с внешним миром с помощью интерфейса Ethernet через микросхему ENC424J600-PT. 5. Для установления соединения с сервером голосовых сообщений используется протокол SIP 2.0. с поддержкой методов, описанных в RFC 3261. 6. Прием и отработку команд, приходящих по MQTT: открыть входную дверь, открыть шлагбаум и т.п. 7. WEB-интерфейс для удаленных настроект и мониторинга рабочих параметров устройства. 8. Для работу через VPN-роутер контроллер должен поддерживать STUN. Есть проект для микроконтроллера для аналогичного устройства. Там используется STM32L475RET6. Для связи с Ethernet используется так же ENC424J600-I/P. Устройство успешно звонить по SIP на сервер. Выполняет приходящие MQTT-команды по открыванию дверей. Требуется: поправить ПО под STM32F413VGT6, добавить WEB-интерфейс, добавить возможность удаленного обновления ПО через WEB-интерфейс, добавить возможность перезагрузки устройства через WEB-интерфейс, добавить возможность хранения данных абонентов во FLASH микроконтроллера и возможность синрохизации этих данных с сервером, добавить STUN, исправить метод определения квартиры в которую звонят. Есть ТЗ на ПО.
  14. Вопрос такой: как запросить содержимое корневого каталога при использовании библиотеки lfs.h. При этом я имею дело с чужим кодом и там файловая система уже отформатирована (когда-то) и смонтирована (при запуске устройства). Оперировать с каталогами и файлами имена которых я заведомо знаю (или сам создаю) у меня получатся, но для текущей задачи это мне никак не помогает. Вероятно мой вопрос очень простой и для многих очевидный, но я тем не менее не смог с наскока найти на него ответ ни в гугле, ни в lfs.h. Очень извиняюсь за невежество, я новичек
  15. Хочу сделать вольтамперметр на базе STM32L151, есть ли какие нибудь особенности при разводке платы? Свой вариант прикрепляю ниже. Буду благодарен за дельные комментарии. ВА-30.dch
  16. dim21841

    STM32 2 serial

    Добрый день. Прошу помощи в выборе контроллера stm32 под следующую задачу: Bluetooth HC-05 (1 uart) необходимо связывать по uart с: 1) MAX232 (2 uart) по 9600, иногда 115200, 2) с Atmega328 (3 uart) по 115200. Задача stm32 выставлять скорость на hc-05 и соединять между собой нужные uart в соответствии с выбором (4 switch в dip-8 корпусе). Кто может что-то посоветовать? В stm32 пока совсем начинающий. STM32 выбрал потому что в перспективе хочу добавить возможность параллельно выводить данные и на lcd. Зарание благодарен за помощь.
  17. Помогите пожалуйста советом. Бьюсь несколько дней с опцией ADC. Я использую двухканальный АЦП IN0 и IN1 на микроконтроллере STM32L010RB через библиотеку HAL. Если проверять по отдельности, все в порядке, но когда я проверяю вместе, у меня все время одна и та же проблема: первый канал перезаписывает данные на втором канале, и у меня одинаковые данные на IN0 и IN1 в терминале Функция для выбора IN0. void ADC_Select_CH0(void) { ADC_ChannelConfTypeDef sConfig_0 = {0}; sConfig_0.Channel = ADC_CHANNEL_0; sConfig_0.Rank = 0; if (HAL_ADC_ConfigChannel(&hadc, &sConfig_0) != HAL_OK) { Error_Handler(); } } Функция для выбора IN1 void ADC_Select_CH1(void) { ADC_ChannelConfTypeDef sConfig_1 = {0}; sConfig_1.Channel = ADC_CHANNEL_1; sConfig_1.Rank = 0; if (HAL_ADC_ConfigChannel(&hadc, &sConfig_1) != HAL_OK) { Error_Handler(); } } основной цикл while(1) { ADC_Select_CH0(); HAL_ADC_Start(&hadc); HAL_ADC_PollForConversion(&hadc, 100); Axis[0] = HAL_ADC_GetValue(&hadc); HAL_ADC_Stop(&hadc); ADC_Select_CH1(); HAL_ADC_Start(&hadc); HAL_ADC_PollForConversion(&hadc, 100); Axis[1] = HAL_ADC_GetValue(&hadc); HAL_ADC_Stop(&hadc); sprintf(Tx_Data, "Axis X: %d;\r\nAxis Y: %d;\r\n\n\n", Axis[0], Axis[1]); HAL_UART_Transmit(&huart2, (uint8_t*)Tx_Data, strlen(Tx_Data), 1000); } ADC конфигурация: static void MX_ADC_Init(void) { hadc.Instance = ADC1; hadc.Init.OversamplingMode = DISABLE; hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2; hadc.Init.Resolution = ADC_RESOLUTION_12B; hadc.Init.SamplingTime = ADC_SAMPLETIME_160CYCLES_5; hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD; hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc.Init.ContinuousConvMode = ENABLE; hadc.Init.DiscontinuousConvMode = DISABLE; hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc.Init.DMAContinuousRequests = DISABLE; hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc.Init.Overrun = ADC_OVR_DATA_PRESERVED; hadc.Init.LowPowerAutoWait = DISABLE; hadc.Init.LowPowerFrequencyMode = DISABLE; hadc.Init.LowPowerAutoPowerOff = DISABLE; if (HAL_ADC_Init(&hadc) != HAL_OK) { Error_Handler(); } }
  18. Здравствуйте! Не могу понять, почему на дисплей выводятся только черные квадраты, если смотреть прямо, а если под углом, то видно строку, которую я вывожу. Как убрать эти квадраты, а строку сделать видимой?
  19. Начинаю знакомство с STM32 после AVRок. Решил сделать дрыганог через прерывание по таймеру. Плата Nucleo на базе STM32F446re, частота работы до 180МГц, собираю проект в CubeIDE. Для опыта решил взять таймер6 (на самом деле мне всё равно какой) и вызывать прерывания по переполнению счётчика. По даташиту, его тактирование идёт от APB1, которая работает на 45МГц, с множителем Х2 (т.е получается 90МГЦ). Прескалер выставил в 89 (т.е счёт должен идти с частотой 1 МГц), каунтер на 1 (т.е по идее я должен получать прерывания с частотой 500КГц). static void MX_TIM6_Init(void) { TIM_MasterConfigTypeDef sMasterConfig = {0}; htim6.Instance = TIM6; htim6.Init.Prescaler = 89; htim6.Init.CounterMode = TIM_COUNTERMODE_UP; htim6.Init.Period = 1; htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim6) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK) { Error_Handler(); } } В обработчике прерывания вызываю смену состояния светодиода на PA5. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == TIM6) //check if the interrupt comes from TIM1 { HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); } } Загрузив код и проверив логическим анализатором я получаю частоту 254,5Кгц. Меняя значения прескалера в меньшую сторону увеличения частоты добиться не могу (основной цикл пуст, в программе никаких вычислений кроме этого нет). Почему так происходит?
  20. Доброго времени суток, форумчане. Вопрос хотел задать на робофоруме, однако, похоже там сон-час (последние лет 5). На моих роботах стоят raspberryPi с помощью которых я в эклипсе удаленно дебажу и прогаю находящиеся на борту STMки через "openocd": https://www.instructables.com/Wireless-Programming-and-Debugging-With-STM32-and-/ Однако, есть серьезное неудобство. При включении робота, требуется вручную подключаться к пишке по ssh и запускать команду: "sudo openocd", после чего все работает. Пробовал различные варианты автозапуска команды "sudo openocd" при старте пишки, выпавшие в первых страницах гугла, но результата не получил. Быть может, кто-нибудь из местных имеет опыт запуска "openocd" при старте системы? (p.s.: мои распбианы без десктопа)
  21. Какой интерфейс использует STM32? Когда я использую arduino для соединения с моим lcd, интерфейс меняется на TTL, может ли STM32 использовать TTL интерфейс?
  22. Недавно я использовал Arduino для программирования stm32, и мне нужно использовать ШИМ-выход, но кажется, что частота фиксирована на 550 Гц. Я хотел бы знать, как изменить частоту ШИМ простым и легким способом. Например, я могу использовать analogWriteFreq(3000) для изменения частоты ШИМ на 3 КГц на ESP8266, но эта функция не работает на stm32. есть ли аналогичный метод для stm32?
  23. Друзья, привет. Есть код и схема для сборки частотомера на STM32, но нет сейчас возможности проверить работоспособность данного устройства. Если у кого-нибудь есть свободные 5 минут, не могли бы вы хотя бы без запуска, беглым взглядом посмотрев код, подсказать будет ли оно работать или нет и подсказать ошибки. В лучшем случае протестировать работает ли устройство или нет. Если кто поможет, буду чрезвычайно благодарен.
  24. Приветсвую! Кто ни будь работал с микросхемой STLED316S? Это драйвер семисегментонго индикатора. Можете привести минимальный кусок кода который выводит любую цифру на дисплей. Из документации не пойму как с ней работать... На форумах инфы почти нет. Из того что есть тоже толку мало. Буду рад любой инфе по этой микросхеме. Ещё правильно же понимаю биты по SPI передаются младшим вперёд, а такты нужно передавать инверсные? В качестве МК применяю STM32.
×
×
  • Create New...