Работа: Adafruit Unified BMP085/BMP180 Driver

Кенджуцу
Чт, 04 февраля 2016 г. 8:27 утра
Всем привет,

Adafruit Unified BMP085/BMP180 Работа.

Rogerclark
Чт, 04 февраля 2016 г. 10:23
Спасибо за публикацию

Tiger762
Чт, 04 февраля 2016 г., 15:52
Единственное, что мне нужно было сделать, когда я подключил BMP180, - это изменить провод.H от

#define SDA 19
#define SCL 20

к:

#define SDA 23
#define scl 22

Для «синего» STM32F103C8T6 с использованием порта I2C на PB6+PB7. Затем смог запустить эскиз i2c_scanner. Возвращен адрес I2C 0x77. Оттуда пошел на все шарики с образцом адафрута. Получил темп/пресс/высота в серийном мониторе : mrgreen:

ZMEMW16
Чт, 04 февраля 2016 г., 19:31
Я немного сбил с толку; какая доска с синими таблетками это? ссылка, если возможно.

Не решается SDA SCL, но, возможно, #undef SDA #Define SDA и т. Д

Позвольте кому -нибудь спросить, почему их не? Вместо того, чтобы работать, вам нужно изменить довольно низкие файлы?

Стивен

Tiger762
Чт, 04 февраля 2016 г., 22:58
Это та же доска, я думаю, большинство из нас используют:

http: // www.eBay.com/itm/321569700934

Модификация провода.H был уместным, потому что именно там определены SDA и SCL. Другие файлы получат значения для SDA/SCL из провода.час. Два булавки, которые они были определены, не являются, по крайней мере, на этой плате.

Кенджуцу
Пт, 05 февраля 2016 г. 5:40 утра
Это очень странно. У меня такой же тип Синяя таблетка Правление, а шахта работает без каких -либо изменений в Проволока.час :?

ZMEMW16
Пт. 05 февраля 2016 г. 14:05
@tiger762

разгона мудрая красная таблетка == Синяя таблетка; SCL/SDA - 16,15 в соответствии с моими расписками и схемой.
Различия являются физическими, размер заглушек, USB -гнездо и регулятор 3V3

Физически из Topside Board SWD Conc End, справа 3V3, GND, 3V3, PB9, PB8 (32), PB7 SDA (15), PB6 SCL (16)

Где вы нашли эти пин -номера 19, 20 (на таблетке это PB3 & PA15) & также 22, 23 (на таблетке они не распределены)?

Я очень сильно сомневаюсь, что интерфейс I2C будет разделиться на разные порты на разные порты.

Стивен

Mrburnette
Пт. 05 февраля 2016 г. 15:13
Tiger762 написал: <...>
Модификация провода.H был уместным, потому что именно там определены SDA и SCL. Другие файлы получат значения для SDA/SCL из провода.час. Два булавки, которые они были определены, не являются, по крайней мере, на этой плате.

Rogerclark
Пт, 05 февраля 2016 г., 8:16 вечера
Я помню, как кто -то упоминает определение для SCL и SDA некоторое время назад, но я не могу помнить именно то, в чем была проблема.

Я думаю, это было просто то, что определения не использовались в глобальном конструкторе для провода, но мне пришлось дважды проверить.

Причина, по которой мы используем рассматриваемые 2 контакта, заключается в том, что они являются аппаратными контактами i2c, даже если класс провода по умолчанию использует программное обеспечение i2c.
Так что любой, у кого есть существующее оборудование, мог попробовать Admware i2c и не должен переоценить.

На самом деле, теперь аппаратное i2c работает, возможно, это должен быть класс проводов по умолчанию, но изменение его может вызвать множество проблем для людей, поэтому я подозреваю, что слишком поздно изменить его сейчас.

К сожалению, с языком Arduino, LIBS WIRE (и SPI и т. Д.) Создают глобальные экземпляры объекта по умолчанию. Что было хорошо на ограниченном оборудовании AVR, но стало строительством на STM32 и других более мощных и гибких MCUS.
Следовательно, наш обходной путь в SPI, чтобы изменить канал класса по умолчанию.

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

Пожалуйста, не стесняйтесь написать эту новую функциональность и отправить запрос на привлечение .

Tiger762
Сб 06 февраля 2016 г. 14:04
Serial.print("PB6: "); Serial.println(PB6); Serial.print("PB7: "); Serial.println(PB7);

ZMEMW16
Сб 06 февраля 2016 г., 19:39
что -то где -то не так!
Debian Jessie 32bit в течение полуночи с Arduino 1.6.5R5 Linux 32-битный и arduino_stm32-310116-1345

Если я правильно рассчитываю, вы подключены к PB10, PB11 - это i2c2

для i2C1 это 180 вращающихся таблеток и дополнительная булавка вдоль

мои синие таблетки и сбрасываются
PA0: 0 PB0: 16
PA1: 1 PB1: 17
PA2: 2 PB2: 18
PA3: 3 PB3: 19
PA4: 4 PB4: 20
PA5: 5 PB5: 21
PA6: 6 PB6: 22
PA7: 7 PB7: 23
PA9: 9 PB9: 25
PA10: 10 PB10: 26
PA11: 11 PB11: 27
PA12: 12 PB12: 28
PA13: 13 PB13: 29
PA14: 14 PB14: 30
PA15: 15 PB15: 31

Tiger762
Сб 06 февраля 2016 г., 8:16 вечера
Пара вещей. Предыдущий пост отображал значения PB6, а PB7 - шестнадцатеричная. PB6 - 22 в десятичном и PB7 - 23. Кроме того, BMP180 находится в правом нижнем углу и подключен к I2C1, который находится в верхнем левом. Я посмотрел на картинку и вижу, как она сбивает с толку, потому что мой модуль GPS подключен к USART#3, который делится штифтами с i2C2. Я также использовал синий/фиолетовый для i2C1 (BMP180) и USART3 (NEO-6M)

Надеюсь, это прояснит любую путаницу.

ZMEMW16
Сб 06 февраля 2016 г., 8:22 вечера
Serial.print("PA13: "); Serial.print(PA13,16); Serial.print("\tPB13: "); Serial.println(PB13,16);

Rogerclark
Сб 06 февраля 2016 г., 8:55 вечера
Я предполагаю, что мы могли бы реализовать SetModule (int i2CChannel) для провода так же, как это было сделано для SPI

Однако, поскольку класс проводов по умолчанию на самом деле является SW, а не HW I2C, может быть лучше добавить функцию, называемую SetPins (int SCL, int SDA)

На самом деле, класс разоблачает свойства как для выводов SCL, так и для SDA,
class TwoWire : public WireBase { public: uint8 i2c_delay; uint8 scl_pin; uint8 sda_pin;

Mrburnette
Сб 06 февраля 2016 г. 11:31
Rogerclark написал: т.е.scl_pin и проволока.SDA_PIN

Поэтому, если кто -то хотел использовать разные булавки, самая легкая вещь - просто написать код, чтобы установить их в Setup ()