|
-26 / 4 / 0
Регистрация: 26.09.2024
Сообщений: 128
|
||||||
Передача данных по i2c через DMA STM32F401CUE608.10.2025, 13:46. Показов 4105. Ответов 95
Метки нет (Все метки)
Добрый день. При попытки передать данные на устройство по i2c через DMA нифига не выходит, DMA не в какую не хочет работать.
Адрес устройства определяется как надо, условие Старт и отправка адреса тоже происходит нормально но DMA не стартует и нет прерывания от DMA. В отладке видно что бит DMA1_Stream6->CR |= DMA_SxCR_EN; устанавливается.
Нашёл ошибку DMA1_Stream6->CR |= DMA_CHANNEL_6; исправил на DMA1_Stream6->CR |= DMA_CHANNEL_1; как в таблице всё равно не хочет заводиться.
0
|
||||||
| 08.10.2025, 13:46 | |
|
Ответы с готовыми решениями:
95
ADC->DMA->SDIO (или NAND через FSMC) без остановки в обработчике прерываний DMA на STM32F407VG, реально или нет? USART2(RX+IDLE+DMA)+USART3(TX DMA) STM32F4Discovery - ADC DMA и FSMC DMA |
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,715
|
|||
| 12.10.2025, 16:03 | |||
|
0
|
|||
|
4144 / 2722 / 433
Регистрация: 09.09.2017
Сообщений: 12,056
|
|
| 12.10.2025, 16:31 | |
|
0
|
|
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,715
|
|||
| 12.10.2025, 18:09 | |||
|
Добавлено через 1 минуту Добавлено через 4 минуты Да конечно systick является самой независимой процедурой счёта на которую можно операться. Добавлено через 1 минуту Прошу прощения за мой Русский язык.
0
|
|||
|
333 / 127 / 8
Регистрация: 19.07.2024
Сообщений: 675
|
|
| 12.10.2025, 18:44 | |
|
0
|
|
|
4144 / 2722 / 433
Регистрация: 09.09.2017
Сообщений: 12,056
|
|||
| 12.10.2025, 20:03 | |||
|
0
|
|||
|
333 / 127 / 8
Регистрация: 19.07.2024
Сообщений: 675
|
||
| 12.10.2025, 20:24 | ||
|
Если что: В теме идёт речь о случае когда микроконтроллер является мастером по I2C. Если вам это о чём-то говорит. Таймер не нужен для работы I2C в режиме мастера. Никакой - ни по прерываниям ни поллингом.
0
|
||
|
Windows must die
|
|
| 12.10.2025, 20:58 | |
|
Таймер нужен - проверить таймаут. И SysTick в этом отлично помогает: запоминаешь время перехода в новое состояние, да во время поллинга проверяешь. Если слишком натикало, значит, таймаут - какая-то фигня случилась (скажем, датчик слишком "задумался": выдает busy, но при этом ничего не происходит - надо сбросить). Но отдельный для этого таймер заводить, ясное дело, не нужно.
Кстати, мне такие дикие датчики попадались, которые запросто завешивали SCL или SDA и всю шину клали нафиг. И на стандартную посылку шестерки на нулевой адрес не реагировали по этой самой причине - шину-то использовать невозможно! Помогало только отключение/включение питания. Вот для подобных "засранцев" я и ставлю иной раз дополнительный p-канальный мосфет, чтобы им питание при необходимости отключить можно было. Ну, а при работе DMA вообще просто: в прерывании по окончании передачи или приема выставляем флаг - вуаля, наш КА понимает, что все прошло успешно, и можно в следующее состояние переходить. Плохо только, что для того, чтобы пнуть DMA, все равно сначала руками нужно послать адрес. А если передаешь/принимаешь больше 255 байт, то еще и эдакий КА внутрь прерывания DMA нужно засунуть, чтобы выставлять CONT или STOP и подпихивать очередной кусок буфера. // я, кстати, очень надеялся, что DMA инкрементирует адрес, поэтому новый кусок считать не нужно будет. Ан нет, похоже, рабочий указатель на текущую порцию данных у него где-то внутри спрятан.
0
|
|
|
4144 / 2722 / 433
Регистрация: 09.09.2017
Сообщений: 12,056
|
|||
| 12.10.2025, 22:58 | |||
|
Если же пытаться, скажем, передавать через него картинки, то да, DMA прикрутить стоит.
0
|
|||
|
Windows must die
|
|||||||
| 13.10.2025, 01:05 | |||||||
Аналогично с USB: уж замутили, так замутили. До такой степени запутанно, что не придумали, как при помощи DMA осуществить на USB прием/передачу. И приходится все это в прерываниях дергать… А вот с экранчиками я по I2C не работал, поэтому надобности отсылать большие объемы данных не возникало (вот и не на чем проверить, у меня и экранчиков-то с I2C нет: все или SPI, или на параллельной шине). SPI, кстати, и пошустрей: ведь нет нужды в подтягивающих резисторах, поэтому и скорость не ограничена парой Мбод. I2C у меня на коротких проводочках максимум на 2Мбод (точней - около 1.9) работал на STM32F303. Пытался еще шустрей (около 4Мбод), с подтяжками на 470 Ом, но все равно сигнал получается страшный. И связь сильно ненадежная. С настройкой скоростей мне помог осциллограф: даже в документации написано, что тайминги на фронты не очень-то стабильные от железки к железке, поэтому нужно экспериментировать. А благодаря gdb это можно сделать, не мучая МК частыми перепрошивками: тормознул, поменял настройки I2C, и дальше проверяй себе, какие будут профили и скорости. У разных серий STM32 достаточно сильно различается подход к I2C. Самая жесть - у STM32F103. Надо бы поковыряться с G и H сериями: пощупать, как оно там.
0
|
|||||||
|
4144 / 2722 / 433
Регистрация: 09.09.2017
Сообщений: 12,056
|
|||||
| 13.10.2025, 10:06 | |||||
|
Ну и хардкод каналов это в любом случае неудачная идея.
0
|
|||||
|
1505 / 522 / 75
Регистрация: 22.09.2023
Сообщений: 1,651
|
|
| 13.10.2025, 14:51 | |
|
0
|
|
|
333 / 127 / 8
Регистрация: 19.07.2024
Сообщений: 675
|
|||
| 13.10.2025, 15:07 | |||
0
|
|||
|
1505 / 522 / 75
Регистрация: 22.09.2023
Сообщений: 1,651
|
|||
| 13.10.2025, 15:20 | |||
![]() Добавлено через 4 минуты Почитал мельком, HS-режим требует поддержки со стороны железа, простым разгоном не получается:
Поискал на сайте Филипса - мой документ является последней опубликованной версией стандарта I2С. Режим Fast mode+ был добавлен в стандарт в середине 2007 г. А режим HS - какое-то нестандартное расширение
0
|
|||
|
333 / 127 / 8
Регистрация: 19.07.2024
Сообщений: 675
|
||||
| 13.10.2025, 15:25 | ||||
|
И причём тут какой-то "разгон"? Значение указано в официальном документе, значит поддерживается штатно, без "разгонов". ![]() Добавлено через 1 минуту
0
|
||||
|
1505 / 522 / 75
Регистрация: 22.09.2023
Сообщений: 1,651
|
|||
| 13.10.2025, 15:28 | |||
|
0
|
|||
|
333 / 127 / 8
Регистрация: 19.07.2024
Сообщений: 675
|
|||
| 13.10.2025, 15:35 | |||
![]() PS: Некий неандерталец является автором и правообладателем колеса. И как вы думаете он бы отнёсся к тем колёсам, на которых вы сейчас гоняете? Сказал бы что это неправильные колёса? И стукнул каменным топором по башке? ![]() Ведь его колесо было каменным и не ездило столь быстро как нонешние.
0
|
|||
|
1505 / 522 / 75
Регистрация: 22.09.2023
Сообщений: 1,651
|
||||
| 13.10.2025, 19:15 | ||||
|
Это не описание МК, это спецификация (=стандарт) на шину. Погуглить "UM10204" потрудитесь сами.
0
|
||||
|
1505 / 522 / 75
Регистрация: 22.09.2023
Сообщений: 1,651
|
||
| 13.10.2025, 19:31 | ||
|
0
|
||
|
|
|
| 13.10.2025, 19:40 | |
|
Дополню: I2C (TWI) действительно был придуман Филлипсом, запатентован и все такое. Его использование предполагало плату, но все на это дружно забили и юзают кто как хотят. Причем, не редко со своими "доработками"..
Отсылаться к стандарту напрямую вряд ли стоит. Что конкретно и как реализовано в СТМ - вопрос..
0
|
|
|
Windows must die
|
||
| 13.10.2025, 19:47 | ||
|
0
|
||
| 13.10.2025, 19:47 | |
|
stm32f407+ADC+DMA. Проблема с DMA STM32F4 I2C DMA CMSIS stm32 SPI+DMA или I2C внешнее АЦП передача данных USART + DMA и непонятные иероглифы stm32f4 SPI приём и передача данных по DMA Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|