Jump to content

Search the Community

Showing results for tags 'stm32f4discovery'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

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

Blogs

There are no results to display.

There are no results to display.

Marker Groups

  • Пользователи форума

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


Интересы


Город


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


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

Found 5 results

  1. Плата Sstm32f4discovery. Использую HAL. Стандартная инициализация не вырезана. Тактирование настраивается так: RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_OscInitTypeDef RCC_OscInitStruct; // Enable Power Control clock __PWR_CLK_ENABLE(); // The voltage scaling allows optimizing the power consumption when the // device is clocked below the maximum system frequency, to update the // voltage scaling value regarding system frequency refer to product // datasheet. __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); // Enable HSE Oscillator and activate PLL with HSE as source RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; // This assumes the HSE_VALUE is a multiple of 1MHz. If this is not // your case, you have to recompute these PLL constants. RCC_OscInitStruct.PLL.PLLM = (HSE_VALUE/1000000u); RCC_OscInitStruct.PLL.PLLN = 336; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 7; HAL_RCC_OscConfig(&RCC_OscInitStruct); // Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 // clocks dividers RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2); RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5); То есть тактируемтся от 16 MHz HSI, все делители - 1. Сам код передачи/приёма тоже HAL: #include <stm32f4xx_hal.h> UART_HandleTypeDef comp; uint8_t for_send[] = {0}; uint8_t for_receive[] = {1}; void init_led ( void ) { GPIO_InitTypeDef led; __HAL_RCC_GPIOD_CLK_ENABLE( ); led.Mode = GPIO_MODE_OUTPUT_PP; led.Pin = GPIO_PIN_14 | GPIO_PIN_15; led.Speed = GPIO_SPEED_LOW; led.Pull = GPIO_NOPULL; HAL_GPIO_Init( GPIOD, &led ); } void HAL_UART_MspInit ( UART_HandleTypeDef * huart ) { __HAL_RCC_USART1_CLK_ENABLE( ); __HAL_RCC_GPIOB_CLK_ENABLE( ); GPIO_InitTypeDef gpio; gpio.Mode = GPIO_MODE_AF_PP; gpio.Pin = GPIO_PIN_6 | GPIO_PIN_6; gpio.Pull = GPIO_PULLUP; gpio.Alternate = GPIO_AF7_USART1; gpio.Speed = GPIO_SPEED_MEDIUM; HAL_GPIO_Init( GPIOD, &gpio ); HAL_NVIC_EnableIRQ( USART1_IRQn ); } int main ( void ) { comp.Init.BaudRate = 9600; comp.Init.Mode = UART_MODE_TX_RX; comp.Init.HwFlowCtl = UART_HWCONTROL_NONE; comp.Init.WordLength = UART_WORDLENGTH_8B; comp.Init.OverSampling = UART_OVERSAMPLING_16; comp.Init.Parity = UART_PARITY_NONE; comp.Init.StopBits = UART_STOPBITS_1; comp.Instance = USART1; comp.State = 0; HAL_UART_Init( &comp ); __HAL_USART_ENABLE_IT( &comp, UART_IT_TXE ); __HAL_USART_ENABLE_IT( &comp, UART_IT_RXNE ); init_led( ); HAL_GPIO_WritePin( GPIOD, GPIO_PIN_15, SET ); while ( 1 ) { for( volatile int i = 0; i < 100000; i ++ ) { ; } HAL_GPIO_TogglePin( GPIOD, GPIO_PIN_14 ); } } void USART1_IRQHandler( void ) { if ( __HAL_UART_GET_FLAG( &comp, UART_FLAG_TXE ) ) { __HAL_UART_DISABLE_IT( &comp, UART_IT_TXE ); HAL_UART_Transmit( &comp, for_send, 1, 0 ); __HAL_UART_CLEAR_FLAG( &comp, UART_FLAG_TXE ); } if ( __HAL_UART_GET_FLAG( &comp, UART_FLAG_RXNE)) { __HAL_UART_DISABLE_IT( &comp, UART_FLAG_RXNE ); HAL_UART_Receive( &comp, for_receive, 1, 0 ); HAL_GPIO_WritePin( GPIOD, GPIO_PIN_15, RESET ); __HAL_UART_CLEAR_FLAG( &comp, UART_FLAG_RXNE ); } } Всё просто. Включаем передачу, приём. Передаём, в приёмнике забираем информацию и гасим включенный светодиод. ЗАходит в прерывание по TXE отправляет данные (Должны ли мы увидеть изменение регистра DR в отладчике, просто он остаётся пустой) Отослал, вышел из прерывания, начитает мигать светодиодом( просто как индикатор что схема работает). Но приёма не происходит. Все инициализации сверены с user_manual. По всему коду прошёлся с отладчиком, все биты HAL выставляет правильно. PB6 и PB7 просто перемычкой соединены.
  2. Добрый день. Решил сделать часы на газоразрядных индикаторах. Остановился на управлении дешифратором, который преобразует двоичный код порта в десятичный. Использую дешифратор К155ИД1 и отладочную плату STM32F4Discovery. Проблема в следующем: при попытке выставить любое значение порта от 0b0000 до 0b1111 напряжение на выводах микроконтроллера "гуляет" в пределах 0,5 - 1,3 В, адекватно реагирует только нулевой пин. То есть, если отладчик показывает, что GPIOA = 0b0110, то на нулевом выходе логический ноль(0 - 10мВ), а на остальных "болтанка". Пробовал "перенести" программу на другие порты - все то же самое, только на порте Е адекватно работают 0 и 2 пины. Пробовал проводить измерения как с висящими в воздухе выводами, так и подключенными к дешифратору, результат 0. В чем может быть дело? Схему подключения и файлы проекта прикладываю ниже. Простите за внешний вид кода - это рабочая версия. В конце простыни можно увидеть попытки присвоить различные значения порту и проверить, что будет на выходе. Результат остался нулевым. Еще раз повторюсь, отладчик указывает, что в порты выставляется значение как положено, но при измерении получается ****. Nixie_Clock_0v01.rar
  3. здравствуйте, подскажите пожалуйста, имеется STM32F4Discovery и вот этот драйвер http://www.pololu.com/product/777, на Discovery настроил порты, задержка, флаги, USART, отправка команд идет через sprintf, когда запускаю просто светодиод мигает, но двигатели не хотят работать, не могу никак разобраться как довести его до ума
  4. Привет всем Озаботился тут созданием USB HID устройства на данном проце. Находил с интернете массу примеров HID устройств, эмулирующих джойстики, мыши, клавиатуры, пульты ДУ и прочую дребедень... Но мне не нужны все эти клавиатуры, джойстики и пульты .... Нужно Generic устройство - принять от компа 64 байта, отправить в комп 64 байта. И всё. Такой пример я нашёл только один - http://we.easyelectr...4-discovey.html , как пишет автор, на основе примера от более младших STM32. Этот пример включает/выключает светодиодики платы по команде с компа и шлёт в комп данные, когда нажимают кнопку. Это работает. Но у него размер и входящего и исходящего блока данных - 2 байта вместо доступных 64 (видимо автор память экономит, ему почти 200 кил RAM этого камня мало ) - форменное издевательство короче . Решил я его пример переделать. Поменял VID, PID, чтобы моя прога его увидела, нашёл дескриптор конфигурации, исправил 2 макроса, описывающих размеры конечных точек, прошил. Работоспособность лампочек и кнопки не нарушилась, всё исправно управляется, на кнопку реагирует, но чтение свойств устройства показывает InputReportByteLength=OutputReportByteLength=2, т.е. размер репортов не изменился. Нашёл я HID дескриптор, изменил его. Убрал описания кнопок, лампочек, оставил только описания входного и выходного репортов. Получилось следующее: #define CUSTOMHID_SIZ_REPORT_DESC 32 ........................ __ALIGN_BEGIN static uint8_t CustomHID_ReportDescriptor[CUSTOMHID_SIZ_REPORT_DESC] __ALIGN_END = { // Global Usage Page - Vendor-defined 0x06, 0xFF, 0x00, // USAGE_PAGE (0xFF00) // Collection: Application 0x09, 0xFF, // USAGE (vendor defined) 0xA1, 0x01, // COLLECTION (Application) // Input report: Vendor-defined 0x09, 0xFF, // USAGE (vendor defined) 0x95, HID_IN_PACKET, // REPORT_COUNT = 64 - Размер конечной точки 0x75, 8, // REPORT_SIZE = 8 0x15, (unsigned char) -128, // 0x15, 0x25, (unsigned char) 127, // 0x25, 0x81, 0, // Output report: vendor-defined 0x09, 0xFF, // USAGE (vendor defined) 0x95, HID_OUT_PACKET, // REPORT_COUNT = 64 - Размер конечной точки 0x75, 8, // REPORT_SIZE = 8 0x15, (unsigned char) -128, // 0x15 0x25, (unsigned char) 127, // 0x25 0x91, 0, // 0xC0 // End collection }; // CustomHID_ReportDescriptor Устройство опознаётся, винда не ругается, но чтение свойств даёт InputReportByteLength=OutputReportByteLength=65 (!) и все попытки что либо послать в железяку даёт ошибку 87 - Invalid Parameter. Хоть и шлю я ему 2 байта ... На чтении тупо виснет без каких-либо ошибок. Прогу приходится диспетчером задач вырубать. Сильно подозреваю, что западло заключено в этих 65 байтах и сидит оно в HID дескрипторе, но не пойму что именно там не так. Сам по себе HID дескриптор вроде правильный, на древнейшем AT91SAM7S256 2006 года выпуска работает с песнями . Помогите пожалуйста, кто может. Спасибо. ЗЫ. Утилиту HID Descriptor Tool 13-летней давности видел, знаю, но вот никак за эти 13 лет не врублюсь, что там к чему. То ли я идиот, то ли писали её идиоты . К тому же вылетает она с какими-то сбоями типа "Can't read memory at address 0x00000000" .... Можно, конечно, сделать CDC, проэмулировать COM-порт (кстати делал, работает ), это может и лучше с т.з. быстродействия (всё-таки bulk-передачи, а не Control), но не хочется, чтобы железка торчала в списке портов.
  5. Суть задачи состоит в следующем: необходимо разработать модуля передачи файлов (например сигнала, записанного с микрофона на плате) из USB-флешки (подключенной к плате STM32F4Discovery) по интерфейсу UART. Если кто-то этим занимался или может что-то подсказать, то буду благодарен за любую толковую информацию.
×
×
  • Create New...