Беннебой
Чт 12 января 2017 г. 11:12
https: // github.com/faboplatform/fabo3ax ... 45-библиотека
Если я правильно прочитал, все, что мне нужно сделать, чтобы работать на STM32, - это правильно введите переменные?
Я вижу в коде, что он использует «int» регулярно, предположительно, они должны быть напечатаны как int16_t.
Я не заметил ни одного из других Nasties и предполагаю, что версия Wire STM32 позаботится о i2c.
Итак, как правильный способ сделать это, если я разыграл оригинальный код авторов и выпустит пиар для редактирования или мы делаем частную копию постфикс STM32? Или кто -то еще беспокоит, и я просто ссылаюсь на местную версию?
Я бросил библиотеки Adafruits ADXL345 (также требует их общей библиотеки датчиков) в пользу этого, потому что это намного меньше.
Просто пытаюсь подготовить вещи к подготовке к тому, как прибудут мои доски.
Если я правильно прочитал, все, что мне нужно сделать, чтобы работать на STM32, - это правильно введите переменные?
Я вижу в коде, что он использует «int» регулярно, предположительно, они должны быть напечатаны как int16_t.
Я не заметил ни одного из других Nasties и предполагаю, что версия Wire STM32 позаботится о i2c.
Итак, как правильный способ сделать это, если я разыграл оригинальный код авторов и выпустит пиар для редактирования или мы делаем частную копию постфикс STM32? Или кто -то еще беспокоит, и я просто ссылаюсь на местную версию?
Я бросил библиотеки Adafruits ADXL345 (также требует их общей библиотеки датчиков) в пользу этого, потому что это намного меньше.
Просто пытаюсь подготовить вещи к подготовке к тому, как прибудут мои доски.
Даниэфф
Чт 12 января 2017 г. 11:49
Я думаю, что библиотека в порядке, как есть. Не проверял это, но не так, как будто вы должны менять каждый int, чтобы запустить на STM32.
Беннебой
Чт 12 января 2017 г. 16:57
ОК достаточно справедливо
Предположительно, это было бы немного уменьшить количество используемой динамической оперативной памяти, хотя.
Предположительно, это было бы немного уменьшить количество используемой динамической оперативной памяти, хотя.
Беннебой
Пн 23 января 2017 г. 15:09
Доска прибыла,
Перенил мой проект на него и начал кодировать различия в.
Работает до сих пор:
3X SSD1306 OLED работает с использованием программного SPI (библиотека Adafruit)
Макс 31586, работая над другой программной шиной SPI (библиотека Adafruit)
Аналоговые входы работают нормально, используя 4096 против 1024 Divisor.
Я не могу работать, это FABO над i2c.
FABO полагается на проволоку.H для оборудования i2c, мне нужно включить вариант Maple Mini с жесткими кодированием i2c на контакты 15 & 16? Это булавки на шелкопленном экране на моей доске и соответствуют этой ссылке -> https: // Разработчик.Mbed.org/media/upload ... NOUT01.пнн
Перенил мой проект на него и начал кодировать различия в.
Работает до сих пор:
3X SSD1306 OLED работает с использованием программного SPI (библиотека Adafruit)
Макс 31586, работая над другой программной шиной SPI (библиотека Adafruit)
Аналоговые входы работают нормально, используя 4096 против 1024 Divisor.
Я не могу работать, это FABO над i2c.
FABO полагается на проволоку.H для оборудования i2c, мне нужно включить вариант Maple Mini с жесткими кодированием i2c на контакты 15 & 16? Это булавки на шелкопленном экране на моей доске и соответствуют этой ссылке -> https: // Разработчик.Mbed.org/media/upload ... NOUT01.пнн
Беннебой
Пн 23 января 2017 г. 16:56
Я проверил очевидные вещи:
У платы 345, которую я использую, есть регулятор, она проходит 3.3V, чтобы чип получает VCC.
Резисторы подтягивания на доске 4.7k
У библиотеки есть метод SearchDevice на объекте, это то, что терпит неудачу - подозревает, что это как -то связано с тем, как обстоят дела в коде, или я просто понял неверные булавки/что -то, или что -то вроде Шины I2C и код ожидает адреса, которого нельзя не существует.
Не очень знаком с I2C, так что я думаю, пришло время пойти на Googling.
У платы 345, которую я использую, есть регулятор, она проходит 3.3V, чтобы чип получает VCC.
Резисторы подтягивания на доске 4.7k
У библиотеки есть метод SearchDevice на объекте, это то, что терпит неудачу - подозревает, что это как -то связано с тем, как обстоят дела в коде, или я просто понял неверные булавки/что -то, или что -то вроде Шины I2C и код ожидает адреса, которого нельзя не существует.
Не очень знаком с I2C, так что я думаю, пришло время пойти на Googling.
Беннебой
Пн 23 января 2017 г., 17:34
Общий сканер I2C находит устройство
Scanning...
I2C device found at address 0x53 !
done
ZMEMW16
Пн 23 января 2017 г., 17:57
Попробуйте Sniffers из примеров Wire Lib, один из них обычно работает для меня.
другой пробует адрес + 1, e.глин. 0x3c & 0x3d istr A 9.98 "OLED по какой -то причине - ссылка на альтернативный адрес ?
Стивен
<редактировать> мне нужно напечатать быстрее </редактировать>
другой пробует адрес + 1, e.глин. 0x3c & 0x3d istr A 9.98 "OLED по какой -то причине - ссылка на альтернативный адрес ?
Стивен
<редактировать> мне нужно напечатать быстрее </редактировать>
Беннебой
Пн 23 января 2017 г. 18:07
Я попробовал подхишать, см. Предыдущий пост, он возвращает правильный адрес.
Вот определение адреса из заголовка библиотеки:
/** slave_address*/
#define adxl345_slave_address 0x53
Я почти уверен, что что -то идет не так с тем, как конструктор библиотеки работает на STM32, но я не самый величайший кодер в мире (особенно объектно -ориентированный код), так что в настоящее время я немного невежественен.
Вот определение класса из заголовка библиотеки:
Вот определение адреса из заголовка библиотеки:
/** slave_address*/
#define adxl345_slave_address 0x53
Я почти уверен, что что -то идет не так с тем, как конструктор библиотеки работает на STM32, но я не самый величайший кодер в мире (особенно объектно -ориентированный код), так что в настоящее время я немного невежественен.
Вот определение класса из заголовка библиотеки:
class FaBo3Axis
{
public:
FaBo3Axis(uint8_t addr = ADXL345_SLAVE_ADDRESS);
bool searchDevice(void);
void configuration(void);
void powerOn(void);
void readXYZ(int *x, int *y, int *z);
uint8_t readIntStatus();
void enableTap();
bool isSingleTap(uint8_t value);
bool isDoubleTap(uint8_t value);
private:
uint8_t _i2caddr;
void writeI2c(uint8_t register_addr, uint8_t value);
void readI2c(uint8_t register_addr, uint8_t num, uint8_t *buf);
};
Беннебой
Пн 23 января 2017 г. 20:14
Хорошо, так что все в паре назад, и библиотека отлично работает в изоляции.
Таким образом, либо мой код наносит на него, либо он не очень хорошо играет в сочетании с другими библиотеками SPI Software, которые я использую, но только для STM32??
Таким образом, либо мой код наносит на него, либо он не очень хорошо играет в сочетании с другими библиотеками SPI Software, которые я использую, но только для STM32??
Беннебой
Пн 23 января 2017 г. 20:16
На самом деле, нет, это не так, он возвращает один и тот же случайный результат назад....
Беннебой
Пн 23 января 2017 г. 9:07 вечера
Подозревает, что это проблема с наследством от проволочной базы.доступный()
У кого -нибудь еще есть пример кода i2c, который использует этот метод?
У кого -нибудь еще есть пример кода i2c, который использует этот метод?
Беннебой
Пн 23 января 2017 г. 9:17 вечера
В тупике. ПОМОЩЬ
ZMEMW16
Вт 24 января 2017 г. 12:36
Сделал GREP -R _I2CADDR в каталоге библиотеков F1, только файлы ADAFRIT_SSD1306/ADAFRIT_SSD1306_STM32.час & У CPP это есть
Поиск i2Caddr здесь дал 4 результата, один из которых упоминал #Define i2Caddr (бла)
Стивен
Поиск i2Caddr здесь дал 4 результата, один из которых упоминал #Define i2Caddr (бла)
Стивен
Беннебой
Вторник 24 января 2017 г. 7:30 утра
ZMEMW16 написал:Сделал GREP -R _I2CADDR в каталоге библиотеков F1, только файлы ADAFRIT_SSD1306/ADAFRIT_SSD1306_STM32.час & У CPP это есть
Поиск i2Caddr здесь дал 4 результата, один из которых упоминал #Define i2Caddr (бла)
Стивен
Поиск i2Caddr здесь дал 4 результата, один из которых упоминал #Define i2Caddr (бла)
Стивен
Беннебой
Вт 24 января 2017 г. 8:32
SSD1306 использует Hardwire & не читает, просто пишет.
Думаю, я на правильном пути с методом доступного (), просто необходимо найти какой -то другой код STM32, который использует его при чтении.
Думаю, я на правильном пути с методом доступного (), просто необходимо найти какой -то другой код STM32, который использует его при чтении.
Беннебой
Вт 24 января 2017 г. 9:02
Я нашел этот пост, который позволяет реализации проволоки не работает с рабовладельческими устройствами...
http: // www.STM32duino.com/viewtopic.PHP?t = 446
ADXL345 работает как раб -> https: // www.Sparkfun.com/datahasthets/sen ... DXL345.PDF
Я полный новичок в этом аппаратном уровне, правда ли, что реализация провода не будет работать со рабов?
http: // www.STM32duino.com/viewtopic.PHP?t = 446
ADXL345 работает как раб -> https: // www.Sparkfun.com/datahasthets/sen ... DXL345.PDF
Я полный новичок в этом аппаратном уровне, правда ли, что реализация провода не будет работать со рабов?
Беннебой
Вт 24 января 2017 г. 9:07
Хорошо, собираюсь перестать задавать глупые вопросы, а затем найти ответы с быстрым поиском.
Беннебой
Вт 24 января 2017 г. 11:57
Хорошо, так что не уверен, что этот комментарий к методу :: request from в проволочной базе.CPP является показателем проблемы?
Пожалуйста, может ли любой, кто знает больше о том, как работает этот код, пожалуйста, прокомментируйте?
Я также вставил на провод Arduino.H эквивалент ниже
STM32 проволочная база.CPP
Пожалуйста, может ли любой, кто знает больше о том, как работает этот код, пожалуйста, прокомментируйте?
Я также вставил на провод Arduino.H эквивалент ниже
STM32 проволочная база.CPP
//TODO: Add the ability to queue messages (adding a boolean to end of function
// call, allows for the Arduino style to stay while also giving the flexibility
// to bulk send
uint8 WireBase::requestFrom(uint8 address, int num_bytes) {
if (num_bytes > WIRE_BUFSIZ) {
num_bytes = WIRE_BUFSIZ;
}
itc_msg.addr = address;
itc_msg.flags = I2C_MSG_READ;
itc_msg.length = num_bytes;
itc_msg.data = &rx_buf[rx_buf_idx];
process();
rx_buf_len += itc_msg.xferred;
itc_msg.flags = 0;
return rx_buf_len;
}
Беннебой
Вт 24 января 2017 г. 15:18
Я перешел в библиотеку ADAFRIT ADXL345, размер кода больше (~ 3KB), но это не имеет большого значения на этом устройстве.
Я обернул библиотечные вызовы в условные условия, поэтому, если он построен на небольшом аппаратном обеспечении, он использует библиотеку FABO.
Лучший из обоих миров, но грязный код.
Когда я узнаю больше об этом, я могу вернуться и сделать свою собственную гораздо меньшую библиотеку.
Я обернул библиотечные вызовы в условные условия, поэтому, если он построен на небольшом аппаратном обеспечении, он использует библиотеку FABO.
Лучший из обоих миров, но грязный код.
Когда я узнаю больше об этом, я могу вернуться и сделать свою собственную гораздо меньшую библиотеку.
Беннебой
Вт 24 января 2017 г. 15:32
Код проекта для всех заинтересованных -> https: // github.com/bennehboy/lrduino