Я ищу, чтобы выбрать RTC для проекта, который я имею в виду.
У меня есть следующие варианты (ссылка на таблицу данных):
Основное отличие, по-видимому, заключается в протоколе связи. DS1307, кажется, использует что-то, называемое «двухпроводным последовательным интерфейсом», тогда как DS1302 использует что-то, называемое «3-проводным интерфейсом».
Я хотел бы использовать один из этих чипов, чтобы следить за временем на моем микроконтроллере ATMega (вероятно, ATmega8).
Так чем же они отличаются друг от друга и как их соединить?
Основное различие между SPI (3-проводной интерфейс) и I2C (2-проводной интерфейс) заключается в том, что при использовании I2C вы должны отправить адрес. Таким образом, он не будет таким быстрым, как SPI, потому что вам нужно отправлять больше данных.
При использовании SPI вам понадобится дополнительный контакт для сигнала включения чипа. Это потребуется для каждого ведомого. Так быстрее, но нужно больше выходных контактов.
Я бы предпочел I2C, потому что в этом сценарии скорость не имеет значения.
Микроконтроллер ATMega имеет аппаратные периферийные устройства для обоих методов, так что решать вам.
Первый работает с I2C . Информация о времени представлена на рисунке 5 на странице 7 таблицы данных.
Второй работает через SPI . Информация о времени представлена на рисунке 4 на странице 8 таблицы данных.
Похоже, что ATmega8 имеет TWI и SPI, как и все остальные части ATmega, вы можете использовать их одновременно, если хотите. Я бы предпочел SPI. С ним немного легче работать, и, поскольку протокол имеет тенденцию быть немного менее темпераментным.
Это зависит от нескольких факторов:
Аппаратный дизайн: Если вы используете только этот чип с вашим микроконтроллером, подойдет любой из них. Но если ваш проект состоит из двух или более устройств, использующих интерфейс I2C, то имеет смысл использовать I2C RTC, чтобы вам не пришлось делать дополнительный интерфейс, просто добавить RTC к существующей шине. То же самое относится и к SPI, но имейте в виду, что при добавлении дополнительных устройств к шине SPI вам потребуется один дополнительный сигнал SS на каждое устройство. Это также зависит от аппаратных периферийных устройств, которые есть в вашем микроконтроллере. Если ваш микро имеет аппаратное периферийное устройство SPI, но не I2C, то имеет смысл использовать устройство SPI вместо устройства I2C. То же самое и с периферийным устройством I2C.
Проектирование программного обеспечения. Еще одним решающим фактором является то, реализуете ли вы какой-либо протокол в программном обеспечении. I2C требует немного больше работы, чем SPI. Вы также можете найти некоторые реализации кода в Интернете. Если у вас уже есть код I2C с высокой степенью достоверности, используйте его. То же самое применимо, если вы достаточно уверены в фрагменте кода для SPI, который вы нашли в Интернете.
Ваше понимание: выбор также зависит от вашего понимания того или иного протокола и от того, насколько хорошо вы разбираетесь в них. Если вы использовали какой-либо из них раньше, имеет смысл использовать предыдущий опыт.
В DS1302
действительности не используется стандартный SPI, потому что одиночный сигнал данных «I/O» мультиплексируется по времени во время связи (управляется чипом во время чтения между задним фронтом «CLK» и сразу после переднего фронта «CLK»). ", high-z во все остальное время).
Стандартный SPI имеет отдельные контакты MOSI (главный-выход/ведомый-вход) и MISO (главный-вход/ведомый-выход) для каждого периферийного устройства (хотя MISO может иметь три состояния для периферийного устройства, если оно мультиплексировано с несколькими ведомыми устройствами).
« CE DS1302
» (ранее называвшийся «/RST») абсолютно необходим для связи, чтобы начать/остановить каждую передачу, а также сохранить данные RTC после «Burst» (вы НЕ можете просто подключить его к шине). Кроме того, первый бит, отправленный после подтверждения CE, указывает, выполняете ли вы чтение (1) или запись (0). При этом накладных расходов на протокол по-прежнему меньше, чем при использовании I2C, потому что вам не нужно беспокоиться об адресации и времени, специфичных для I2C.
Даже при спецификации 2 В (в техническом описании указано время для 2 В и 5 В) это DS1302
все равно быстрее, чем при использовании I2C, и НАМНОГО быстрее при использовании 5 В. Имейте в виду, что каждый из 3 коммуникационных контактов имеет DS1302
(номинальный) резистор 40 кОм, чтобы контакты не болтались.
кепком
Картофельная мука
Федерико Руссо
суперкот