Vitaliy_ARM
Свой-
Постов
508 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о Vitaliy_ARM
-
Звание
Знающий
- День рождения 04.01.1985
Контакты
-
Сайт
Array
-
ICQ
Array
Информация
-
Город
Array
Посетители профиля
3 943 просмотра профиля
-
Китайцы разные бывают. Посмотрите www.pcbway.com. Там многие заказывают и делают, по их словам, за дорма даже несколько штук. В России подготовка производства стоить только от 3000р. Сам не заказывал, поэтому на 100% не уверен.
- 27 ответов
-
- stm32f429
- rgb интерфейс
-
(и ещё 1 )
C тегом:
-
Encoder на TIM3 на STM32F072RBT6
Vitaliy_ARM ответил Vitaliy_ARM тема в STM
Я видел эту статью, я использую HAL и проект был сгенерирован при помощи CubeMX. Перечитал интернет и вроде бы все сделано правильно, но таймер не хочет считать ... До сих пор не работает. Временно сделал через poling, так все работает. В таком случае обычно спасает сравнение дамба регистров таймера с рабочим проектом. Если у кого-то работает таймер в режиме энкодера, можете ли вы дать дамп на регистры таймера и GPIO? void opticEnc::exe() { nextState = readPins(); switch(state) { case 0: if(nextState == 0x1) { val++; state = nextState; } else if(nextState == 0x2) { val--; state = nextState; } break; case 1: if(nextState == 0x3) { val++; state = nextState; } else if(nextState == 0x0) { val--; state = nextState; } break; case 2: if(nextState == 0x0) { val++; state = nextState; } else if(nextState == 0x3) { val--; state = nextState; } break; case 3: if(nextState == 0x2) { val++; state = nextState; } else if(nextState == 0x1) { val--; state = nextState; } break; default: break; } }- 2 ответа
-
- stm32f072rbt6
- tim3
-
(и ещё 1 )
C тегом:
-
Encoder на TIM3 на STM32F072RBT6
Vitaliy_ARM опубликовал тема в STM
Теряю уже третий день над подключением энкодера к STM32F072RBT6. Проект был сгенерирован CubeMX и немного исправлена инициализация таймера 3 для режима энкодера. Энкодер припаян к PC6 и PC7. Импульсы на вход поступают (изменения отображаются в регистре IDR в режиме откладки), но в регистре CNT всегда 0. Я отладчиком записал туда значение 2, но это ни на что не влияет. Только показывает, что все записывается и таймер работает, но не считает импульсы. Подскажите, куда еще копать? Ниже привел код инициализации и дампы регистров таймера и GPIOC. Вот код инициализации Таймера. /* TIM3 init function */ void MX_TIM3_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOC_CLK_ENABLE(); __TIM3_CLK_ENABLE(); /*Configure GPIO pins : ENC0_I_Pin ENC0_Q_Pin */ GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Alternate = GPIO_AF1_TIM3; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); htim3.Instance = TIM3; htim3.Init.Prescaler = 0; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 0xFFFF; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; encoder.EncoderMode = TIM_ENCODERMODE_TI12; encoder.IC1Filter = 0x0f; encoder.IC1Polarity = TIM_INPUTCHANNELPOLARITY_RISING; encoder.IC1Prescaler = TIM_ICPSC_DIV4; encoder.IC1Selection = TIM_ICSELECTION_DIRECTTI; encoder.IC2Filter = 0x0f; encoder.IC2Polarity = TIM_INPUTCHANNELPOLARITY_FALLING; encoder.IC2Prescaler = TIM_ICPSC_DIV4; encoder.IC2Selection = TIM_ICSELECTION_DIRECTTI; HAL_TIM_Encoder_Init(&htim3, &encoder); HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_1); TIM3->CR1 = 1; // Enable the counter }- 2 ответа
-
- stm32f072rbt6
- tim3
-
(и ещё 1 )
C тегом:
-
AT45DB081D to AT45DB081Е
Vitaliy_ARM ответил Vitaliy_ARM тема в ARM
Код чтения статуса я исправил на двухбайтовый и исправил проверку EPE бита. Но результат записи с флешкой тот-же. Сегодня утром я пришел и начал тестировать эту флешку, первые 10 раз зашилась без проблем. Потом начала глючить один раз из 5 записей, потом чаще. И в итоге после записи 40 раз она сходит с ума и уже не пишется без ошибок. Если прибор полежит без питания несколько часов, она опять начинает шиться без ошибок. Какая-то ерунда ... Первый раз такое встречаю за 10 лет работы. Одна партия была куплена на DigiKey, вторая в Компеле. Ведут себя примерно одинаково. В общем вопрос работы флешки AT45DB081E в корпусе SO-8 пока открыт. P.S.: Мы нашли уже другой способ избавиться от проблемы. Применили алгоритм сжатия данных и запихнули коэффициенты в сжатом виде в микроконтроллер. Это решение даже лучше, чем применять внешнюю микросхему. Но вопрос глючности флешки это не решает. -
AT45DB081D to AT45DB081Е
Vitaliy_ARM ответил Vitaliy_ARM тема в ARM
Спасибо, заменил. Но это никак на ситуацию не повлияло. Глючит также. У них первый регистр статуса совместимый, наверное, теоретически, должен быть совместим и по коду. Это хорошее замечание, если у кого-то используется с AVR, могут наступить на грабли. Это немного другая флешка, фирмы SST. Похоже на чтение регистра статуса. У меня также функция ожидает завершения операции записи при помощи чтения регистра статуса и проверки соответствующего бита. -
AT45DB081D to AT45DB081Е
Vitaliy_ARM ответил Vitaliy_ARM тема в ARM
Да, конечно. CS опускаю перед записью и поднимаю после окончания. Я привел пример кода записи в первом посте. Привожу код функции status() ниже. Если впаять 081D, то глюки пропадают принципиально. Что только не делал, не могу добиться 100% нормальной записи. Если запись была совершена некорректно, бит EPE взводится и бывает, что я эту же страницу не могу перезаписать, при попытки использовать 82-ю команду, данные не записываются корректно и взводится этот бит. Что делать, если он взводится, в мануале не написано ... Документ этот видел. Эти команды (0x82 и 0xD2) у них не отличаются. Должно все работать одинаково, но не работает. P.S.: У меня напряжение питания флешки 3,3В, но не думаю, что это причина. /************************************************************** * чтение регистра статуса *************************************************************/ BYTE at45db081d::status() { // Status Register Read SET_AT45D_CS(); // set CS to LOW reg[0] = 0xD7; reg[1] = 0x00; pSpi->transfer(reg, 2); CLR_AT45D_CS(); // set CS to HIGH return reg[1]; } P.S.2: Сейчас есть более дешевая альтернатива этой флешки: http://www.spansion.com/Support/Applicatio..._S25FL-K_AN.pdf , но тут другая распиновка. Устройства уже выпущены и радикально переделывать что-то не особо хочется. -
AT45DB081D to AT45DB081Е
Vitaliy_ARM опубликовал тема в ARM
Доброе время! Было в свое время разработано устройство на микроконтроллере LPC1778 и флешке AT45DB081D-SSU. Последняя использовалась для хранения таблиц с коэффициентами. Эту флешку постранично могло обновлять программное обеспечение. Запись во флешку делается при помощи команды 0x82 (Main Memory Page Program through Buffer 1 with Built-In Erase), для чтения использую 0xD2 (Main Memory Page Read). Все работало замечательно, пока AT45DB081D-SSU не сняли с производства. На замену ей пришла AT45DB081E от Adesto, которую мы установили в новую партию. И тут начались чудеса. После создания тестовых программ, выяснилось, что данные записываются некорректно, причем может во всей памяти записаться некорректно один байт, а может и вся страница, а может и все нормально записаться. Причем это не от чего не зависит, глючит спонтанно. Даже ввели верификацию страниц и повторную запись. Однако выяснилось, что контрольная сумма данных не совпадала, даже когда постраничная верификация и перезаписть проходила на ОК. Т.е. запись одной страницы может убить данных в другой. Думали, что флешки бракованные. Купили в проверенном месте - тоже самое. Подскажите, в чем может быть причина? Функция записи страницы приведена ниже. (используется 264 байтная страница) BOOL at45db081d::write264(WORD page, BYTE *pBuf) { unsigned int i; if(page > MAX_PAGES) return FALSE;// FALSE; SET_AT45D_CS(); reg[0] = 0x82; reg[1] = page >> 7; reg[2] = page << 1; reg[3] = 0x00; pSpi->transfer(reg, 4); pSpi->transfer(buf, 264); CLR_AT45D_CS(); for(i = 0xFFFFFFFF; i > 0; i--) { if(status() & 0x80) break; } if(i == 0) return FALSE; if(status() & 0x20) // EPE bit return FALSE; return TRUE; } -
LPC4357-EVB
Vitaliy_ARM ответил Vitaliy_ARM тема в ARM
Пардон, mihailovsky©pochta.ru (букву К лишнюю написал) -
LPC4357-EVB
Vitaliy_ARM ответил Vitaliy_ARM тема в ARM
Большое спасибо! Мой адрес mikhailovsky(собака)pochta.ru -
LPC4357-EVB
Vitaliy_ARM ответил Vitaliy_ARM тема в ARM
В том то и дело, что все ссылки, что там указаны, битые! Даже схемы на эту плату получить не могу. Единственно что удалось получить - пару примеров с LPCWire.com c EmWin. Люди отзовитесь, у кого-то наверняка есть хотя бы схема!? Буду рад хоть этому. -
LPC4357-EVB
Vitaliy_ARM опубликовал тема в ARM
Купил плату в компеле: http://www.element14.com/community/docs/DO...development-kit Плата пришла без диска. На сайте производителя все ссылки со схемами и примерами битые. Если кто имеет это все или скачал ранее, поделитесь плиз!! Моя почта: mikhailovsky(собака)pochta.ru. Больше всего интересует схема этого кита. -
Подскажите, у меня имеется линукс без Framebufffer'а и без X-ов (opensource linux ZedBoard), будут ли работать консольные приложения Qt4 под этот линукс???
-
Разобрался с настройкой среды под Ubuntu. Для работы ставить надо версию 12.04 x64. Тогда многие проблемы сразу исчезают. Причем перед установкой среды надо переключить dash на bash, это описано здесь: http://www.zedboard.org/content/arm-xilinx...eems-be-missing Ядро пока не компилировал, но разобрался как это сделать. Поставил пока готовый линукс, который скачал http://www.wiki.xilinx.com/Zynq+14.5+-+2013.1+Release . В архиве есть скомпилированная версия специально для ZedBoard. С XSDK разобрался и писать приложения под ней для линукса даволно просто, поразила возможность отладки приложений через Ethetnet (для встраиваемых систем это очень удобно), написал несколько, включая и hello_world. Qt4 удалось скомпилировать, удалось настроить QtCreator, однако на плате консольные приложения запускаться не хотят из-за того, что не установил библиотеки Qt4 туда, как и куда это сделать, пока еще не понял. В XPS есть возможность создавать простые периферийные устройства для PL (FPGA-части). Одно из которых - это банк 32-бит регистров до 32 штук. Работа с ними из процессорной части весьма проста. Далее пользовательский HDL файл можно модифицировать под себя. Собственно вопрос, как и где после этого назначить ножки в PL? Кто уже разобрался, разъясните пожалуйста ход действий?
-
Установил среду Vivado 2013.1 для этой платы под Ubuntu 12.10 x64. Все стало почти без проблем. Только драйвер для отладчика не стал. После запуска и нажатия на кнопку Сreate New Project, программа выдает ошибку. Все остальные кнопки работают исправно. Может кто подскажет, что делать в этом случае?
-
Понятно, спасибо за инфо. В общем все замечательно. Есть почти все. Для полного счастья не хватает OpenGL ES, нет на борту видяхи. Нашел, что есть вот такое решение: http://www.logicbricks.com/logicBRICKS/Ref...uick-Start.aspx GPU для Zynq. Но это уже за деньги судя по всему. По запросу могут предоставить OpenGL ES 1.1 библиотеки. Посмотрел, что я использовал сборку от Linaro: http://www.xilinx.com/university/zynq/demos/index.htm. Скачал Xilinux от Xilibus. Буду пробовать. Саму среду разработки пока не ставил, но для запуска придется. Пора переходить к разработке. :rolleyes: