i2c программный, STM32

ШЕЛ ЧЕТВЕРТЫЙ ЧАС БОРЬБЫ, А I2C ПРОДОЛЖАЛ РАБОТАТЬ ЧЕРЕЗ ИЗВЕСТНОЕ МЕСТО...

Было принято решение сколхозить написать собственный программный.
Задача достаточно типовая — хранить несколько ценных байт в EEPROM. Выбор пал на M24C02
Результат
Записываем


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

RaspberryPi и барометр Bosch BMP085

Третьего дня пришел заказанный на dx.com модуль, содержащий трехосный гироскоп L3G4200D, трехосный акселерометр ADXL345, цифровой компас HMC5883L, и барометр BMP085. Ссылка на модуль GY-80 BMP085 9-Axis Magnetic Acceleration Gyroscope Module for Arduino. Работа со всеми датчиками производится через I2C, адреса устройств берутся из даташитов. Поскольку с гироскопами, аксами и компасом я уже имел дело, то решил начать с барометра, поскольку изучение даташита показало, что получение значения окружающего давления не такая простая процедура, как например получение значений ускорения по осям акселерометра. Для начала необходимо считать несколько коэффициентов, зашиваемых в датчик на заводе при калибровке, потом считать сырые значения температуры и давления, а потом уже из них путем хитрых математических операций можно получить давление в паскалях. В процессе возни с барометром для упрощения была написана простенькая библиотека на питоне для работы с I2C.


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

Обмен данными с Flash памятью по I2C. Ассемблер 8051.

У Дихальта есть статья по I2C- Тыц, но рабочих примеров я в рунете не нашел. Разобравшись, решил написать сюда.


Читать дальше
  • -1
  • 18 января 2013, 16:14
  • murz85

Raspberry Pi. Работаем с I2C на Python

Наконец-то появилось немного свободного времени и я решил более тщательно поковырять порты GPIO у Raspberry Pi. Если хочется просто подрыгать ногами, помигать светодиодами или пообмениваться данными через уарт, то это достаточно просто и в сети полно мануалов, хотя если кому надо, пишите, проведу небольшой ликбез. Я же решил сразу поиграться с шиной I2C и подключить к Raspberry Pi микромеханический трехосный акселерометр MMA7455 (в свое время купил на ебее уже распаянный на платке с выведенными нужными ногами на штыри, цена вопроса 7-10 баксов).


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

Софтварный I2C для MPL115A2 и AVR.

AVR
Почитав статью «Цифровой измеритель абсолютного давления (барометр) MPL115A2» решил запустить оный на AVR. С аппаратным I2C связываться не стал, т.к. барометр поддерживает очень высокие скорости обмена и получается выгоднее читать его софтварно, не мешая остальным прерываниям, чем долго и мучительно разгребать регистр TWR ради четырёх паршивых байт. Ну и отсутствие привязки к выводам радует.
Итак, в архиве Си файл со всеми необходимыми функциями, который надо просто прицепить к своему проекту. Написан под IAR, но из специфичного там только функция __delay_cycles(); Как следует из названия, она выполняет задержку в тактах контроллера. Просто заменяем её принятой в своём компиляторе для обеспечения необходимых выдержек между сменой состояния лапок. Задержки (скорость) подобрать по вкусу.

Настойка софтварного I2C сводится к изменению всего 5 дефайнов.
DS_I2C_PIN, DS_I2C_DDR, DS_I2C_PORT — регистры порта, к которому подключён барометр.
DS_SDA_LN, DS_SCL_LN — биты порта для соответствующих линий.
И всё, больше ничего трогать не надо.

Ну, ещё DS_I2C_T отвечает за задержку вкупе с параметром F_CLK, который обычно задаётся в основном коде. DS_I2C_T == 1000 достаточно для работы барометра при кварце 16 МГц (задержка получается 16000 тактов или 1 мс).

На выходе имеем три функции и два буфера:

void read_coef_soft(void); // считать коэффициенты и положить их в буфер MPL115A2_coef.
void start_conv_soft(void); // запустить преобразование температуры и давления.
void read_result_soft(void); // считать температуру и давление и сунуть в MPL115A2_result.

unsigned char MPL115A2_coef[8];   // буфер коэффициентов
unsigned char MPL115A2_result[4]; // буфер результата


Выполнив функции можно пользовать результаты в соответстующих буферах.

Разумеется, функции I2C можно использовать и в других разработках.
  • +3
  • 03 сентября 2012, 18:50
  • Dikoy
  • 1

Использование аппаратного I2C MSP430LaunchPad и EZ430-F2012 для подключения сегментного индикатора МЭЛТ-10

Поскольку процессоры MSP430G2553 и MSP430F2012 имеют на борту аппаратный I2C, то захотелось подключить сегментный индикатор МЭЛТ-10 не программным способом ( как описывал в предыдущей заметке), а используя железо.
На просторах интернета обнаружил некоторое количество ругани на примеры от Texas Instruments в смысле их неработоспособности, нечитаемости и т.д. Однако, усомнился в том, что у столь серьёзной фирмы инженеры не думают об упрощении жизни конечных пользователей.

Читать дальше
  • +4
  • 15 августа 2012, 07:00
  • libval
  • 2

Набор исходников для эмбеддера

Осматривал свои старые закрома, нашёл этот архивчик

Примеры исходников
  • +9
  • 28 июля 2012, 11:38
  • uni
  • 1

Подключение к MSP430LaunchPad сегментного индикатора МЭЛТ по I2C


Потребовалось подключить к MSP430 Launchpad дисплей для отображения простейшей информации.
Подробно описанное в инете подключение графического дисплея от Nokia не устроило ввиду значительного объёма библиотеки, кропотливости работы по распайке оного устройства, да и просто излишества функций.


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

IIC/I2C/TWI и провод "Пружинка"

Вопрос и проблема интересные)

Есть два маленьких МК на одной плате и они будут слать инфу большому МК, который на другой плате, и в зависимости от этой инфы принимает решение что делать дальше.


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

YAMBC - Yet another msp430-based clock - Часть 2. Софт

Первая часть (железо)
Перейдем к софту!
Программа написана под IAR Kickstart. Размер кода ограничен 4Кб, но для нашего проекта нам хватит.
Давайте рассмотрим выстраданный код работы с часами по i2c. Библиотеки и примеры от TI совершенно неработоспособны. Путем долгих экспериментов удалось подобрать работающее решение.
Пару констант для читабельности кода

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