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

adnega

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    3

Весь контент adnega


  1. Но ей на пути можно и нужно навыставлять барьеров. Неправильным выбором цепей защиты и неверной топологией можно натерпеться даже от средних помех. Если бы вы озвучили параметры помехи и показали схему защиты с топологией, то довольно быстро вам бы показали, где слабое место.
  2. Уж если речь идет об STM32, то советую пролистать AN3307.
  3. Помехи классифицируются. От одних помех можно дешево и надежно защититься. От всех помех защититься не возможно. По мере расширения класса подавляемых помех, стоимость защиты увеличивается. При недопустимом уровне помех, когда цифровая схема начинает работать как аналоговая - аналитический аппарат становится другим. Можно назвать это "капитуляцией". Я предлагаю определить помехи, на которые ваше устройство должно адекватно реагировать (работать при помехе; не работать при помехе, но восстанавливать работоспособность после снятия помехи) и проектировать цепи защиты исходя из указанных ограничений. Обычно требования к помехам прописаны в руководящих документах для конкретного типа изделий. Я обычно ставлю импульсное для 5В, затем линейный стабилизатор на 3.3В
  4. А зачем, если у вас такие помехи, что даже ОЗУ портится? Только аппаратное решение напрашивается.
  5. У меня есть планшет в два раза дороже, но на нем нет клемм для подключения даже обыкновенной лампочки. Думаю, golevasonya80 какие-то другие комплектующие имел ввиду.
  6. Примерчик таких комплектующих и цены на них можете показать?
  7. Слышал положительные отзывы об устройстве шумоочистки "Золушка II".
  8. :) Мы тут чуть не разругались, обсуждая ногодрыг для Мастера.
  9. Вряд ли ногодрыгом можно получить настолько высокую частоту, чтоб не работало. У типового 74HC595 частота под 100МГц. Для "медленных" устройств с fSCK < 1МГц и решение будет другим. Пока никаких ограничений на частоту не накладывали. Вы неправильно понимаете зачем я предлагал использовать DMA: для записи в SPI, а не в GPIO. Если кода для вашего решения не будет, предлагаю закончить обсуждение.
  10. Ок. Давайте без эмоций. Я к этому не призывал. Если нужно передать-принять 17 бит, то кусок простейшего кода привел. Без DMA, без таймеров и без аппаратного SPI. Если нужно передать одиночные 17 бит на максимальной скорости, то это самый простой и довольно быстрый вариант. Вы предлагаете использовать аппаратный SPI с программируемым словом. Исходник не поленитесь набросать? Чую там переинициализацию SPI, сборки 17 битного слова при отправке и приеме, обработку флагов и все это в прерывании, на вхождение и выход из которого тратятся порядка 12 тактов. При этом нужно как-то передавать состояние в прерывание, рулить CS и прочее. Если вы по прежнему считаете свое решение проще моего варианта с ногодрыгом (который я изобразил на лету секунд за 30), то через 5 минут ждем от вас код. Напоминаю, что не у всех STM32 есть управляемая длина слова - чаще всего это либо 8, либо 16 бит. Слово 17-битное. Всего 17 слов. Итого 17 * 17 = 289 бит или 36 байт + 1 бит. А как вы считаете? Прошу показать код, чтоб обсуждать вопрос предметно. Ок. 8 бит по SPI передается за 16 тактов. Вы предлагаете инициализировать SPI (сколько тактов?), записать в SPI->DR байт и ждать прерывание. Через 16 тактов вызовется ваш обработчик, в котором вы окажитесь через 12 тактов и будете должны проверить флаги, инициализировать SPI, записать новую порцию, выйти из прерывания и тут же в нем за 12 тактов оказаться, т.к. SPI уже все отправит. Ничоси экономия нагрузки - под 100% сидеть в прерывании. ;) Это легко может оказаться какой-нить индикатор со встроенным сдвиговым регистром на 17 сегментов. Чтобы ее использовать. Например, популярные дисплеи Nokia (1202) имеют 9 битное слово. Я управляю таким через 8-битный аппаратный SPI. Просто в памяти 8 слов упакованы в 9 байт. Затем по DMA отправляется весь буфер. В моем массиве 36..37 байт. Никаких списков нет.
  11. Ногодрыг делается без прерываний, а если с прерываниями, то их будет 17 * 2. data_in = 0; for(i = 0; i < 17; i++) { set_pin(MOSI, data_out >> i); set_pin(SCK, 1); data_in |= (1 << get_pin(MISO)); set_pin(SCK, 0); } В вашем примере как передать 17 слов по 17 бит через DMA? Никак. Поэтому либо ногодрыг, либо 36 байт по 8 бит + 1 бит (ногодрыга).
  12. А в чем это принципиально отличается от ногодрыга?
  13. У stm32f030 есть SPI с шириной от 4 до 16 бит, но т.к. 17 - простое число... это мало чем поможет. Пожалуй, самым простым решением будет - ногодрыг.
  14. При каком токе производитель гарантирует не менее 3.5В для логической единицы? Покажете в даташите на МК? Тут есть картинка. Указанные в DS 2.4В как бы намекают на 5-TTL или 3.3-LVTTL, но точно НЕ 5-V CMOS.
  15. Имеется ввиду эта табличка? Видно, что в режиме Push-Pull при выходной логической 1 вывод можно просадить до 2.4В током порядка 20 мА. Гарантируется, что при меньшем токе напряжение не будет ниже 2.4В. Напряжение логической 1 на холостом ходу нигде не оговаривается. Оно может быть 5В, но гарантий этого нет. Ровно как и нет гарантий 3.5В, нужных для 74HC-логики. Поэтому в части гарантий вывод мало отличается от 3х-вольтового, несмотря на питание PIO-модуля от VDD (рисунок).
  16. Для STM32 лучшая на мой взгляд отладка: STM32F4DISCOVERY. Хотя многое зависит от решаемых задач.
  17. Там где скорость не критична достаточно 8 битного. Когда по скорости и таймингам нужно выжать максимум (например, при развертке VGA картинки) требуется выставлять максимально возможную длину SPI-слова, чтобы минимизировать число DMA-транзакций, т.к. между DMA-запросом и DMA-транзакцией может быть более 12 тактов (для Cortex-M). При 16-битном SPI-слове и буфере, передаваемом через DMA, нет промежутков между словами даже на FSCK = FCPU / 2. Если использовать 8-битные слова, то между посылками есть паузы. В большинстве задач эти паузы не критичны.
  18. Есть серия 74HCT с VINH = 2.0V Насчет 74HC - не заметил указанную нерабочую половину.
  19. А чтобы предъявить достаточно китайского мультиметра или нужен сертифицированный и поверенный прибор?
  20. Разница порядка 100 байт. На примере двух приложений BL и SW. +-----+-------------------------------+------------------------------+ | | gcc-arm-none-eabi | arm-kgp-eabi-x86_32 | +-----+-------------------------------+------------------------------+ | BL | TEXT=5024, DATA=4, BSS=2140 | TEXT=4936, DATA=4, BSS=2140 | | SW | TEXT=9656, DATA=28, BSS=4460 | TEXT=9552, DATA=28, BSS=4460 | +-----+-------------------------------+------------------------------+ | | gcc version 4.9.3 20150303 | gcc version 4.8.0 20121121 | | | (release) [ARM/embedded-4_9- |(experimental) (Klen's GNU | | | branch revision 221220] (GNU | package (KGP) for ARM/elf | | | Tools for ARM Embedded | platform) | | | Processors) | | +-----+-------------------------------+------------------------------+ При этом код arm-kgp-eabi-x86_32 не рабочий, т.к. операция взятия остатка уводит в HF - допускаю, что чего-то не хватает в либах.
  21. Я тоже пользуюсь сборками от klen. На 32-битной windows при получении остатка от деления имею HF (для ядра cortex-m0). Временно перешел на gcc-arm-none-eabi, но она по размеру кода фатально проигрывает klen-овской.
  22. TIM1 в STM32F100C8

    Тактирование порта GPIOE есть?
  23. А ламп у вас на примерно 100 изделий, и, я так понял, другие вложения вы делать не собираетесь.
  24. И одну мега-задачу - найти покупателей.
  25. Т.е. эта таблица жестко "вшита" в функцию? Не пойдет ибо ШИМ довольно аппаратно-зависимая вещь. Хотя идея понятна (может понадобиться таблица синуса, например).
×
×
  • Создать...