Форум программистов, компьютерный форум, киберфорум
Цифровая обработка сигналов
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/59: Рейтинг темы: голосов - 59, средняя оценка - 4.93
kobottyz7@kmoyt.som

Post карта на stm32f407vgt6

17.05.2017, 17:27. Показов 12691. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
необходимо реализовать post-карту на stm32f407vg. считывание данных с компьютера происходит с PCI-шины, и выводится на дисплей LCD 1602. При этом заняты пины PC1, PC0, PC2 | PB11, PB12, PB13, PB14, PB15, PD8, PD9, PD10, куда будут выводиться post-коды на дисплей.
В прикреплениях находится описание шины PCI и post карта на ПЛИС. необходимо сделать то же самое, но на stm32f407vg.
программирую на keil, поэтому было бы неплохо если проект был в keil. но это не так важно.
будьте готовы объяснить как работает программа:)
связаться можно с помощью

цена договорная

меняю ТЗ.
необходимо реализовать post-карту, чтобы выходные сигналы подавались на stm32f407vg.
т.е с помощью ПЛИС. не обязательно передавать все post-коды. просто чтобы последний post-код приходил на stm-ку.(лучше чтобы вместо индикаторов, post коды приходили на stm-ку).
тут есть готовый проект http://njnmnp.narod.ru/proj/pci80/pci80.html. можно просто её переделать. и нужно будет мне объяснить как программировать на ПЛИС и т.д и т.п. (походу это будет основной проблемой).
цена договорная
срок до 15 июня
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.05.2017, 17:27
Ответы с готовыми решениями:

stm32f407vgt6 I2C3
Не могу проинициализировать I2C3, помогите пожалуйста советом. I2C1 работает (ну как работает... после Инит тики на клок дает), а I2C3 не в...

Микроконтроллер STM32F407VGT6
Здравствуйте. Нужно составить принципиальную схему, состоящая из диодов, мультиплексора, контроллера, eth интерфейса, алгоритма нечеткой...

OpenMV (stm32f407vgt6 + ov9650)
собираю железку OpenMV https://github.com/openmv/openmv схема в аттаче не подключал sd и eeprom втыкаю usb - xp девайс не видит...

49
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
20.05.2017, 16:58
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от zot
... как мне кажется.
Когда дилетантам кажется, лучше перекреститься. Два раза для надежности.
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 4
20.05.2017, 17:05
Не наговаривайте на себя.
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
20.05.2017, 17:19
Цитата Сообщение от zot
Не наговаривайте на себя.
А чего наговаривать? Я вижу вы наизусть знаете теорему Котельникова, и с частотой Найквиста дружите. Флаг в руки zot...
0
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 73
20.05.2017, 17:53
Предлагаю ТС-у всёже приладить камень к шине, поискать там CLK, если он не будет просто так даваться контроллером PCI то прикинуться устройством, и в прерывании от порта по CLK линии читать что-там на ногах в буфер - сразу целиком регистр порта, а не попиново, и смотреть что получится. Или не получится, это тоже результат.
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 4
20.05.2017, 18:15
Цитата Сообщение от omokost
Цитата Сообщение от zot
Не наговаривайте на себя.
А чего наговаривать? Я вижу вы наизусть знаете теорему Котельникова, и с частотой Найквиста дружите. Флаг в руки zot...
Вы хотите опровергнуть факт того, что процессор способен считывать сигнал равный 1/2 частоты своего тактирования ? Боюсь вы ошибаетесь.
Про АЦП речь не идет, но вы наверное про синусоиды подумали или аналоговый сигнал. Тут речь про обычный меиндр. Открою секрет, АРМ может еще и генерировать меиндр на частоте своего тактирования, до 70 МГц, уж точно.
0
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 73
20.05.2017, 18:20
Меиндр тоже кстати не совсем верно звучит, меиндр можно просто оцифровывать по внутреннему таймеру, может получится не очень.
А тут есть клок (или фрейм) фронт которого послужит синхроимпульсом для запуска выборки. Шина то синхронная.
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 4
20.05.2017, 19:28
Оцифровывать думаю не нужно, проще по прерыванию ловим фронт (подъем или спад) и делаем что-нить полезное. У нас же не просто прямоугольные импульсы с разной скважностью, а именно со скважностью 2 (или 0.5 заполнением), т.е. меиндр.
0
kobottyz7@kmoyt.som
20.05.2017, 20:15
А как сделать так, чтобы данные из PCI шины в виде 20 регистров параллельно записались в память stm-ки?
т.е нужно зациклить программу -> while(1){} и поставить обработку прерываний по #FROME.
в обработчике прерываний пишем что то вроде:
void frame(){
pin1 = GPIO_Pin_0;
..
pin 20 = GPIO_Pin_20;
}
однако, разве так программа не будет выполняться последовательно(что приведет к потере тактов, и скорости действительно не будет хватать)?
спустя некоторое время прерываем цикл и обработываем pin1..pin20. из 2 СС -> 16 СС, комментарии к кодам и т.д
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
20.05.2017, 20:36
Цитата Сообщение от zot
...Вы хотите опровергнуть факт того, что процессор способен считывать сигнал равный 1/2 частоты своего тактирования ? Боюсь вы ошибаетесь...
Я не буду опровергать, буду считать.
Как известно STM это архитектура RISC, т.е. выполнение одной команды - один клок тактовой частоты ядра. Предположим стандартная частота 72 Мгц. При максимальной скорости, т.е. забития памяти командами NOP частота Котельникова составит 36 Мгц, но и контролер при этом ничего не делает.
Обработчик прерывания. Вызов прерывания не бесплатный, не знаю STM, но допустим один клок. Еще один - команда выхода из прерывания. Даже при при таком раскладе частота Котельникова составит уже 18 Мгц.
>> как сделать так, чтобы данные из PCI шины в виде 20 регистров параллельно записались в память stm-ки?
Опять же не знаю STM, но допустим у нас добавилось в прерывание еще 20 команд. Всего 22 клока тактовой частоты. Частота Котельникова уже меньше 2 Мгц, при этом мы еще ничего не сделали.
А ведь еще нужно читать и анализировать адрес на адресной шине, расшифровывать код ошибки, выводить его на индикатор и т.д.
0
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 73
20.05.2017, 21:09
Цитата Сообщение от kobaltiz7@gmail.som
А как сделать так, чтобы данные из PCI шины в виде 20 регистров параллельно записались в память stm-ки?
Code
1
2
3
4
5
6
7
8
9
10
11
12
/**
* @brief  Reads the specified GPIO input data port.
* @param  GPIOx: where x can be (A..G) to select the GPIO peripheral.
* @retval GPIO input data port value.
*/
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
{
/* Check the parameters */
ossirt_param(IS_GPIO_ALL_PERIPH(GPIOx));
 
return ((uint16_t)GPIOx->IDR);
}
Динный кусок из SPL, он читает целиком регистр порта (16бит), вот только он будет жрать лишние ресурсы, полагаю в прерывании должна быть ассемблерная вставка чтобы сразу кинуть значение в память, да еще и инкрементировать указатель. Вот только у нас 6 тактов на всё про всё при 33МГц. Похоже затею ждет неудача...

Может взять туже плату марсохода с ОЗУ в качестве сниффера? А мк будет анализировать. В дипломе можно будет написать что так и так оно не успевает, и поэтому мы делаем буфер.
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
20.05.2017, 21:13
Если у вас уже есть Pinboard II, лучше взять модуль Ottira MAX II EPM240T100C5N:

<Изображение удалено>
Только при таком раскладе stm32f407vgt6 получается как бы лишний.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 270
20.05.2017, 22:05
Учитывая, что частота будет 33Мгц, что мешает просто
по прерыванию синхросигналов считывать данные?
То есть 1 порт целиком под шину данных, что бы не надо было
из битовых масок данные вычлинять.
Как бы 16 бит целиком проверить на соответствие адреса и в случаи совпадения
следующие данные на шине вывести на дисплей думается будет не сложно.
В задачу ведь не входит полный анализ всего происходящего на шине.
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
20.05.2017, 22:13
Шина PCI изначально 32 разрядная, и адрес на ней 32 разрядный. Клок шины 33 Мгц. С такой частотой надо считывать и анализировать адрес на шине, если поймали нужный - проводить дальнейшие действия.
0
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 73
20.05.2017, 22:32
Даже если не поймали и вообще НЕ анализировать ПРИ считывании - выходит за время прерывания (при 33МГц) надо войти в прерывание, очистить флаг, считать один порт (16бит) в буфер, еще один, инкрементировать указатель и выйти из прерывания. И всё за 5 тактов при 168МГц тактовой. ( 168/33 = 5.09 ).
0
kobottyz7@kmoyt.som
21.05.2017, 00:07
я понял, что микроконтроллер не успевает обработать ВСЕ приходящие из PCI шины POST коды.
Но ведь мне не важны ВСЕ сигналы. А только последний.
на интелевском сайте написано:
POST-коды порта 80h
Во время теста POST BIOS генерирует коды прохождения (POST-коды) и направляет их в порт ввода/вывода 80h. Если процедура POST завершилась неудачно, последний сгенерированный POST-код остается в порту 80h. Этот код можно использовать для определения причины ошибки.
тогда остается считать 80h порт и дальше производить с ним операции.
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 73
21.05.2017, 02:00
Если я правильно понимаю порт 80 это адресное пространство, и его считать нельзя, но если нужно только последнее состояние и только в момент ошибки, то получается сидеть в прерывании и запускать ожидание что другого прерывания не наступит (т.е. ошибка) и если я правильно понял фреймы и шина действительно "останаливается" и оставляет хвост фрейма то останется только считать его. Если клок прощелкивает и фрейм завершается сбросом линий в дефолтное состояние то не выйдет.
Если будет "снимок попадания в аварию", можно будет сказать точнее.
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 4
21.05.2017, 03:08
POST-коды порта 80h
Во время теста POST BIOS генерирует коды прохождения (POST-коды) и направляет их в порт ввода/вывода 80h. Если процедура POST завершилась неудачно, последний сгенерированный POST-код остается в порту 80h. Этот код можно использовать для определения причины ошибки.
Т.е. тут просто надо считывать порт и смотреть что там есть. Даже ловить ничего не нужно.
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,752
21.05.2017, 07:36
А как узнаете что вы читаете из порта 80h, а не например 61h (PC Spioker)? Повторяю, адрес на PCI шине 32 разрядный.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 270
21.05.2017, 11:04
Можно же высвободить время за счет ДМА:
Таймер-захват --> ДМА (данные из порта в массив).
И по мере заполнения массива анализировать. Учитывая что проц свободен, можно
выводить не просто коды, а уже расшифрованные текстовые подсказки.
Вопрос только сколько времени пройдет от момента захвата до копирования (скорее всего успеет).
В приведенных ТСом доках описывается 16 битная шина. И схема там на 16 бит.
И еще 4 бита указывающие на то что именно на шине данных.
0
kobottyz7@kmoyt.som
21.05.2017, 13:19
Цитата Сообщение от fotom6
Можно же высвободить время за счет ДМА:
походу тоже не вариант
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.05.2017, 13:19

Внешний кварц для STM32F407VGT6
Добрый вечер. Друзья, кто из вас использует МК STM32F407xxx, поделитесь информацией по поводу внешнего кварца на вашей плате. Что за...

Прошиваем STM32F407VGT6 c помощью stm32f4discovery
Всем доброго времени суток! У меня имеется stm32f4discovery и я хочу прошить чистый камень STM32F407VGT6. Подключил в разъем CN2 (SWD)...

Post карта для ноутбуков
Нашел у товарища в барахолке post карту ( 5 в 1 ) она выглядит вот так посмотрел несколько статей,видеоуроков но все равно не...

Post карта для материнки ASUS
Подскажите есть ли в природе пост карта для диагностики материнской платы &quot;ASUS A8N-E&quot; . Дело в том что я хочу заказать на алиэкпрессе...

POST-Карта для PCI-e существует?
Доброго времени суток! После прочёсывания интернета в поиске POST карты для проверки материнки, пришел к выводу, что не могу найти не одну...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru