Перейти к содержанию

levshkatov

Members
  • Постов

    40
  • Зарегистрирован

  • Посещение

Весь контент levshkatov

  1. Но они способны выдать точность порядка 3-4 метров? По горизонтали в смысле
  2. Модуль, наверное, поудобнее будет в использовании, поэтому предпочтительнее его. SiRF видел, на digikey дорогие модули конечно, баксов по 20 если в розницу. Но большое спасибо за помощь)
  3. Стало интересно поиграться с gps приемниками, стал гуглить какие-нибудь чипы и ничего толкового не смог найти. Знаю, что в основном их производят гиганты типа qualcomm, mtk. Ну либо есть совсем убогие китайские модули с али. В связи с этим вопрос: можно ли где-то достать качественный современный gps чип с нормальным даташитом и характеристиками? Желательно, конечно, наименее энергозатратный и наиболее точный (5 метров вполне достаточно). Интересует именно чип, а не готовые маячки. И еще вопрос по тем же qualcomm (или другие крупные компании, типа sony, lg), может кто-то знает как у них можно заказать что-либо (тестовую партия 3-5 штук, малый опт 500-1000). Возможно ли это сделать физ. лицу или необходимо юр. лицо?
  4. levshkatov

    Проблема с I2S на STM32F407

    День добрый. Пробую запустить 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();} }
  5. Передаю данные по I2S. Мне нужно узнать частоты на ножках WS, CK и MCK. Как это можно сделать программными средствами? Без осциллографов и ацп.
  6. Как правильно выделить сектор памяти для heap в stm32? Среда: Keil. Спасибо!
  7. Порылся в инете и не нашел. Вроде бы бесплатный флак, а никто не делится примерами его использования для ARM. Мне нужен Cortex-M4, но в принципе подойдет любой ARM. Любые статьи, код, все что угодно. Спасибо!
  8. levshkatov

    microSD и stmf4

    Подключаю microSD карточку к stmf4 используя FatFs. Инициализирую SDIO: static void MX_SDIO_SD_Init(void) { hsd.Instance = SDIO; hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING; hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE; hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE; hsd.Init.BusWide = SDIO_BUS_WIDE_4B; hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE; hsd.Init.ClockDiv = 3; } Успешно привязываю драйвер: FATFS_LinkDriver(&SD_Driver, SDPath) А дальше не могу пройти вот этот этап: f_mount(&fsFileSystem, (TCHAR const*)SDPath, 1) Программа доходит до выполнения функции SD_CmdError(*hsd), пытается считать флаг SDIO_FLAG_CMDSENT в течение 0xFFFF таймаута и по его истечении выкидывает ошибку. static HAL_SD_ErrorTypedef SD_CmdError(SD_HandleTypeDef *hsd) { HAL_SD_ErrorTypedef errorstate = SD_OK; uint32_t timeout, tmp; timeout = SDIO_CMD0TIMEOUT; tmp = __HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_CMDSENT); while((timeout > 0U) && (!tmp)) { tmp = __HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_CMDSENT); timeout--; } if(timeout == 0U) { errorstate = SD_CMD_RSP_TIMEOUT; return errorstate; } /* Clear all the static flags */ __HAL_SD_SDIO_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS); return errorstate; } Физически карта вроде бы нормально подключена, pull-up резисторы на линиях данных и на CMD. CLK напрямую к МК. На что стоит грешить?
  9. Проблему решил. Ни в одном примере в интернете не нашел, что необходимо написать функцию HAL_TIM_Base_MspInit() в msp.c. Код: void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) { if(htim_base->Instance==TIM3) { __HAL_RCC_TIM3_CLK_ENABLE(); HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM3_IRQn); } } Также нужно написать аналогичную функцию DeInit: void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) { if(htim_base->Instance==TIM3) { __HAL_RCC_TIM3_CLK_DISABLE(); HAL_NVIC_DisableIRQ(TIM3_IRQn); } }
  10. @mail_robot Знаю, что нужно разрешить прерывания, просто во всех примерах пользовались коллбэком и без этого. Включил прерывания. Но программа по-прежнему не заходит в void TIM3_IRQHandler(void){}
  11. Добрый день. Не хочет работать таймер на stm32f407. Пытаюсь раз в секунду поморгать светодиодом и не получается. Программа вообще не заходит в обработчик прерывания таймера. В чем может быть проблема? TIM_HandleTypeDef htim3; static void MX_TIM3_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); ... MX_TIM3_Init(); while (1){ } } void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; /**Configure the main internal regulator output voltage */ __HAL_RCC_PWR_CLK_ENABLE(); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); /**Initializes the CPU, AHB and APB busses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = 16; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } /**Initializes the CPU, AHB and APB busses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |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; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) { Error_Handler(); } /**Configure the Systick interrupt time */ HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); /**Configure the Systick */ HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); /* SysTick_IRQn interrupt configuration */ HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); } static void MX_TIM3_Init(void) { htim3.Instance = TIM3; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim3.Init.Prescaler = 48000 - 1; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 999; if (HAL_TIM_Base_Init(&htim3) != HAL_OK){ Error_Handler(); } if (HAL_TIM_Base_Start_IT(&htim3) != HAL_OK){ Error_Handler(); } } void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){ if(htim->Instance==TIM3){ HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); } }
  12. Ну декодирование должно быть программным, это задача заказчика. В целом с остальным согласен, но для того чтобы передавать данные на периферию по всем этим шинам, тоже нужна скорость. А еще RTOS, в которой выполняются задачи пользователя в текущий момент.
  13. @Sergey-Ufa Дело в том, что заказ на достаточно портативное устройство и два камня туда уже не влезут. Поэтому и спрашиваю про процессоры с двумя ядрами.
  14. Ну мне нужно обеспечить одновременную работу двух microsd карт, передачу файлов по usb-C, wi-fi, bluetooth, управление дополнительным видеопроцессором для экрана декодирование flac и работу RTOS. Понятно, что одновременная работа этого всего дела крайне маловероятно, но мне необходимо обеспечить ее выполнение даже в таком случае. Вполне возможно, что я неправильно распределяю ресурсы и даже f407 с этим со всем может справиться, но мне нужно чтобы кто то указал на мои ошибки,потому что сам я их не вижу.
  15. Добрый день. Хочу узнать, что есть на рынке быстрее чем контроллеры от ST. Ситуация вот какая, для моих задач мне не хватает stm32f4. По частоте не хватит и их нового чипа h7 с 400 МГц. Нужно порядка 800-1000Мгц чип. Ядро, очевидно что cortex, а там значения уже не так много имеет, какое именно. Всякие супер навороченные qualcomm и mediatek с 8 ядрами не подходят, слишком сложно для меня да и лишнее это. Какой нибудь процессор/мк для мультимедиа задач, с различными интерфейсами. Что подскажете? Или что лучше погуглить? Спасибо!
  16. @alx32 да, угадали, питание с 3.7 аккума. Спасибо за наводку
  17. Посоветуйте step-up dc-dc конвертер, выдающий стабильные 5В и способный пропускать до 0.4-0.6А.Смотрел в сторону ncp1402, но он выдаёт только до 200мА,а у меня в схеме stm32f407, который максимум до 240мА, карточка которая в пике тоже много жрет 50-70мА. Спасибо.
  18. Из-за чего могут появляться такие отметины на дорожках (неравномерный цвет)? И что это вообще такое? Звонится все отлично.
  19. Спасибо за ответы. Текстолит наверное такой потому что использовался на второй раз. Подготавливаю нулевкой(не знаю точно параметры, но вроде не грубая совсем). Часто встречаю что натирают каким то средством жидким и смывают. Комет? Пемолюкс порошком не стоит пробовать? ФШ это фотошаблон? На струйном принтере на пленке ломонд. Достаточно качественный. Пробовал даже в два слоя совмещать для уплотнения тонера.
  20. Сколько по времени стоит экспонировать плату с Ordyl 350? Лампа энергосберегайка 26Вт. Расстояние 15-20 см. Что уже только не пробовал. От минуты и до 10 минут. Но так и не нашел идеального времени экспонирования. Проявляю в растворе кальцинированной соды(на литр ложка с горкой) около 2-3 минут, если больше то уже пузырями покрывается фоторезист, что странно, по идее такое должно быть уже минут при 20-30. В чем я косячу с технологией?
  21. @master144 Хорошее качество это как у FM радио? Нет, к сожалению, такое не устраивает, т.к. на нормальных наушниках легко можно отличить flac высокого качества от mp3 320, что уж говорить об fm модуляции. Действительно думал в сторону гигагерцового диапазона и модуляции в нем же, но видимо это ранее не было сделано, скорее всего потому что не было смысла.
  22. @mail_robot А можете поподробнее рассказать, какое максимально возможное качество можно получить и каким способом? Спасибо!
  23. Реально ли передать качественный аналоговый аудиосигнал с плеера на наушники? Имеется в виду что D/A преобразование происходит на плеере и на радиопередатчик поступает аналоговый сигнал, который необходимо направленно передать на пару метров (на наушники). Насколько это вообще возможно сделать, если качество звучания должно быть не хуже чем при передаче через провода (Это важно, т.к. в качестве звука может использоваться flac 24/96 ).
  24. @COKPOWEHEU, понял, спасибо. А можете подсказать, что поставить вместо данного fcm?
×
×
  • Создать...