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

    

Neo_Matrix

Участник
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

Информация о Neo_Matrix

  • Звание
    Участник
  1. Опять же вопрос коммутации. Ведь не инверсный rs232 тоже нужен.
  2. А что делать с ее инверсией? Логическая единица у rs232 меньше -3V. ПС: Процессор STM32F407 не имеет программной инверсии сигналов.
  3. Уже думал над таким вариантом, но он немного удорожит устройство, так как нужен корпус, плата, стоимость монтажа мелких партий. Если все разместить на общей плате, можно попробовать снизить стоимость. Кроме того мы не избавляемся от проблемы многих кабелей, под разные устройства. ПС: Забудьте про стороны :)
  4. Устройство должно работать с устройствами третьих лиц. К сожалению, я не виноват, что такие именитые производители, как Филлипс выводят наружу сигнал с логическими уровнями UART 5Вольт, при этом из защит там стоит делитель на резисторах и триггер-шмитта. А некоторые и вовсе пускают 3х вольтовую логику на внешний порт. В данной ситуации моя задача не исправлять косяки других производителей, а сделать устройство максимально гибко работающее со всеми типами интерфейсов. Блок питания разумеется общий для обеих устройств. Длина кабеля не превышает 50см. Как показала 2х годичная практика, не один порт не был сожжен. Но ранее на устройстве стоял разъем microfit на 8 контактов, и переключение интерфейсов решалось правильным обжимом кабеля, естественно это плодит кучу кабелей, документации на них.... но самое важное, на новом устройстве не хватает места под разъем более чем на 4контакта, использовать иные разъемы(не microfit) не хочется, так как они себя хорошо зарекомендовали, а с учетом криворукого обслуживающего персонала - разъемы меньшего калибра повыламывают к чертям. На моем устройстве ранее было сделано так: РС-232 порт подключался прямиком к разъему через резисторы и МАКС2323, порты ЮАРТ были выведены на соседние контакты из защиты стоял резистор за ним сапрессор(такого плана как на ЮСБ) + подтяжка, далее все было подключено к триггеру-шмитта, а после к процу.
  5. Возникла необходимость сделать "универсальный порт", который сможет объединить в себе три порта. В микроконтроллере имеется порт UART 3.3V, с него необходимо получить RS232, UART 3.3V, UART 5V, при этом выход идет на 4х контактный(Т.е. VCC, GND, RX, TX) разъем. Есть ли готовые решения под такую задачу? Или в MAX3232 можно отключать бустеры, но что делать с инвертированным сигналом?
  6. Использование #define значения в ASM KEIL

    Не вижу никаких грабель, в логичном желании изменять переменную лишь в одном месте, а не в разбросанных по всему проекту местах. Закончилось - нечем, по прежнему использую конструкцию: const uint32_t magic_num __attribute__((section(".ARM.__at_0x08000188"))) = MAGIC_NUM; 1) Ключ --cpreproc не поддерживается в 6-й версии компилятора. 2) GBLA не подходит, так как создает переменную инициализированную нулем.
  7. Использование #define значения в ASM KEIL

    Да, вполне неплохой вариант, затягивать переменную из ASM в С, а не на оборот. Спасибо Про EXTERN писал в первом сообщении, при таком подходе в нужную ячейку кладется не сама переменная, а адрес по которому переменная расположена. EXTERN напрямую на СИшный #define натравить не получается, при компиляции выдает ошибку.
  8. Использование #define значения в ASM KEIL

    Собственно вопрос был не по include в необходимые файлы .c .cpp. Суть вопроса в присвоении значения СИшного #define ассемблерной переменной, размещенной в конце таблицы прерываний. И да сейчас сделано так: #define MAGIC_NUM 0x568978 const uint32_t magic_num __attribute__((section(".ARM.__at_0x08000188"))) = MAGIC_NUM; У этого подхода есть большой косяк, в случае смещения прошивки по флешу(допустим версия DEBUG которая стартует с начала адреса флеша и версия PROD, которая стартует со второго сектора флеша) нужно не забывать изменять значение адреса, или писать конструкции типа: #if DEBUG ... #else ... #endif При этом таблица прерываний смещается сама, в зависимости от выбраного СКАТЕР файла, по этому хотелось более изящьного решения.
  9. Использование #define значения в ASM KEIL

    В заголовочном СИ файле определено: #define MAGIC_NUM 0x568978 const magic_number = MAGIC_NUM; Эта переменная используется в Си коде проекта. Но еще эту переменную нужно прикрутить в конец таблицы векторов прерываний. Попробовал сделать так в стартап файле: EXTERN magic_number[DATA] ... ; Здесь находится таблица прерываний. DCD magic_number ; Добавил в конец таблицы. Так вот, после компиляции в конце таблицы прерываний размещается адрес переменной magic_number, а не само значение этой переменной. Можно ли сделать, что бы по этому адресу находилось именно значение, может значение СИшного #define можно использовать? Варинт с : DCD 0x568978 не рассматриваю, так как нужно помнить о замене 2х переменных. Среда KEIL для ARM.
  10. Подскажите софт, в котором можно составить документацию для производства партии кабелей. Т.е необходима принципиальная схема кабеля, схема обжима контактов, используемые типы контактов и т.д. Так же интересуют нормативные документы на кабеля\жгуты. Так же, если кто то имел опыт заказа изготовления кабелей, поделится примерами документации.
  11. Сработало на 100 %, попробовал на 2х разных файлах. Srecord действительно классная прога, я даже не задумывался о ее потенциале, впервые она мне помогла привести в порядок вывод файлов моторола-срекорд, а здесь оказывается она и такое может. Огромное спасибо, что подсказали! И писать не пришлось :) Все уже придумано до нас.
  12. Не погибнет, он живучий :) у меня SWD есть на такой случай. Спасибо, сейчас попробую
  13. x893 Написать прогу, это будет следующий этап, пока смотрю готовые варианты. scifi Тулзой SRecord я пользуюсь для формирования файлов, для дальнейшей отправки по воздуху, неужто в ней есть функция по добиванию конца прошивки мусором, до значения кратного 128?
  14. Необходима прошивка, размер файла которой будет кратен 128байтам, т.е необходимо после сборки проекта в Keil сформировать BIN кратный 128. Сейчас для генерации BIN использую встроенную тулзу fromelf. Попытался добавить параметры в командную строку: --bincombined --bincombined_base=0x8000000 --bincombined_padding=128,0xFF, но походу ее разработчики предусмотрели ограничение на параметр bincombined_padding в размере 4. На данный момент приходится сначала генерить BIN, а после увеличивать его размер в winhex, что со временем уже немного надоедает. Возможно кто то знает нормальное решение, желательно с командной строкой, так, как хочется напрямую в действия КЕЙЛа прописать.