Такшак
Вт 21 июля 2015 г. 15:04
У меня есть датчик температуры и влажности AM2320 (таблица данных http: // akizukidenshi.com/download/ds/aosong/am2320.PDF)
Он имеет адрес 0xb8 (декабрь-184) > 127
Попытка со следующим кодом, каждая напечатанная строка равен нулю...
Он имеет адрес 0xb8 (декабрь-184) > 127
Попытка со следующим кодом, каждая напечатанная строка равен нулю...
#include
#define I2CADDR 0xb8
#define READCMD 0x03
#define REGSTADDR 0x00
#define REGCOUNT 4
#define REGADDR 0x0B
void setup() {
Wire.begin(); // wake up I2C bus
Serial.begin(9600);
}
void loop() {
byte buf[10];
//
// Read Command
//
Wire.beginTransmission(I2CADDR);
Wire.write(READCMD);
Wire.write(REGSTADDR);
Wire.write(REGCOUNT);
Wire.endTransmission();
//
// Waiting
//
delay(2); //>1.5ms
//
// Read
//
Wire.requestFrom(I2CADDR, 2 + REGCOUNT + 2); // COMMAND + DATA + REGCOUNT + CRCLSB + CRCMSB
int i = 0;
for (; i < 2 + REGCOUNT + 2; i++)
buf[i] = Wire.read();
for (i=0; i < 2 + REGCOUNT + 2; i++)
Serial.println(buf[i]);
delay(3000);
}
Martinayotte
Вт 21 июля 2015 г. 15:56
Определенно, адрес 0xb8 уже смещен, поэтому, как вы упоминали, вам нужен «(#define i2caddr (0xb8 >> 1)) "
Кроме того, я не вижу, где он терпит неудачу, так как у меня нет такого модуля, чтобы попробовать его.
У вас есть надлежащие резисторы с подтягиванием на автобусе ?
Кроме того, я не вижу, где он терпит неудачу, так как у меня нет такого модуля, чтобы попробовать его.
У вас есть надлежащие резисторы с подтягиванием на автобусе ?
Такшак
Вт 21 июля 2015 г., 19:13
Martinayotte написал:Определенно, адрес 0xb8 уже смещен, поэтому, как вы упоминали, вам нужен «(#define i2caddr (0xb8 >> 1)) "
Кроме того, я не вижу, где он терпит неудачу, так как у меня нет такого модуля, чтобы попробовать его.
У вас есть надлежащие резисторы с подтягиванием на автобусе ?
Кроме того, я не вижу, где он терпит неудачу, так как у меня нет такого модуля, чтобы попробовать его.
У вас есть надлежащие резисторы с подтягиванием на автобусе ?
Mrburnette
Чт 23 июля 2015 г. 1:23
Тхакшак написал:У меня есть датчик температуры и влажности AM2320 (таблица данных http: // akizukidenshi.com/download/ds/aosong/am2320.PDF)
Он имеет адрес 0xb8 (декабрь-184) > 127
Он имеет адрес 0xb8 (декабрь-184) > 127
Martinayotte
Чт 23 июля 2015 г. 13:55
@Ray, это потому, что их реализация I2C не меняет адрес:
I2C_Write(AM2320_address + I2C_write_cmd);
Такшак
Сб 25 июля 2015 г., 20:23
Martinayotte написал:Определенно, адрес 0xb8 уже смещен, поэтому, как вы упоминали, вам нужен «(#define i2caddr (0xb8 >> 1)) "
Кроме того, я не вижу, где он терпит неудачу, так как у меня нет такого модуля, чтобы попробовать его.
У вас есть надлежащие резисторы с подтягиванием на автобусе ?
Кроме того, я не вижу, где он терпит неудачу, так как у меня нет такого модуля, чтобы попробовать его.
У вас есть надлежащие резисторы с подтягиванием на автобусе ?
Rogerclark
Сб 25 июля 2015 г. 22:05
Какова максимальная скорость i2c для этого модуля?
Скорость по умолчанию на STM32 установлена на 250 кбит / с вместо 100 Кбит / с на AVR.
Однако большинство модулей работают до 400 кб / с / сб / с / сб, так что обычно это не проблема, но это то, что нужно иметь в виду.
Скорость по умолчанию на STM32 установлена на 250 кбит / с вместо 100 Кбит / с на AVR.
Однако большинство модулей работают до 400 кб / с / сб / с / сб, так что обычно это не проблема, но это то, что нужно иметь в виду.
Такшак
Солнце 26 июля 2015 г. 11:09
Rogerclark написал:Какова максимальная скорость i2c для этого модуля?
Скорость по умолчанию на STM32 установлена на 250 кбит / с вместо 100 Кбит / с на AVR.
Однако большинство модулей работают до 400 кб / с / сб / с / сб, так что обычно это не проблема, но это то, что нужно иметь в виду.
Скорость по умолчанию на STM32 установлена на 250 кбит / с вместо 100 Кбит / с на AVR.
Однако большинство модулей работают до 400 кб / с / сб / с / сб, так что обычно это не проблема, но это то, что нужно иметь в виду.
Rogerclark
Солнце 26 июля 2015 г. 12:09
Просто чтобы проверить это
Перейти в/stm32f1/библиотеки/проволоки.CPP и внизу изменения
Перейти в/stm32f1/библиотеки/проволоки.CPP и внизу изменения
TwoWire Wire(PB6, PB7, SOFT_FAST);
Такшак
Солнце 26 июля 2015 г. 13:39
Rogerclark написал:Просто чтобы проверить это
Перейти в/stm32f1/библиотеки/проволоки.CPP и внизу изменения
Перейти в/stm32f1/библиотеки/проволоки.CPP и внизу изменения
TwoWire Wire(PB6, PB7, SOFT_FAST);
Rogerclark
Солнце 26 июля 2015 г., 21:33
К сожалению, похоже, что API ARDUINO / WRING не имеет способа установить скорость.
Я думаю, что теперь это главное упущение, когда новые доски способны на более высокие скорости, а некоторые устройства e.глин. Accelermoeters выигрывает, если вы можете прочитать их данные как можно быстрее.
Когда я экстрагирую, некоторые библиотеки могут иметь жесткие ссылки на проволоку в них, было бы смысл добавить новую функцию в провод SetSpeed (int speedinkhz)
Или, возможно, добавить необязательный аргумент для подключения.начинать (int address, int speedinkhz)
У вас есть другие идеи ?
Я думаю, что теперь это главное упущение, когда новые доски способны на более высокие скорости, а некоторые устройства e.глин. Accelermoeters выигрывает, если вы можете прочитать их данные как можно быстрее.
Когда я экстрагирую, некоторые библиотеки могут иметь жесткие ссылки на проволоку в них, было бы смысл добавить новую функцию в провод SetSpeed (int speedinkhz)
Или, возможно, добавить необязательный аргумент для подключения.начинать (int address, int speedinkhz)
У вас есть другие идеи ?
Кенджуцу
Пн 27 июля 2015 г. 8:58 утра
Rogerclark написал: Было бы иметь смысл добавить новую функцию в провод SetSpeed (int speedinkhz)
Или, возможно, добавить необязательный аргумент для подключения.начинать (int address, int speedinkhz)
Или, возможно, добавить необязательный аргумент для подключения.начинать (int address, int speedinkhz)