i2c или spi
Во общем есть stm32l151 на борту у него 2 — SPI, 3 — usart и 2-y2s
Есть периферия это:
otid дисплей на борту spi и y2s;
eeprom на борту y2s;
акселерометр на борту spi и y2s;
bluetooth модуль на борту y2s и spi и usart.
АЦП снимает сигнал и выводит на экран и передает по блютузу и пишет в память
Скорость обновления данных каждые 1мс
Вопрос можно ли всё это добро повесить на y2s?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Самодельные модули расширения ввода-вывода SPI I2C RS485?
проектирую свой самодельный ПЛК и столкнулся с вопросом организации обмена данных между модулями.
stm32 SPI+DMA или I2C внешнее АЦП
Есть у меня задача контролировать 3фазы линейно .Внутренний ацп не подходит наверное.Какое ацп.
USB SPI/I2C
Хочу сделать такую штуку. Кто-нибудь видел подобные схемы? Желательно на 1 микрухе. Сначала была.
Мультиплексирование SPI и I2C
Добрый день, вопрос такой. Имеется FT2232, с помощью которой можно эмулировать SPI и I2C. При.
Мост . -> UART/I2C/SPI
Всех приветствую! Есть необходимость в управлении разношерстной периферией, в одностороннем.
Регистрация: 30.08.2010
Сообщений: 3,379
В принципе все это можно повесить на один I2C, при условии что он будет работать на 400. Но в вашем случае это скорее всего лишнее, будет удобнее растащить по разным интерфейсам. Что-то на SPI, что-то на I2C.
OLED дисплей обычно не имеет особенных требований к скорости канала, но если он у вас графический, то скорее всего на него периодически выгружается буфер, одной большой транзакцией. Она может помешать периодическому опросу других устройств на этой шине, поэтому графический дисплей лучше повесить на отдельный SPI. Если он символьный, то все равно.
EEPROM и акселерометр можно повесить на одну шину I2C, скорее всего они используются последовательно, данные снимаются с акселерометра и пишутся в EEPROM.
BT в вашем случае я бы повесил на отдельную шину.
Выбор между I2C и SPI для вашего проекта

Выбор между I2C и SPI, двумя основными вариантами последовательной связи, влияет на дизайн проекта, особенно если используется неоптимальный протокол связи. И SPI, и I2C имеют свои преимущества и ограничения в качестве протоколов связи, что делает их подходящими для конкретных приложений.
SPI

Последовательный к периферийному интерфейсу — это четырехпроводный интерфейс последовательной связи с очень низким энергопотреблением, предназначенный для обмена данными между контроллерами ИС и периферийными устройствами. Шина SPI является полнодуплексной шиной, которая позволяет передавать данные на ведущее устройство и обратно одновременно со скоростью до 10 Мбит / с. Высокоскоростная работа SPI, как правило, ограничивает его использование для связи между компонентами на отдельных печатных платах из-за увеличения емкости, которую связь на большие расстояния добавляет к сигнальным линиям. Емкость печатной платы также может ограничивать длину линий связи SPI.
Хотя SPI является установленным протоколом, он не является официальным стандартом. SPI предлагает несколько вариантов и настроек, которые приводят к проблемам совместимости. Реализации SPI должны всегда проверяться между ведущими контроллерами и ведомыми периферийными устройствами, чтобы гарантировать, что комбинация не будет иметь никаких неожиданных проблем со связью, которые повлияют на разработку продукта.
I2C
I2C — это официальный стандартный протокол последовательной связи, для которого требуются только две сигнальные линии, предназначенные для связи между микросхемами на печатной плате. Первоначально I2C был разработан для связи со скоростью 100 кбит / с, но с годами были разработаны более быстрые режимы передачи данных для достижения скоростей до 3,4 Мбит / с. Протокол I2C был установлен в качестве официального стандарта, который обеспечивает хорошую совместимость между реализациями I2C и хорошую обратную совместимость.
Выбор между I2C и SPI для вашего проекта
Выбор между I2C и SPI, двумя основными вариантами последовательной связи, может быть довольно сложной задачей и оказать значительное влияние на дизайн проекта, особенно если используется неправильный протокол связи. И SPI, и I2C имеют свои преимущества и ограничения как протоколы связи, что делает их подходящими для конкретных приложений.
SPI
SPI, или Последовательный к периферийному интерфейсу, является четырехпроводным интерфейсом последовательной связи с очень низким энергопотреблением, предназначенным для обмена данными между контроллерами и периферийными устройствами. Шина SPI представляет собой полнодуплексную шину, которая позволяет передавать данные на ведущее устройство и обратно одновременно со скоростью до 10 Мбит/с. Высокоскоростная работа SPI, как правило, ограничивает его использование для связи между компонентами на отдельных печатных платах из-за увеличения емкости, которое добавляется при передаче данных на большие расстояния в сигнальные линии. Емкость печатной платы также может ограничивать длину линий связи SPI.
Хотя SPI является установленным протоколом, он не является официальным стандартом, который приводит к нескольким вариантам и настройкам SPI, которые могут привести к проблемам совместимости. Реализации SPI должны всегда проверяться между ведущими контроллерами и подчиненными периферийными устройствами, чтобы гарантировать, что в комбинации не возникнут неожиданные проблемы со связью, которые повлияют на разработку продукта.
I2C
I2C – это официальный стандартный протокол последовательной связи, для которого требуются только две сигнальные линии, предназначенные для связи между микросхемами на печатной плате. Первоначально I2C был разработан для связи со скоростью 100 кбит/с, но с годами были разработаны более быстрые режимы передачи данных для достижения скоростей до 3,4 Мбит/с. Протокол I2C был установлен в качестве официального стандарта, который обеспечивает хорошую совместимость между реализациями I2C и хорошую обратную совместимость.
Выбор между I2C и SPI
Выбор между I2c и SPI, двумя основными последовательными протоколами связи, требует хорошего понимания преимуществ и ограничений I2C, SPI и вашего приложения. Каждый коммуникационный протокол будет иметь свои преимущества, которые будут отличаться применительно к вашему приложению. Ключевые различия между I2C и SPI:
- I2C требует только два провода, в то время как SPI требует три или четыре
- SPI поддерживает более высокую скорость полнодуплексной связи, в то время как I2C медленнее
- I2C потребляет больше энергии, чем SPI
- I2C поддерживает несколько устройств на одной шине без дополнительных линий сигнала выбора посредством адресации устройства связи, в то время как SPI требует дополнительных сигнальных линий для управления несколькими устройствами на одной шине
- I2C гарантирует, что отправленные данные получены подчиненным устройством, в то время как SPI не проверяет, что данные получены правильно
- I2C может быть заблокирован одним устройством, которое не может освободить коммуникационную шину
- SPI не может передавать данные с PCB, в то время как I2C может, хотя и при низких скоростях передачи данных
- I2C дешевле в реализации, чем протокол связи SPI
- SPI поддерживает только одно ведущее устройство на шине, в то время как I2C поддерживает несколько мастер-устройств.
- I2C менее подвержен шуму, чем SPI
- SPI может перемещаться только на короткие расстояния и редко за пределы PCB, в то время как I2C может передавать данные на гораздо большие расстояния, хотя и на низких скоростях передачи данных.
- Отсутствие формального стандарта привело к нескольким вариантам протокола SPI, которые в значительной степени были исключены протоколом I2C
Эти различия между SPI и I2C должны облегчить выбор наилучшего варианта связи для вашего приложения. И SPI, и I2C являются хорошими вариантами связи, но у каждого есть несколько явных преимуществ и предпочтительных приложений. В целом, SPI лучше подходит для приложений с высокой скоростью и низким энергопотреблением, а I2C лучше подходит для связи с большим количеством периферийных устройств и динамического изменения роли главного устройства среди периферийных устройств на шине I2C. И SPI, и I2C являются надежными и стабильными протоколами связи для встраиваемых приложений, которые хорошо подходят для встраиваемых систем.
I2C и SPI: Различия, которые вы должны знать
Вы разрабатываете проект, и перед вами стоит выбор между I2C и SPI? Но вы не знаете, какой из них выбрать? Если да, то мы поможем вам решить, какой из них лучше для вашего проекта.
Во-первых, I2C и SPI — это «low-end» протоколы. Но они просты в использовании и отлично подходят для связи между микросхемами на вашей печатной плате.
Однако выбор неправильного протокола для вашего проекта может привести к нежелательным результатам. Тем не менее, мы здесь, чтобы помочь вам понять разницу между этими двумя похожими протоколами.
Вы готовы? Давайте начнем!
Что такое протокол SPI?
В 1980-х годах компания Motorola разработала протокол SPI для установления связи между микроконтроллерами того времени и другими периферийными устройствами, такими как EEPROM.
Итак, протокол SPI использует четыре сигнальные линии для связи между частями. Однако важно отметить, что в их число не входят линии заземления и питания. Вот четыре активные сигнальные линии:
SS: Линия Slave Select (управляется ведущим SPI).
MOSI: Master Out Slave In (управляется ведущим SPI).
SCLK: Последовательный тактовый генератор (управляется ведущим SPI)
MISO: Ведущий вход Ведомый выход (управляется ведущим SPI-устройством).
В данной заметке четыре линии позволяют ведущему SPI (управляющему устройству) взаимодействовать с ведомым SPI (периферийным устройством).
Интерфейс протокола SPI
Более того, на шине SPI может быть только одно управляющее устройство. Но количество периферийных устройств, которые вы можете добавить, не ограничено. Кроме того, добавление большего количества периферийных устройств означает увеличение количества линий SS. Таким образом, здесь показано, как можно использовать три отдельные линии SS для управления различными периферийными устройствами.
Интерфейс протокола SPI с несколькими порабощенными людьми
Кроме того, когда ведущий SPI хочет общаться с периферийными устройствами, отправляя или получая данные, он тянет соответствующую линию SS. Следовательно, линия будет ниже. Следовательно, активируется линия SCLK, которая имеет высокий и низкий уровень с заданной частотой.
Кроме того, ведущий SPI использует линию MISO для одновременной отправки данных и выборки. Также следует помнить, что одновременно может осуществляться обмен данными только между одним периферийным устройством и ведущим SPI.
Что такое I2C
В 1982 году компания Philips Semiconductors (ныне NXP Semiconductors) разработала первый протокол I2C для систематизации обмена данными между микросхемами на одной печатной плате.
В отличие от своего аналога SCI, протокол I2C имеет две линии связи — не считая линий заземления и питания. К этим линиям относятся:
SDA: линия последовательных данных
SCL: линия последовательного тактового генератора
Таким образом, к одной шине можно подключить любое количество устройств enslaver и agent. Кроме того, линии SCL и SDA должны быть открытыми. В результате ваши устройства будут иметь только один низкий уровень одновременно. Кроме того, вам понадобится подтягивающий резистор на ваших трубах. Таким образом, вы сможете подтянуть линию к высокому уровню.
Интерфейс протокола I2C
Благодаря тому, что протокол I2C имеет открытый разряд, вы можете использовать несколько мастеров на одной шине. Но если два устройства контроллера начинают общаться одновременно, произойдет арбитраж, который заставит одно из устройств прекратить передачу.
Между тем, устройства контроллера следят за линией SDA во время обмена данными. Поэтому, если одно устройство обнаружит, что линия SDA находится на низком уровне во время передачи данных, оно прекратит передачу. Это позволит другому устройству контроллера установить связь.
Кроме того, устройство I2C контроллера передаст условие START, чтобы инициировать обмен данными. Следовательно, линия SDA будет иметь низкий уровень, а линия SCL останется высокой.
Затем устройство контроллера передаст 7-битный адрес получателя, которому он хочет отправить, и бит чтения (1) или бит записи (0). В этот момент устройство на шине ответит только в том случае, если у него есть соответствующий 7-битный адрес, подав низкий уровень на линию SDA.
Различия между I2C и SPI
Как SPI, так и I2C похожи, поскольку оба они являются протоколами «низкого класса». Кроме того, обоим протоколам не хватает скорости и других возможностей, которыми могут похвастаться их «тяжеловесные» родственники (SATA, Ethernet, USB и другие).
Но когда дело доходит до принципов работы и особенностей. Давайте подробнее рассмотрим различия между этими двумя протоколами.
Во-первых, в протоколе SPI можно установить четыре различных режима, чтобы определить, как работают часы. А чтобы связь работала, устройства поработителя и агента должны использовать одну и ту же модель.
Кроме того, скорость передачи данных по протоколу SPI может превышать 10 Мбит/с, что делает его идеальным для передачи огромных объемов данных. Также протоколы SPI можно встретить на датчиках с высокой частотой обновления, таких как ЖК-дисплеи и акселерометры.
С другой стороны, I2C может отправлять данные только в однобайтовом пакете за раз. Кроме того, принимающее периферийное устройство должно подтверждать каждый байт битом ACK. Кроме того, протокол I2C имеет три режима с различной скоростью передачи данных.
В стандартном режиме максимальная скорость передачи данных достигает 100 кбит/с, в быстром режиме — 400 кбит/с, а в высокоскоростном режиме — 3,4 Мбит/с. Следовательно, протокол I2C значительно медленнее протокола SPI. В результате протокол I2C лучше всего работает в датчиках температуры и аналого-цифровых преобразователях.
Сравнение I2C и SPI
В таблице ниже приведены существенные различия между I2C и SPI:
| Характеристика | SPI | I2C |
| Привод контактов | Режим Push-pull | Режим открытого разряда |
| Макс. Скорость | Нет (но вы можете найти 10 — 100 Мбит/с) | 100 кбит/с (стандартный способ)400 кбит/с (быстрый способ)3,4 Мбит/с (высокоскоростной режим) |
| Мультимастер | Нет | Да |
| Сигнальные линии | 4 (дополнительные устройства добавляют дополнительные линии) | 2 |
| Количество периферийных устройств | Количество выводов, доступных для линий SS на ведущем SPI, является единственным ограничением на количество периферийных устройств, которые вы можете иметь. | Максимум 112 при 7-битной адресации |
| Управление потоком | Нет | Да |
Протоколы SPI и I2C — плюсы и минусы
SPI
Плюсы
Протоколы SPI потребляют небольшое количество энергии
Он также поддерживает высокоскоростной полнодуплексный обмен данными
Минусы
Существуют различные версии и адаптированные варианты, что вызывает проблемы совместимости
Для связи с несколькими периферийными устройствами на одной шине нужны дополнительные сигнальные линии
Поддерживается только связь на коротких расстояниях. Вы не можете передавать данные устройствам на отдельных платах.
I2C
Плюсы
Вам не нужны дополнительные линии для управления несколькими устройствами на одной шине
Можно передавать данные на другие печатные платы, но с низкой скоростью передачи данных
Имеет более низкую чувствительность к шуму
Может передавать данные на большие расстояния
Дешевле в использовании, чем SPI
Минусы
Скорость передачи данных медленнее, чем у SPI
Потребляет больше энергии, чем протокол SPI
Отказ одного устройства освободить шину связи может заблокировать протокол I2C.
Факторы, которые следует учитывать при выборе между SPI и I2C
Выбор лучшего протокола для вашего проекта выходит за рамки цены. Итак, вот несколько моментов, которые следует учесть, прежде чем сделать выбор:
Ограниченное количество контактов
Вот преимущества и недостатки протоколов SPI и I2C: если вам не нравится использовать микроконтроллеры с более чем 100 выводами, это решающий фактор, который необходимо учитывать. В этом случае следует выбрать протокол, требующий меньшего количества линий для связи.
Питание
В зависимости от вашего проекта, вы можете захотеть минимизировать или максимизировать потребление энергии. Поэтому необходимо убедиться, что вы выбрали протокол, который наилучшим образом соответствует вашим потребностям.
Скорость
Когда речь идет о передаче данных в огромных объемах, каждая микросекунда имеет решающее значение. Поэтому, если вам нужна скорость, выбирайте протокол, который соответствует вашим стандартам скорости.
Размер печатной платы
Очень важно учитывать размер вашей печатной платы перед выбором протокола. Таким образом, вы повысите свои шансы на получение желаемых результатов.
Выбор между SPI и I2C
Ниже приведены характеристики каждого протокола, которые помогут вам принять оптимальное решение для вашего проекта:
| Особенности | SPI | I2C |
| Скорость | Если ваша конструкция требует высокоскоростной передачи данных, лучшим выбором будет протокол SPI. | Вы можете выбрать I2C для проектов низкоскоростных устройств. |
| Размер печатной платы | Если вас не беспокоит размер вашей печатной платы, вы не ошибетесь ни с SPI, ни с I2C. | Если ваша печатная плата имеет меньший размер и меньшее количество дорожек, выберите I2C. |
| Ограниченное количество выводов | Выбирайте протокол SPI, если вы не против дополнительных линий для связи. | Если вас не устраивает большое количество дорожек, то I2C — идеальный выбор. |
| Питание | Для устройств с низким энергопотреблением используйте протокол SPI. | Для устройств с более высоким энергопотреблением используйте протокол I2C. |
Понимание UART
UART — это физические схемы в интегральном устройстве или микроконтроллере, которые устанавливают последовательную связь между устройствами во встраиваемых системах.
Когда вы имеете дело с коммуникацией по UART, всегда существует прямая связь между передатчиком UART и приемником UART.
UART vs I2C vs SPI
В отличие от других коммуникационных протоколов, таких как SPI и I2C, UART является чисто физическим. Кроме того, он не использует парадигму ведущий/ведомый для связи. Вместо этого микроконтроллер использует два устройства UART для отправки и получения данных. Кроме того, для связи по UART вам потребуется всего два провода. И эти провода помогут передать данные от вывода Tx передатчика к выводу Rx приемника.
Интерфейс протокола UART
Округление
В реальности протоколы SPI и I2C используются в различных приложениях. Иногда вам могут попадаться устройства, в которых интерфейсы SPI и I2C расположены на одном кристалле. Таким образом, вам не придется выбирать между ними.
Однако если вам нужно выбрать между этими двумя протоколами, SPI лучше подходит для проектов, где требуется более высокая скорость передачи данных. С другой стороны, если ваш микроконтроллер имеет ограниченное количество выводов, протокол I2C будет работать лучше.
Есть вопросы? Не стесняйтесь обращаться к нам. Мы будем более чем рады помочь.
Hommer Zhao
Привет, я Хоммер, основатель WellPCB. На сегодняшний день у нас более 4000 клиентов по всему миру. Если у вас возникнут какие-либо вопросы, вы можете связаться со мной. Заранее спасибо.