Arduino_core_stm32f1 & I2c

Каниджа
Пт 26 мая 2017 г. 11:13
Привет

Я попробовал "arduino_core_stm32f1" Repo:
https: // github.com/stm32duino/arduino_core_stm32f1
, Потому что мне нужен UC, как раб i2c.
Я узнал, что I2C работает только на PB8 & PB9.

Как у меня есть доски с SCL & SDA на PB6 & PB7 У меня есть вопрос:
Кто -нибудь удалось заставить i2c работать на PB6 & PB7 с этим репо?

спасибо
Каниджа

fpistm
Сб 27 мая 2017 г., 7:19
Привет @Caniggia,

Вы правы i2c булавки в жесткой кодировке.
https: // github.com/stm32duino/arduino_c ... Тви.C#L148

Изменение, G_I2C_INIT_INFO Должно быть возможно получить его на PB6 & PB7.

К вашему сведению, этот репо будет объединен в общем ядре Arduino для STM32 в ближайшее время, в этом репонировании не будут жестко кодируются.
https: // github.com/stm32duino/arduino_core_stm32

Каниджа
Пн 29 мая 2017 г. 9:02
Привет @fpistm
Спасибо за ответ.

Прежде чем я попытаюсь изменить i2c на PB6 & PB7, я снова протестировал библиотеку проводов на оригинальном PB8 & PB9.

"Master_Writer" & "slav_receiver" работают хорошо.

Но "master_reader" & "Slave_sender" не работает.
Мастер только что читает 6 байтов 0x00 (SDA всегда низко), и это в 4-5 раз, затем общение останавливается (SCL снижается, и он остается там).
Я должен сбросить раба, чтобы начать его снова.
Протестировано с 2-кратным плавным и внешним подтягиванием (4K7).

Может кто -нибудь подтвердить это и, если возможно, дать советы/решение, что здесь не так?
Спасибо
Каниджа

Wi6labs
Пн 29 мая 2017 г. 12:17
Привет @Caniggia

К сожалению, режим TX Slave не работает с STM32F1. Это известная проблема.
Режим Slave TX и RX не совместим в текущей версии HAL. Таким образом, чтобы быть совместимым с библиотекой Wire, мы решили по умолчанию установить RX -режим Slave Mode.
Ждем новой версии HAL.

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

Каниджа
Пн 29 мая 2017 г. 13:07
Привет @wi6labs
Спасибо за ответ.

Да, мне очень важно иметь раб RX & TX Slave Mode.
Когда будет готов новый HAL?

Можете ли вы указать мне на любую другую библиотеку (Техас & RX Slave Support), даже если библиотека не Arduino.
Некоторый простой пример, как использовать библиотеку, тоже было бы неплохо.

спасибо
Каниджа

Wi6labs
Чт, 01 июня 2017 г. 13:53
@caniggia

Я исправил проблему с режимом TX Slave, потому что был действительно один.
Я добавил пример в библиотеку проводов, чтобы дать решение для использования рабов в Техасе & RX -режим.

Вы можете найти патч здесь на данный момент: https: // github.com/stm32duino/arduino_c ... F1/PULL/46

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

Я надеюсь, что это может вам помочь.

Каниджа
Чт, 01 июня 2017 г. 16:07
@Wi6labs

Спасибо,
Я собираюсь проверить это завтра утром.

Каниджа

Каниджа
Пт, 02 июня 2017 г. 10:45 утра
Привет Wi6labs

Я загрузил ваши 3 файлы и попробовал ваш Slave_Receiver_sender.Ино.
Какой мастер -эскиз вы использовали, чтобы проверить его?
Я объединил Master_Writer & Мастер -читатель.
Master_Writer_reader: #include void setup() { Wire.begin(); // join i2c bus (address optional for master) Serial.begin(9600); } byte x = 0; void loop() { Wire.beginTransmission(2); // transmit to device #4 Wire.write("x is "); // sends five bytes Wire.write(x); // sends one byte Wire.endTransmission(); // stop transmitting delay(20); // had to add delay or slave won't respond to read request Wire.requestFrom(2, 6); // request 6 bytes from slave device #4 while(Wire.available()) // slave may send less than requested { char c = Wire.read(); // receive a byte as character Serial.print(c); // print the character } x++; delay(500); }

Каниджа
Пт, 02 июня 2017 г., 11:57
Может это поможет.

Я изменил задержку с 20 мс на 100 мс: hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello x is b x is c x is d x is e hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello hello

Wi6labs
Ср. 07 июня 2017 г. 8:54 утра
Привет, Каниджа

Я подтолкнул свой пример мастера -читателя & писатель.

Я пытался с задержкой между каждым запросом на 10 мс, и нашел 2 проблемы:
  • Задержка внутри примера цикла подчиненного. Может, вы можете просто удалить это.
  • Серийная скорость должна быть увеличена, чтобы позволить выйти из функции receeeVent (), прежде чем мастер отправил следующий запрос (я попробовал с 115200 бод).
Я надеюсь, что это решит вашу проблему.

fpistm
Ср. 07 июня 2017 г. 9:18
Привет @Caniggia,
@Wi6labs поднял проблему в репо, чтобы следовать этой проблеме.
https: // github.com/stm32duino/arduino_c ... /проблемы/47
Если его исправление в порядке, она будет объединена.
Иначе, как я уже упоминал, этот момент будет дублироваться в новом репо и исправлена, когда F1 будет объединен.

Каниджа
Чт, 08 июня 2017 г. 8:44 утра
Привет @wi6labs & @fpistm

Спасибо за ваши усилия, чтобы заставить эту библиотеку рабовладельцев работать. Задержка внутри примера цикла подчиненного. Может, вы можете просто удалить это.
Серийная скорость должна быть увеличена, чтобы позволить выйти из функции receeeVent (), прежде чем мастер отправил следующий запрос (я попробовал с 115200 бод).
Звучит очень логично.
Я не знаю, как я пропустил задержку в рабской петле. Я действительно должен получить очки :)

Я попробую, как только у меня будет время, наверное, Томмороу.

Спасибо
Каниджа

Каниджа
Пн 12 июня 2017 г. 12:25
Привет @wi6labs

В рабском эскизе я прокомментировал задержку в петле.
А также серийный.Печать в получении.

Это работает хорошо даже без промедления между чтением & Написать в Мастере.

Тогда я изменил заказ в Мастере. Сначала напишите, затем прочитайте.
Потому что я буду использовать это таким образом.
Master отправляет команду, а затем получает данные в зависимости от этой команды.
Мне нужно 100us (Micro Sec.) задержка между записи & Читать.

Я запустил его на выходных, и мне это выглядит нормально.

Спасибо
Каниджа

Wi6labs
Пн 12 июня 2017 г. 12:43
Привет @Caniggia

Спасибо за ваш отзыв.
Выступления выглядят очень хорошо.
Мы объединим патч.

Спасибо
Wi6labs

Maple Bootloader 2.0