Proteus8.x + MSP430x2xx: программная реализация I2C интерфейса, подключение устройств: RTC DS1307/DS3231, EEPROM AT24C512/AT24C32

разделы: MSP430, Proteus, I2C, RTC, дата: 5 апреля 2017г.

Полтора года назад я уже бегло рассматривал протокол I2C, теперь же настало время изучить его более подробно.

Попробуем написать программную реализацию протокола, рассмотрим "подводные камни" такой реализации, а также способы отладки шины I2C. Для обкатки алгоритма попробуем подключить следующие устройства на шине I2C: RTC DS1307/DS3231 и EEPROM AT24C512/AT24C32.

Для проектирования будет использована CAD Proteus_8.5. Для проверки на реальном железе будет использован чип MSP430G2453.

Часы реального времени на микросхеме DS1307

Итак, тренироваться будем на RTC DS1307, но здесь должен заметить, что данный чип относиться к 5-вольтовой логике поэтому с 3.3-вольтовым MSP430 он работать не будет. Заставить работать данную связку можно только в Proteus. Для тестирования на реальном железе я буду использовать DS3231 модуль. Однако для того чтобы понять I2C не нужен готовый модуль, он будет только мешать.

Суть проблемы

Когда не очень опытный радиолюбитель берет устройство на I2C, ему надо его как-то проверить, убедиться что оно хотя бы в принципе работает. Как это сделать? Обычно делается это на Arduino (я по крайней мере так делаю). Находится какой-нибудь скетч для проверки, и на нем проверяется.

Однако, при наличии проблем, как узнать в чем кроется загвоздка: в "косячной" библиотеке или в железке? Например, если мы загрузим этот скетч для работы с DS1307, и запустим его БЕЗ всякого модуля, то получим такую картинку:

Как видно, мы получили какие-то непонятные значения и если бы сбойная микросхема RTC была бы подключена, нам оставалось бы только гадать, где скрывается проблема: в коде или в железке.

И здесь проблема здесь не в низком качестве кода скетча. Если посмотрим API References:

Читать дальше

Arduino: FM-радиомодуль на микросхеме RDA5807m

разделы: Arduino, RDA5807M, дата: 2 апреля 2017г.

Данный модуль на Али торгуется по цене около 20р, и представляет собой полноценный сканирующий радиоприемник FM диапазона с управлением по I2C интерфейсу.

Здесь я расскажу как по-быстрому проверить его работоспособность с помощью Arduino, а также поделюсь той информацией о чипе, что мне известна на данный момент.

    На официальном сайте производителя заявлены следующие возможности чипа:
  1. CMOS single-chip fully-integrated FM tuner
  2. Low power consumption
  3. Support worldwide frequency band
  4. Support flexible channel spacing mode
  5. Support RDS/RBDS
  6. Digital low-IF tuner
  7. Fully integrated digital frequency synthesizer
  8. Autonomous search tuning
  9. Support 32.768KHz crystal oscillator
  10. Digital auto gain control (AGC)
  11. Digital adaptive noise cancellation
  12. Programmable de-emphasis (50/75 μs)
  13. Receive signal strength indicator (RSSI) and SNR
  14. Bass boost
  15. Volume control and mute
  16. Line-level analog output voltage
  17. 32.768 KHz 12M,24M,13M,26M,19.2M,38.4MHz Reference clock
  18. Only support 2-wire bus interface
  19. Directly support 32Ω resistance loading
  20. Integrated LDO regulator
  21. MSOP-10pins

Говоря по-русски, здесь нам обещают управление через I2C интерфейс(400KHz). Поддержку приема текстовых сообщений - RDS/RBDS(последний формат используется исключительно в США). Работа от часового кварца. Возможность прямого подключения 32-омных(плеерных) наушников. Индикация уровня сигнала - RSSI. Несколько диапазонов FM: Западная Европа, Восточная Европа, Япония, всемирный диапазон). Частотная коррекция(de-emphasis). Авто-регулировка усиления.

Чип предназначен для использования в сотовых телефонах, автомагнитолах, планшетах, ноутбуках, MP3 и MP4 плеерах.

Однако скачать datasheet с официального сайта не получится. Это видимо особенность всего китайского бизнеса(попробуйте найти datasheet на ESP8266). Неофициальное руководство на английском можно скачать например здесь.

Читать дальше