Jump to content

    

kumle

Участник*
  • Content Count

    150
  • Joined

  • Last visited

Community Reputation

0 Обычный

About kumle

  • Rank
    Частый гость

Старые поля

  • skype
    Array

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

2691 profile views
  1. Есть задача измерять фазу синусоиды с генератора в момент времени задаваемый с отметчика. В качестве отметчика беру сигнал 3.3v с той же самой частотой, но только c цифрового выхода этого же генератора Частоту сигнала вычисляю точно модулем захвата в микроконтроллере, получается в герцах два знака после запятой стоят стабильно Также Имеется отдельное АЦП которое всегда запущено и сэмплирует с частотой 5Кгц. По приходу фронта отметчика, я начинаю накапливать выборку 2048 сэмплов сигнала. Далее через сумму синусов и косинусов вычисляю действ. и мнимую часть сигнала и вычисляю фазу через atan2 Теперь самое интересное. Если подаю частоту 10 гц, то фаза считается правильно, стоит +/- 1 градус, при изменении фазы на генераторе тоже меняется ну ту же величину. Если подаю 100Гц, то уже фаза плавает +/-10 градусов. Это происходит отчасти из за того, что у меня есть задержка от прихода фронта отметчика, до прихода первого сэмпла с АЦП (ацп уже запущен ранее) Если частота оцифровки 5кгц, то максимальная задержка будет 200 мкс (время между сэмплами) Чтобы учесть эту задержку в расчете фазы, я делаю так: Я засекаю время прихода отметчика, затем засекаю время прихода первого сэмпла (сигнал DRDY c АЦП), затем разницу этих времен пересчитываю в градусы по формуле: Xg=(dt*360.0)/Tob dt - время в микросекундах от фронта отметчика до первого сэмпла, Tob - период синусоиды с генератора в микросекундах Затем из фазы полученной арктангенсом я вычитаю эту фазовую задержку Xg. Можно ли так делать ?
  2. Здравствуйте, вначале сообщения указано, что Вам требуется схемотехник, так вот он и разработает эту плату, причем она должна быть существенно проще и дешевле нежели чем LCard, так как будет заточена под конкретную задачу (известные уровни сигналов, известные параметры датчиков). Там будет максимум инструментальный усилитель + АЦП 24 бита. А с каналом передачи надо определяться после того как будет известен объем передаваемых данных. Вот например мы разрабатываем 8-и канальники с частотой оцифровки 26Кгц, 24 бита. Поток от одной такой платы получается 5 Mbit/s непрерывно Выходной интерфейс ethernet LAN, через wifi модуль пропустить можно, через bluetooth вряд-ли.
  3. Привет, я пробовал St-link донгл не переделывает в j-link, я переделал отладку stm32F4 discovery
  4. Спасибо, как придет платка буду пробовать !
  5. Всем привет, жду отладочную платку с ebay с модулем nrf51822 вот такую Перелопатил много инфы но до сих пор нет четкого понимания как прошивать, в особенности soft device Понял что нужен j-link от segger, но у меня есть только китайский клон, непонятно подойдет ли он ? Еще читал статью, что можно через st-link используя OPEN OCD, но как то там все сложно...
  6. LCD + stm32f4 discovery

    Это не совсем моя последовательность, я покупал дисплей через ebay и продавец там прикрепил эту инициализацию, они же заинтересованы чтобы у людей все работало. Я ее просто немного изменил.
  7. STM32F407 + CS43L22

    не, сейчас глянул, по умолчанию всетаки через i2S но все равно, даже если и так, все равно работало неправильно, так как начальный кусок файла глотает из-за того что MCK заранее не включается и выключается тоже некорректно из-за того что MCK должен некоторое время тикать после проигрывания. Вобщем я обе эти проблемы устранил
  8. STM32F407 + CS43L22

    работало, потому что в примере по умолчанию стоит работа через ЦАП микроконтроллера, а выход цапа подкл. к аналоговому входу кодека.
  9. STM32F407 + CS43L22

    Все победил я этот кодек, звук нормальный, файлик проигрывает полностью. Конечно в том виде как это было сделано в примере audio playback and record от MCD Application Team это было неработоспособно
  10. LCD + stm32f4 discovery

    попробовал, все рано нули считывает
  11. STM32F407 + CS43L22

    Перевел вчера кодек в режим MASTER, а микроконтроллер в SLAVE. Задал частоту MCK микроконтроллера 12.28 МГц через выход MCO2 (поигрался с настройкой PLL) В итоге с кодека получил частоту LRCK равную 8KHz и частоту SCK равную 512KHz Таким образом получил RATIO (SCK/LRCK)=64, но для этого надо передавать на кодек данные по 32 бита а не по 16, поэтому переключил i2s модуль микроконтроллера в режим << LSB justified 16-bit extended to 32-bit packet frame with CPOL = 0 >> а кодек переключил в режим Right-Justified Format и биты AWL поставил в единицы (Audio word length=16 bit) В итоге звук стал нормальный, но опять сьелся начальный кусочек файла ). Но наверное это уже с DMA проблема, так как теперь постоянно присутствует клок SCK.
  12. LCD + stm32f4 discovery

    void LCD_CtrlLinesConfig(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOG | RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOF, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //sasha RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE); GPIO_PinAFConfig(GPIOD, GPIO_PinSource0, GPIO_AF_FSMC); // D2 GPIO_PinAFConfig(GPIOD, GPIO_PinSource1, GPIO_AF_FSMC); // D3 GPIO_PinAFConfig(GPIOD, GPIO_PinSource4, GPIO_AF_FSMC); // NOE -> RD GPIO_PinAFConfig(GPIOD, GPIO_PinSource5, GPIO_AF_FSMC); // NWE -> WR GPIO_PinAFConfig(GPIOD, GPIO_PinSource7, GPIO_AF_FSMC); // NE1 -> CS GPIO_PinAFConfig(GPIOD, GPIO_PinSource8, GPIO_AF_FSMC); // D13 GPIO_PinAFConfig(GPIOD, GPIO_PinSource9, GPIO_AF_FSMC); // D14 GPIO_PinAFConfig(GPIOD, GPIO_PinSource10, GPIO_AF_FSMC); // D15 GPIO_PinAFConfig(GPIOD, GPIO_PinSource11, GPIO_AF_FSMC); // A16 -> RS GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_FSMC); // D0 GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_FSMC); // D1 GPIO_PinAFConfig(GPIOE, GPIO_PinSource7, GPIO_AF_FSMC); // D4 GPIO_PinAFConfig(GPIOE, GPIO_PinSource8, GPIO_AF_FSMC); // D5 GPIO_PinAFConfig(GPIOE, GPIO_PinSource9, GPIO_AF_FSMC); // D6 GPIO_PinAFConfig(GPIOE, GPIO_PinSource10, GPIO_AF_FSMC); // D7 GPIO_PinAFConfig(GPIOE, GPIO_PinSource11, GPIO_AF_FSMC); // D8 GPIO_PinAFConfig(GPIOE, GPIO_PinSource12, GPIO_AF_FSMC); // D9 GPIO_PinAFConfig(GPIOE, GPIO_PinSource13, GPIO_AF_FSMC); // D10 GPIO_PinAFConfig(GPIOE, GPIO_PinSource14, GPIO_AF_FSMC); // D11 GPIO_PinAFConfig(GPIOE, GPIO_PinSource15, GPIO_AF_FSMC); // D12 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOE, &GPIO_InitStructure); //for RESET HY32D GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); } void LCD_FSMCConfig(void) { FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMTimingInitTypeDef FSMC_NORSRAMTimingInitStructure; FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupTime = 0; //0 FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTime = 0; //0 FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime = 2; //3 FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAroundDuration = 0; FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision = 1;//1 FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency = 0; FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode = FSMC_AccessMode_A; FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1; FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM; FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState; FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable; FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Enable;//disable FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &FSMC_NORSRAMTimingInitStructure; FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupTime = 0; //0 FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTime = 0; //0 FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime = 4; //3 FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAroundDuration = 0; FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision = 1;//1 FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency = 0; FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode = FSMC_AccessMode_A; FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &FSMC_NORSRAMTimingInitStructure; FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); } Платка дома, вечером попробую изменить и считать еще раз ID А подсветка то у тебя включается ? У меня в основном модуле еще после инициализации есть строка LCD_BackLight(50); Она включает шим на половинную яркость подсветки
  13. STM32F407 + CS43L22

    Не, звук качественный когда все частоты генерит модуль i2s, а когда MCK я сам генерю таймером (это чтоб его заранее включать, чтобы начало файла не проглатывалось) то тогда звук уже искаженный, но файл теперь сначала воспроизводит
  14. LCD + stm32f4 discovery

    вобщем у меня возвращает id=0 ! но тем не менее все работает вот моя инициализация (весь файл прикрепить форум не дает) void LCD_Init(void) { static uint16_t DeviceCode; LCD_CtrlLinesConfig(); Delay(3000); LCD_FSMCConfig(); Delay(3000); TIM_Config(); LCD_BackLight(0); LCD_Reset(); DeviceCode = LCD_ReadReg(0x0000); asm("NOP"); asm("NOP"); asm("NOP"); LCD_WriteReg(0x0000,0x0001); Delay(100); LCD_WriteReg(0x0003,0xA8A4); Delay(100); LCD_WriteReg(0x000C,0x0000); Delay(100); LCD_WriteReg(0x000D,0x080C); Delay(100); LCD_WriteReg(0x000E,0x2B00); Delay(100); LCD_WriteReg(0x001E,0x00B0); Delay(100); LCD_WriteReg(0x0001,0x2B3F); Delay(100); LCD_WriteReg(0x0002,0x0600); Delay(100); LCD_WriteReg(0x0010,0x0000); Delay(100); LCD_WriteReg(0x0011,0x6070); Delay(100); LCD_WriteReg(0x0005,0x0000); Delay(100); LCD_WriteReg(0x0006,0x0000); Delay(100); LCD_WriteReg(0x0016,0xEF1C); Delay(100); LCD_WriteReg(0x0017,0x0003); Delay(100); LCD_WriteReg(0x0007,0x0233); Delay(100); LCD_WriteReg(0x000B,0x0000); Delay(100); LCD_WriteReg(0x000F,0x0000); Delay(100); LCD_WriteReg(0x0041,0x0000); Delay(100); LCD_WriteReg(0x0042,0x0000); Delay(100); LCD_WriteReg(0x0048,0x0000); Delay(100); LCD_WriteReg(0x0049,0x013F); Delay(100); LCD_WriteReg(0x004A,0x0000); Delay(100); LCD_WriteReg(0x004B,0x0000); Delay(100); LCD_WriteReg(0x0044,0xEF00); Delay(100); LCD_WriteReg(0x0045,0x0000); Delay(100); LCD_WriteReg(0x0046,0x013F); Delay(100); LCD_WriteReg(0x0030,0x0707); Delay(100); LCD_WriteReg(0x0031,0x0204); Delay(100); LCD_WriteReg(0x0032,0x0204); Delay(100); LCD_WriteReg(0x0033,0x0502); Delay(100); LCD_WriteReg(0x0034,0x0507); Delay(100); LCD_WriteReg(0x0035,0x0204); Delay(100); LCD_WriteReg(0x0036,0x0204); Delay(100); LCD_WriteReg(0x0037,0x0502); Delay(100); LCD_WriteReg(0x003A,0x0302); Delay(100); LCD_WriteReg(0x003B,0x0302); Delay(100); LCD_WriteReg(0x0023,0x0000); Delay(100); LCD_WriteReg(0x0024,0x0000); Delay(100); LCD_WriteReg(0x0025,0x8000); Delay(100); LCD_WriteReg(0x004f,0); LCD_WriteReg(0x004e,0); Delay(100); } и у меня еще вывод RESET дисплея подтянут к +3.3V 1ком и подключен к PD12, вывод TP_IRQ к PC1 и вывод BL_CNTL подключен к пину PA8 (TIM1_CH1_PWM)
  15. STM32F407 + CS43L22

    Выходит допустима, раз работает ) Во всяком случае модуль i2s микроконтроллера умеет выводить только частоту Fs*256, а Fs у меня 8 КГц Вот мастером сделаю кодек, тогда попробую 12Мгц