Разница между методом Wire.setClock () и TWBR для изменения частоты I2C

Я хочу изменить частоту I2C моего Arduino Mega 2560. Я нашел два метода. Один из методов заключается в изменении переменной TWBR после Wire.begin(). Другой - использовать Wire.setClock() после Wire.begin().

В чем разница между двумя методами? какая из них лучше? Могу ли я установить любую частоту I2C, которую я хочу?

2 голоса | спросил William Roy 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 26 Sep 2016 17:36:22 +0300 2016, 17:36:22

2 ответа


2
  

В чем разница между двумя методами?

Разница в том, что одна более переносимая, чем другая. «Прямой набор регистров» не будет работать очень хорошо на Arduino Due.

В «наборе прямых реестров» нет преимущества скорости или ножной печати, поскольку это часто делается только один раз при настройке эскиза.

  

Какой из них лучше?

Если лучше переносимый, поддерживаемый, читаемый и т. д., тогда ответ прост - используйте API, а не «прямой набор регистров».

  

Могу ли я установить любую частоту I2C, которую я хочу?

Нет - очевидно, существуют некоторые ограничения. Во-первых, частота процессора масштабируется, поэтому она не может генерировать все возможные частоты. Во-вторых, устройства I2C и шина будут устанавливать ограничения на максимальную частоту. Более длинные провода и несколько устройств будут добавлять емкость и требуют более низкой частоты. Также устройство с самой низкой частотой устанавливает верхний предел. Всегда проверяйте листы данных для устройств I2C.

Ура!

ответил Mikael Patel 27 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 27 Sep 2016 18:12:55 +0300 2016, 18:12:55
1

Они оба одинаковы. Один легче запомнить, хотя (я позволю вам разобраться, что).

Wire.setClock(frequency) просто (в конечном счете):

TWBR = ((F_CPU / frequency) - 16) / 2;

Вы можете установить любую частоту, которая заканчивается этой формулой, генерирующей целое число от 0 до 255.

ответил Majenko 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 26 Sep 2016 17:40:32 +0300 2016, 17:40:32

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132