сайт для палких паяльників

Початківцям

Information for beginners
Корисна інформація для початківців
Полезная информация для начинающих

Option bytes, защита прошивки

Option bytes настраиваются разработчиком прошивки в зависимости от потребностей. Это несколько байт, в разных контроллеров их количество разное, с помощью которых можно установить некоторые настройки и защитить Flash от записи и чтения. Защитив нужные страницы Flash от записи, можно избежать ошибочного повреждения программы во время работы. Установка защиты от считывания делает невозможным считывание и копирование прошивки.

Читати далі

Эта статья на русском языке

Option bytes, захист прошивки

Option bytes налаштовуються розробником прошивки в залежності від потреб. Це декілька байтів, у різних контролерів їх кількість різна, за допомогою яких можна встановити деякі налаштування та захистити Flash від запису та зчитування. Захистивши потрібні сторінки Flash від запису, можна запобігти помилковому пошкодженню програми під час роботи. Встановлення захисту від зчитування робить неможливим зчитування та копіювання прошивки.

Читати далі

Снижение энергопотребления микроконтроллера чаще всего нас интересует при разработке приборов, питающихся от аккумуляторов или батарей. STM32 позволяет управлять собственным энергопотреблением. Прежде, чем мы научимся применять режимы пониженного энергопотребления, рассмотрим, как организовано питание микроконтроллера и общие методы снижения энергопотребления.

Читати далі

Эта статья на русском языке

Зниження енергоспоживання мікроконтролера частіше за все нас цікавить при розробці приладів, які живляться від акумуляторів чи батарей. STM32 дозволяє керувати власним енергоспоживанням. Перш, ніж ми навчимося застосовувати режими зниженого енергоспоживання, розглянемо, як організоване живлення мікроконтролера та загальні методи зниження енергоспоживання.

Читати далі

На тестовой плате STM32F103 есть microUSB разъем. И он служит не только для подачи питания. STM32F103 может работать с USB в качестве различных USB – устройств. Как USB HID устройство, в том числе как клавиатура или мышка, как виртуальный последовательный порт, USB Mass Storage, и тому подобное. Мы рассмотрим лишь пару примеров. В первом – компьютер будет воспринимать STM32F103 как виртуальный последовательный порт. Во втором примере STM32F103 эмитирует клавиатуру и мышку. STM32F103 будет двигать мышкой, (конечно на экране :), и эмитировать нажатие кнопок на клавиатуре.

Читати далі

Эта статья на русском языке

На тестовій платі STM32F103 маємо microUSB роз’єм. І він служить не тільки для подачі живлення. STM32F103 може працювати з USB у якості різних USB – пристроїв. Як USB HID пристрій, у тому числі – як клавіатура чи мишка, як віртуальний послідовний порт, USB Mass Storage, тощо. Ми розглянемо лише пару прикладів. У першому – комп’ютер буде сприймати STM32F103 як віртуальний послідовний порт. У другому прикладі STM32F103 емулюватиме клавіатуру і мишку.  STM32F103 буде рухати мишкою, (звісно на екрані :), та емулювати натискання кнопок на клавіатурі.

Читати далі

В предыдущей статье мы рассмотрели работу STM32 с шиной I2C в качестве Мастера. То есть, он был ведущий и опрашивал датчик. Теперь сделаем так, чтобы STM32 был Slave-ом и отвечал на запросы, то есть сам работал как датчик. Мы выделим 255 байт памяти под регистры с адресами от 0 до 0xFF, и позволим Мастеру в них писать/читать. А чтобы пример был не таким простым, сделаем из нашего STM32, еще и аналого-цифровой преобразователь с интерфейсом I2C. ADC будет обрабатывать 8 каналов. Результаты преобразований контроллер будет отдавать Мастеру при чтении из регистров. Поскольку результат преобразования ADC занимает 12 бит, нам потребуется 2 регистра (2 байта) на каждый канал ADC.

Читати далі

Эта статья на русском языке

У попередній статті ми розглянули роботу STM32 з шиною I2C у якості Майстра. Тобто, він був ведучий і опитував сенсор. Тепер зробимо так, щоб STM32 був Slave-ом і відповідав на запити, тобто сам працював як сенсор. Ми виділимо 255 байт пам’яті під регістри з адресами від 0 до 0xFF, і дозволимо Майстру в них писати/читати. А щоб приклад був не таким примітивним, зробимо з нашого STM32, ще і аналого-цифровий перетворювач з інтерфейсом I2C. ADC буде обробляти 8 каналів. Результати перетворень контролер буде віддавати Майстру при читанні з регістрів. Оскільки результат перетворення ADC займає 12 біт, нам потрібно буде 2 регістра (2 байта) на кожний канал ADC.

Читати далі

Шина I2C достаточно популярна и очень много датчиков и различных устройств используют именно I2C. Я не буду писать кто, когда и для чего изобрел эту шину и как по ней бегают байты. Этой информации полно в Интернете, для этого существует Википедия. Когда Вы держите в руках сенсор и хотите как можно быстрее получить с него данные, и решить поставленную задачу, Вам хватит следующего минимума знаний:

  1. Шина I2C – это двухпроводная шина с линиями SCL, SDA. Теоретически, на одну шину I2C можно параллельно подключить до 112 устройств.
  2. Обе линии шины должны быть через резисторы подключенными к питанию. Рекомендуемый номинал резисторов зависит от скорости и других параметров шины. Обычно мало кто этим озадачивается и ставят резисторы в пределах от 4.7к до 10кОм. Резисторов должно быть по одному на каждую линию.
  3. Если Вы подключаете несколько модулей, а на каждом модуле уже впаяны подтягивающие резисторы, то получается, что резисторы включаются параллельно и их суммарное сопротивление становится меньше. Это не очень хорошо. Но, если вы включаете только два таких модуля и на каждом впаяны резисторы по 10 кОм, тогда суммарное сопротивление будет 5ком, что попадает в пределы допустимой нормы и шины I2C, скорее всего, будет работать. Но повторяю: подключать на каждую линию более одного резистора – не очень хорошая идея.
  4. Каждое устройство на шине I2C имеет отдельный адрес.
  5. На шине I2C может быть только один Master и один или несколько Slave.
  6. Скорость шины может быть разной. Обычно используют два стандарта 100 и 400 КГц. Скорость линии должна определяться по самому медленному устройства на шине. Если Slave не успевает, он может “придержать” шину и все его будут ждать. Такой подход, хотя и является стандартом, но на практике работает не всегда. В случае, когда Master не умеет ждать (этим, например страдают микрокомпьютеры), на шине начинается беспорядок. То есть, некорректная работа одного из устройств на шине I2C (не важно, в каком качестве – Master или Slave) может вызвать проблемы в работе всех устройств.
  7. Если напряжение питания контроллера отличается от напряжения питания датчика, они должны включаться через двунаправленную схему согласования логических уровней.

Читати далі

Эта статья на русском языке

Шина I2C досить популярна і дуже багато сенсорів та інших пристроїв використовують саме I2C. Я не буду писати хто, коли і для чого винайшов цю шину та як по ній бігають байти. Цієї інформації повно у Інтернеті, для цього існує Вікіпедія. Коли Ви тримаєте в руках сенсор і бажаєте якнайшвидше отримати з нього дані, та вирішити поставлену задачу, Вам вистачить наступного мінімуму знань:

  1. Шина I2C – це двопровідна шина з лініями SCL, SDA. Теоретично, на одну шину I2C можна паралельно підключити до 112 пристроїв.
  2. Обидві лінії шини мають бути через резистори підключеними до живлення. Рекомендований номінал резисторів залежить від швидкості та інших параметрів шини. Зазвичай мало хто з цим морочиться і ставлять резистори у межах від 4.7кОм до 10кОм. Резисторів має бути по одному на кожну лінію.
    Якщо Ви підключаєте декілька модулів, а на кожному модулі вже впаяні підтягуючі резистори, то виходить, що резистори вмикаються паралельно і їх сумарний опір стає меншим. Це не дуже добре. Та, якщо ви вмикаєте лише два таких модуля і на кожному впаяні резистори по 10 кОм, тоді сумарний опір буде 5КОм, що попадає у межі допустимої норми і шина I2C, скоріш за все, буде працювати. Але повторюю: чіпляти на кожну лінію більше одного резистора – не дуже гарна ідея.
  3. Кожен пристрій на шині I2C має окрему адресу.
  4. На шині I2C може бути лише один Master і один, або декілька Slave.
  5. Швидкість шини може бути різною. Зазвичай використовують два стандарти 100 і 400 КГц. Швидкість лінії має визначатися по самому повільному пристрою на шині. Якщо Slave не встигає, він може “притримати” шину і всі його будуть чекати. Та такий підхід, хоч і є стандартом, але на практиці працює не завжди. У випадку, коли Master не вміє чекати (цим, наприклад страждають мікрокомп’ютери), на шині починається безлад. Тобто, некоректна робота одного з пристроїв на шині I2C (не важливо, у якій ролі – Master або Slave) може викликати проблеми у роботі усіх приладів.
  6. Якщо напруга живлення контролера відрізняється від напруги живлення датчика, вони мають вмикатися через двонаправлену схему узгодження логічних рівнів.

Читати далі

Почему нельзя сделать такой контроллер, который имел бы минимум стандартных ног: ну, там – питание, выводы для программатора и т.д., а остальные выводы чтобы можно было настроить как угодно? Хочу на ногу №1, скажем, PA6 – программно настроил и готово. А хочу RX порта UART1, – сказал микроконтроллеру, чтобы RX порта UART1 подключил к ноге №1 и все. И так же любой функционал на любые выводы. Это было бы очень удобно! Но это технически довольно сложно. Хотя, может так случиться, что в недалеком будущем появится что-то похожее. Разработчики микроконтроллеров к этому потихоньку, но уверенно идут. Конечно, когда появятся такие контроллеры, изменятся и подходы к проектированию схем и программ. Но вернемся к реальности.

Мы уже привыкли к тому, что к определенным выводам микроконтроллера привязан определенный функционал. И мы можем выбирать, какие из доступных функций мы можем использовать. Например, в нашем микроконтроллере STM32F103 ногу, которая называется PA9 можно использовать как линию порта A9 (вход или выход). Или использовать альтернативный функционал, такой как TX выход последовательного порта USART1 (USART1_TX), или как второй канал первого таймера TIM1_CH2. Но что нам делать если A9 уже используется, а нам крайне необходим USART1_TX? У STM32 есть функция REMAP.

Читати далі

Эта статья на русском языке

Чому не можна зробити такий контролер, який би мав мінімум стандартних ніг: ну, там – живлення, виводи для програматора, тощо, а решту виводів щоб можна було налаштувати як заманеться? Хочу на ногу №1, скажімо, PA6, – програмно налаштував і готово. А захочу RX порта UART1, – сказав мікроконтролеру, щоб RX порту UART1 підключив до ноги №1 і все. І так само будь-який функціонал на будь-які виводи. Це було б дуже зручно! Але це технічно досить складно. Хоча, може так статися, що у недалекому майбутньому з’явиться щось схоже. Розробники мікроконтролерів до цього потихеньку, але впевнено, йдуть. Звісно, коли з’являться такі контролери, зміняться і підходи до проектування схем і програм. Але повернімося до реалій.

Ми вже звикли до того, що до певних виводів мікроконтролера прив’язаний певний функціонал. І ми можемо вибирати, які з доступних функцій ми можемо використати. Наприклад, у нашому мікроконтролері STM32F103 ногу, яка називається PA9 можна використати як лінію порту A9 (вхід або вихід). Або використати альтернативний функціонал, такий як TX вихід послідовного порту USART1 (USART1_TX), або як другий канал першого таймеру TIM1_CH2. Та що нам робити якщо A9 вже використовується, а нам вкрай потрібний USART1_TX? У STM32 є функція REMAP.

Читати далі

Translate
Архіви

© 2011-2017 Андрій Корягін, Кременчук, Україна