adnega
Свой-
Постов
3 594 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Весь контент adnega
-
Старт на STM, с чего начать
adnega ответил k155la3 тема в ARM, 32bit
Можете озвучить круг задач, которые вы собираетесь решать на STM32? Если это задачи уровня F7, то может, лучше сразу Cortex-A начинать? -
На что бы перейти...
adnega ответил Arlleex тема в ARM, 32bit
С чего вы это взяли? DMA может откуда угодно куда угодно произвести транзакцию, если на это нет ограничений (CCM, выравнивание и т.п.) и есть доступ к соответствующим шинам. Много раз обсуждалось, как таймер инициирует транзакцию в SPI. Там единственная особенность, что от момента запроса до момента транзакции может пройти некоторое время (у меня получалось ~12 тактов) и при высоких скоростях SPI сложно получить равномерный SCK (без межсимвольных пауз). -
На что бы перейти...
adnega ответил Arlleex тема в ARM, 32bit
Если нужно заполнить кольцевой буфер для постобработки, то полностью согласен. -
На что бы перейти...
adnega ответил Arlleex тема в ARM, 32bit
1мкс -> 1МГц. Даже на МК с тактовой 168МГц у вас 168 тактов на посылку. По-моему, ничего разумного за такое время не сделать. STM32F тут не подходит не из-за SPI, а из-за общей производительности. Тут вариант - на внешней ПЛИС сделать опрос АЦП, а МК предоставить доступ по внешней шине, или правдами-неправдами "окутать" доступ к АЦП в какой-нить DCMI при помощи CPLD попроще. У ТС озвучивалась задача 5кГц, и под нее выбирались МК типа STM32F Если 5кГц это максимум, то на любом STM32F это делается легко даже с ручным дерганьем CS. -
На что бы перейти...
adnega ответил Arlleex тема в ARM, 32bit
Например, вам нужно передавать пакет данных в АЦП с частотой 5кГц. Вы: 1. Делаете таймер с частотой срабатывания 5кГц. 2. В обработчике прерывания этого таймера поднимаете CS ручками. 3. Затем обрабатываете приемный буфер от SPI и готовите буфер отправки. 4. Потом опускаете CS ручками. 5. Настраиваете DMA и запускаете его. 6. Выходите из прерывания таймера. Чем не устраивает? п. 2 и п. 4? -
STM32F4 DAC+DMA Normal mode
adnega ответил alex1985 тема в ARM, 32bit
И не понятно зачем ТС смешивает работу через HAL и через регистры? Нужно выбрать что-то одно (только HAL). -
STM32F4 DAC+DMA Normal mode
adnega ответил alex1985 тема в ARM, 32bit
Да, неплохо бы перед инициализацией сбрасывать статус DMA, типа -
Разработка СКУД
adnega ответил Intellect тема в Предлагаю работу
И что? Есть рынок, есть предложение. Если есть потребность - за деньги вы ее закроете, НО вы же не для себя-одного разрабатываете СКУД(?), а для продажи на рынке, в таком случае, у вас мало шансов, что покупать будут ваше. Пример можете привести, чего вам не хватает? У всех есть открыть закрыть дверь, помигать светодиодиками, поставить/снять с охраны, разделение по зонам, учет рабочего времени и т.п. Или хотя бы список производителей, который вы проанализировали и они вам не подошли? Мы вам этот список расширим. Выше функционал - выше стоимость. Существуют Требования к такому типу оборудования для разных видов объектов - порой они не позволят сделать проще, а значит дешевле. А можете про себя рассказать? Вы организация из этой области? Вы физлицо с кучей лишних денег? Вы менеджер кадрового агентства? Курсовая или диплом? Складывается впечатление, что вы хотите сделать железяки для своих потребностей пару штук за дешевле существующих... Это опечатка? Вам нужен ОДИН человек всего? -
Разработка СКУД
adnega ответил Intellect тема в Предлагаю работу
А чем существующие СКУД не устраивают? -
проблемы с SDHC
adnega ответил alexey123_45 тема в ARM
Использую CMD18_READ_MULTIPLE_BLOCK + CMD12_STOP_TRANSMISSION для чтения, и ACMD23_SET_WR_BLK_ERASE_COUNT + CMD25_WRITE_MULTIPLE_BLOCK + CMD12_STOP_TRANSMISSION для записи. Перед и после операций - CMD13_SEND_STATUS. -
Python для разработчика
adnega ответил Dubov тема в Программирование
Питон встроен в свежий KiCAD, LibreOffice и т.п. - можно автоматизировать некоторые вещи. -
Один должен уметь быть внешним запуском для ADC, а второй - событием для DMA.
- 7 ответов
-
- stm32f103
- stm32f103 фильтр винера
- (и ещё 1 )
-
Нужно засинхронизировать входной и выходной потоки. Я делал по таймеру. Правда для F407. Настраиваем TIM1CH1 и TIM4CH1 на генерацию нужной Fд. Настраиваем ADC1 на запуск по внешнему событию TIM1CH1. Настраиваем DMA2Stream0 на кольцевой буфер АЦП, куда по запросам от ADC1 будем складывать данные. Настраиваем DMA1Stream0 на кольцевой буфер ЦАП, откуда по запросам от TIM4CH1 будем копировать данные в DAC. В обработчике прерывания от DMA2Stream0 обрабатываем полу-кольцо от АЦП и заполняем полу-кольцо для ЦАП. Уверен, что-то подобное можно сделать и в F103. У ТС F103, а примеры
- 7 ответов
-
- stm32f103
- stm32f103 фильтр винера
- (и ещё 1 )
-
CAN over DC
adnega ответил baritono тема в Controller Area Network (CAN)
Для какой-то частной задачи можно найти много упрощений, но иногда бывают непростые случаи. Например, у меня в шине CAN помимо управляющий посылок с высоким приоритетом могут гулять всякие неважные мультимедийные посылки (тот же интерком). Шина при этом может быть загружена на 100%. Часть мультимедийных посылок может быть потеряна (это будет эквивалентно половинной Fд), но управляющий трафик всегда должен выигрывать арбитраж. Скорость не большая 50кБит/с. Я не вижу простого шлюза, а тоже хотелось бы прокинуть все через какую-нить esp8266. -
CAN over DC
adnega ответил baritono тема в Controller Area Network (CAN)
Это если CAN не нужен. А если CAN нужен? Нет прозрачного решения CAN-UART-CAN - нужно так или иначе шлюз мастерить. Я так понял у ТС -
CAN over DC
adnega ответил baritono тема в Controller Area Network (CAN)
Сила пусть через спец подшипники идет, а CAN лучше пустить через токосъемники, если скорость вращения позволяет. Не нужен никакой огород с электроникой. -
CAN over DC
adnega ответил baritono тема в Controller Area Network (CAN)
Погуглил. Существуют вещи типа SRH0317-2. Может, лучше их поставить и не выдумывать модемы-шлюзы-протоколы-конструкции? -
CAN over DC
adnega ответил baritono тема в Controller Area Network (CAN)
Не понятен спектр потребления, не понятны вопросы сертификации и т.п. Описанное вами решение не соответствует требованиям CAN, из-за выпрямителей оно не эффективно при 20А и вы теряете общий провод. 24В и 20А! - какая траншея? Если бы ТС подробнее описал сложности с новой проводкой, то было бы с чем сравнивать. -
CAN over DC
adnega ответил baritono тема в Controller Area Network (CAN)
У профессионалов, как правило, нет проблем с дополнительной парой проводов при решении задачи оптимальным способом. Если уже есть проводная линия, не понятно, что мешает дополнить ее еще парой проводов? Сколько будет стоить добавить эти провода? На мой взгляд, на порядок дешевле, чем придумывать способ обхода. При этом по надежности с выделенной линией вряд ли что сравнится. -
CAN over DC
adnega ответил baritono тема в Controller Area Network (CAN)
И где же в стандарте говориться про физический уровень? Я прочитал, что т.е. в стандарте физический уровень не описывается. Для работы CAN нужно в среде создать два состояния: доминантное и рецессивное, каждое со своими свойствами. Как это сделать - зависит от задачи. Конкретно для этой задачи вряд ли есть стандартное решение или простое решение. Проще передавать по какой-нить powerline-технологии и сделать CAN-шлюзы под данную технологию - тут я с novikovfb согласен. Делать свое powerline-решение под требования CAN я бы не советовал (уж слишком нагрузка у вас непростая). -
Умный выключатель
adnega ответил Antarius тема в Схемотехника
ТС тоже не робкого десятка, раз хочет менять лампочки под фазным напряжением. -
Умный выключатель
adnega ответил Antarius тема в Схемотехника
Дык, ремонт в квартире периодически делать нужно. Тут далеко не капиталка, а перед поклейкой обоев пробросить чутка проводов в стенах, не так дорого и не так сложно. Зато в будущем - никаких проблем. Менять силовую проводку (читай knx в щиток) я большой противник. Нужно чтобы в одно посадочное место устанавливались хоть умный, хоть обычный выключатель. Если хочется дешево, то есть много лампочек с esp8266 внутри, и всякие там Xiaomi. Перепроверьте, есть мнение (nooLite-F) что это уже не так. -
Умный выключатель
adnega ответил Antarius тема в Схемотехника
Лучше всего отдельный кабель до выключателя: по нему подавать питание 24В и интерфейс, лучше CAN :)) Один раз напрячься, зато потом никаких проблем. -
SDcard проблема с CDMD7
adnega ответил hardgame тема в IDE/ATA/SATA/SAS/SCSI/CF
Вы точно уверены что это данные из сектора? Пробоволи считать их повторно или на ПК? После команды чтения следует ответ на команду, а затем нужно ждать признака данных (очень долго). После признака данных идут данные и CRC. Ни разу, ни при каких обстоятельствах не видел, чтобы изначально рабочая карта начала выдавать 0xFF вместо данных. Я много лет собираю таких "уродцев" в свою коллекцию, но ничего подобного не встречал. Есть две "левые" карточки, купленные в отделе носовых платков, дык, одна вообще не читается, а на второй работают только первые 128МБ из 2ГБ, но такие карты не для серьезного рассмотрения. Мне кажется я уже тут выкладывал результаты исследований карт при чтении потока в реальном времени, но не могу найти где именно. Чтение велось блоками по 256Б и по 8КБ (по 10 000 блоков в каждом эксперименте). Все данные считываются верно, но с различной задержкой. Иногда задержка настолько велика, что поток реального времени невозможен (в звуке появляются щелчки). Такие события имеют желтый фон. SDIO_stat_2.pdf -
Вы в своей прошивке должны дисплей проинициализировать, а затем выводить в него данные/картинку. Что-то типа этого con_str("disp_code = "); con_word(LCD_ReadReg(0x0000)); con_str("\n\r"); con_start(); if(LCD_ReadReg(0x0000) == 0x8989) { LCD_WriteReg(0x0000,0x0001); delay_ms(50); /* Enable LCD Oscillator */ LCD_WriteReg(0x0003,0xA8A4); delay_ms(50); LCD_WriteReg(0x000C,0x0000); delay_ms(50); LCD_WriteReg(0x000D,0x080C); delay_ms(50); LCD_WriteReg(0x000E,0x2B00); delay_ms(50); LCD_WriteReg(0x001E,0x00B0); delay_ms(50); LCD_WriteReg(0x0001,0x2B3F); delay_ms(50); /* 320*240 0x2B3F */ LCD_WriteReg(0x0002,0x0600); delay_ms(50); LCD_WriteReg(0x0010,0x0000); delay_ms(50); LCD_WriteReg(0x0011,0x6078); delay_ms(50); //0x6070 LCD_WriteReg(0x0005,0x0000); delay_ms(50); LCD_WriteReg(0x0006,0x0000); delay_ms(50); LCD_WriteReg(0x0016,0xEF1C); delay_ms(50); LCD_WriteReg(0x0017,0x0003); delay_ms(50); LCD_WriteReg(0x0007,0x0133); delay_ms(50); LCD_WriteReg(0x000B,0x0000); delay_ms(50); LCD_WriteReg(0x000F,0x0000); delay_ms(50); LCD_WriteReg(0x0041,0x0000); delay_ms(50); LCD_WriteReg(0x0042,0x0000); delay_ms(50); LCD_WriteReg(0x0048,0x0000); delay_ms(50); LCD_WriteReg(0x0049,0x013F); delay_ms(50); LCD_WriteReg(0x004A,0x0000); delay_ms(50); LCD_WriteReg(0x004B,0x0000); delay_ms(50); LCD_WriteReg(0x0044,0xEF00); delay_ms(50); LCD_WriteReg(0x0045,0x0000); delay_ms(50); LCD_WriteReg(0x0046,0x013F); delay_ms(50); LCD_WriteReg(0x0030,0x0707); delay_ms(50); LCD_WriteReg(0x0031,0x0204); delay_ms(50); LCD_WriteReg(0x0032,0x0204); delay_ms(50); LCD_WriteReg(0x0033,0x0502); delay_ms(50); LCD_WriteReg(0x0034,0x0507); delay_ms(50); LCD_WriteReg(0x0035,0x0204); delay_ms(50); LCD_WriteReg(0x0036,0x0204); delay_ms(50); LCD_WriteReg(0x0037,0x0502); delay_ms(50); LCD_WriteReg(0x003A,0x0302); delay_ms(50); LCD_WriteReg(0x003B,0x0302); delay_ms(50); LCD_WriteReg(0x0023,0x0000); delay_ms(50); LCD_WriteReg(0x0024,0x0000); delay_ms(50); LCD_WriteReg(0x0025,0x8000); delay_ms(50); LCD_WriteReg(0x004f,0); LCD_WriteReg(0x004e,0); } LCD_WriteReg(0x004e, 0); LCD_WriteReg(0x004f, 0); LCD_WriteIndex(0x0022); for( index = 0; index < 320 * 240; index++ ) { LCD_WriteData(index); } Прицепил. 3.2inch_320x240_Touch_LCD_A.7z