-
- Всё равно не могу въехать в магию со скоростью передачи и режимами
Фаст и Стандарт. Я так понимаю, Фаст и Стандарт отличаются только
наличием режима более узкого импульса SCL? А скорость передачи
можно выбрать любой в обоих режимах? - IBAH(20.02.2026 10:48)
- В I2C длительность низкого уровеня SCL ведомый имеет право растягивать, а вот длительность высокого уровеня формируется ведущим. Если slave не обладает быстродействием необходимым для Fast-режима, то не факт, что он сможет работать при такой тактовой. И тем более не сможет работать арбитраж шины между Fast и Standart ведущими. - reZident(20.02.2026 11:11)
- Подробностей не помню, давно делал. Но подтверждаю - без прерываний
не обойтись. - il-2(07.02.2026 15:11)
- Так может ну его, энтот ДМА, на прерываниях выедем? - IBAH(07.02.2026 21:02)
- Чтоб ИИ смеялся? Ну а если серъёзно - то если производительности хавтает, то почему бы и не оставить так? - symbions(07.02.2026 23:59)
- Так может ну его, энтот ДМА, на прерываниях выедем? - IBAH(07.02.2026 21:02)
- объясните, кто поднимал I2C через DMA на F103, я правильно понимаю
алгоритм? Задача: передача Мастером блока данных. IBAH(366 знак., 07.02.2026 14:48 - 15:09)
- 1. настраиваем i2c, кормим дисплей строкой инициализации, настраиваем dma, разрешаем прерывание transfer_complete beefdeadbeef(772 знак., 08.02.2026 18:45)
- Было дело, разгонял I2C. Было немного муторно, подробностей уже не
вспомню, наверное. Вот немного кода: SciFi(570 знак., 07.02.2026 14:51)
- а где I2C1->CCR, в нем главная магия - IBAH(07.02.2026 15:07)
- поиск по тексту сломался? - SciFi(07.02.2026 15:13)
- а где I2C1->CCR, в нем главная магия - IBAH(07.02.2026 15:07)
- В более поздних семействах там что-то вменяемое появилось. А в ранних - да, трэш и угар. - SciFi(06.02.2026 23:07)
- Всегда задаю вопрос в такой ситуации - нахера DMA (или хотя бы
прерывания) для I2C если только не используется ось, которая как-то
там ресурсы пытается раздать. А если ось есть - то надо брать
такую, которая сама всё вопросы решает. - POV(06.02.2026 22:56)
- Нихера не понял. Что из перечисленного не нужно: ОС, прерывания или
ДМА. Мне нужно засандалить в переферию килобайт 10 раз в секунду.
Неблокирующий код, уже попробовал, медленно. Каждые 100мкс отрывать
прерываниями проц от работы, жаба душит. Остается ДМА. - IBAH(07.02.2026 14:55)
- Если у вас 10 тысяч байт со скоростью 100 килобит (весьма условной замечу) каждую секунду, то вы в ( ! ). Считали вообще? или вы думаете на 400 килобит I2C выехать? но тогда надо ДМА и проц который умеет в рабочее I2C, а не F1. - Ralex(09.02.2026 11:27)
- 1 килобайт каждые 100 мсек по I2C??? Ну и ну..... Что ж это за
процессы такие? - Лaгyнoв(08.02.2026 08:55)
- Индикатор 128x64 ssd1306 - IBAH(08.02.2026 16:26)
- что же за UI, которому надо 10 кадров в секунду? Для обычных надписей-цифр вполне 2Гц хватает и цифры при этом не мелькают, не раздражает. - Andreas(08.02.2026 17:30)
- Вон чего! Тогда да. И потому никогда не любил индикаторы на I2C. :-) - Лaгyнoв(08.02.2026 17:23)
- Индикатор 128x64 ssd1306 - IBAH(08.02.2026 16:26)
- i2c редко когда имеет дело с большими объёмами данных. К чему
неблокирующее поведение? - POV(07.02.2026 21:09)
- Как к чему?! 100кбит/с это где-то 100мкс на байт. А передача
килобайта это вообще 100мС!!! Даже на 100мкс процессор
останавливать не наш метод, процессор должен работать, ему за это
электричество дают. А неблокирующий программный I2C вот, хвастаюсь
тем что заработало с первого раза, IBAH(2729 знак., 07.02.2026 21:30)
- Ну, круто, чо! Я бы такое: (Sost==90 && Timer_us(&t1)) собрал бы одно значение из битов и засунул в switch(){}. Ещё, можно задефайнить состояния энумератором - чтобы всё было без "мэйджик нумберз" и легло в биты переключателя красиво, с минимумом лишних состояний. Nikolay_Po(175 знак., 08.02.2026 11:46)
- У всех свои задачи. Мне ни разу не потребовалась неблокирующая работа с мастер-и2ц - POV(07.02.2026 21:38)
- Как к чему?! 100кбит/с это где-то 100мкс на байт. А передача
килобайта это вообще 100мС!!! Даже на 100мкс процессор
останавливать не наш метод, процессор должен работать, ему за это
электричество дают. А неблокирующий программный I2C вот, хвастаюсь
тем что заработало с первого раза, IBAH(2729 знак., 07.02.2026 21:30)
- Нихера не понял. Что из перечисленного не нужно: ОС, прерывания или
ДМА. Мне нужно засандалить в переферию килобайт 10 раз в секунду.
Неблокирующий код, уже попробовал, медленно. Каждые 100мкс отрывать
прерываниями проц от работы, жаба душит. Остается ДМА. - IBAH(07.02.2026 14:55)
- Всё равно не могу въехать в магию со скоростью передачи и режимами
Фаст и Стандарт. Я так понимаю, Фаст и Стандарт отличаются только
наличием режима более узкого импульса SCL? А скорость передачи
можно выбрать любой в обоих режимах? - IBAH(20.02.2026 10:48)