|
-26 / 4 / 0
Регистрация: 26.09.2024
Сообщений: 128
|
||||||
Передача данных по i2c через DMA STM32F401CUE608.10.2025, 13:46. Показов 4762. Ответов 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,717
|
|||
| 12.10.2025, 16:03 | |||
|
0
|
|||
|
4149 / 2727 / 433
Регистрация: 09.09.2017
Сообщений: 12,084
|
|
| 12.10.2025, 16:31 | |
|
0
|
|
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,717
|
|||
| 12.10.2025, 18:09 | |||
|
Добавлено через 1 минуту Добавлено через 4 минуты Да конечно systick является самой независимой процедурой счёта на которую можно операться. Добавлено через 1 минуту Прошу прощения за мой Русский язык.
0
|
|||
|
349 / 147 / 10
Регистрация: 19.07.2024
Сообщений: 822
|
|
| 12.10.2025, 18:44 | |
|
0
|
|
|
4149 / 2727 / 433
Регистрация: 09.09.2017
Сообщений: 12,084
|
|||
| 12.10.2025, 20:03 | |||
|
0
|
|||
|
349 / 147 / 10
Регистрация: 19.07.2024
Сообщений: 822
|
||
| 12.10.2025, 20:24 | ||
|
Если что: В теме идёт речь о случае когда микроконтроллер является мастером по I2C. Если вам это о чём-то говорит. Таймер не нужен для работы I2C в режиме мастера. Никакой - ни по прерываниям ни поллингом.
0
|
||
|
Нарушитель
|
|
| 12.10.2025, 20:58 | |
|
Таймер нужен - проверить таймаут. И SysTick в этом отлично помогает: запоминаешь время перехода в новое состояние, да во время поллинга проверяешь. Если слишком натикало, значит, таймаут - какая-то фигня случилась (скажем, датчик слишком "задумался": выдает busy, но при этом ничего не происходит - надо сбросить). Но отдельный для этого таймер заводить, ясное дело, не нужно.
Кстати, мне такие дикие датчики попадались, которые запросто завешивали SCL или SDA и всю шину клали нафиг. И на стандартную посылку шестерки на нулевой адрес не реагировали по этой самой причине - шину-то использовать невозможно! Помогало только отключение/включение питания. Вот для подобных "засранцев" я и ставлю иной раз дополнительный p-канальный мосфет, чтобы им питание при необходимости отключить можно было. Ну, а при работе DMA вообще просто: в прерывании по окончании передачи или приема выставляем флаг - вуаля, наш КА понимает, что все прошло успешно, и можно в следующее состояние переходить. Плохо только, что для того, чтобы пнуть DMA, все равно сначала руками нужно послать адрес. А если передаешь/принимаешь больше 255 байт, то еще и эдакий КА внутрь прерывания DMA нужно засунуть, чтобы выставлять CONT или STOP и подпихивать очередной кусок буфера. // я, кстати, очень надеялся, что DMA инкрементирует адрес, поэтому новый кусок считать не нужно будет. Ан нет, похоже, рабочий указатель на текущую порцию данных у него где-то внутри спрятан.
0
|
|
|
4149 / 2727 / 433
Регистрация: 09.09.2017
Сообщений: 12,084
|
|||
| 12.10.2025, 22:58 | |||
|
Если же пытаться, скажем, передавать через него картинки, то да, DMA прикрутить стоит.
0
|
|||
|
Нарушитель
|
|||||||
| 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
|
|||||||
|
4149 / 2727 / 433
Регистрация: 09.09.2017
Сообщений: 12,084
|
|||||
| 13.10.2025, 10:06 | |||||
|
Ну и хардкод каналов это в любом случае неудачная идея.
0
|
|||||
|
1516 / 532 / 77
Регистрация: 22.09.2023
Сообщений: 1,694
|
|
| 13.10.2025, 14:51 | |
|
0
|
|
|
349 / 147 / 10
Регистрация: 19.07.2024
Сообщений: 822
|
|||
| 13.10.2025, 15:07 | |||
0
|
|||
|
1516 / 532 / 77
Регистрация: 22.09.2023
Сообщений: 1,694
|
|||
| 13.10.2025, 15:20 | |||
![]() Добавлено через 4 минуты Почитал мельком, HS-режим требует поддержки со стороны железа, простым разгоном не получается:
Поискал на сайте Филипса - мой документ является последней опубликованной версией стандарта I2С. Режим Fast mode+ был добавлен в стандарт в середине 2007 г. А режим HS - какое-то нестандартное расширение
0
|
|||
|
349 / 147 / 10
Регистрация: 19.07.2024
Сообщений: 822
|
||||
| 13.10.2025, 15:25 | ||||
|
И причём тут какой-то "разгон"? Значение указано в официальном документе, значит поддерживается штатно, без "разгонов". ![]() Добавлено через 1 минуту
0
|
||||
|
1516 / 532 / 77
Регистрация: 22.09.2023
Сообщений: 1,694
|
|||
| 13.10.2025, 15:28 | |||
|
0
|
|||
|
349 / 147 / 10
Регистрация: 19.07.2024
Сообщений: 822
|
|||
| 13.10.2025, 15:35 | |||
![]() PS: Некий неандерталец является автором и правообладателем колеса. И как вы думаете он бы отнёсся к тем колёсам, на которых вы сейчас гоняете? Сказал бы что это неправильные колёса? И стукнул каменным топором по башке? ![]() Ведь его колесо было каменным и не ездило столь быстро как нонешние.
0
|
|||
|
1516 / 532 / 77
Регистрация: 22.09.2023
Сообщений: 1,694
|
||||
| 13.10.2025, 19:15 | ||||
|
Это не описание МК, это спецификация (=стандарт) на шину. Погуглить "UM10204" потрудитесь сами.
0
|
||||
|
1516 / 532 / 77
Регистрация: 22.09.2023
Сообщений: 1,694
|
||
| 13.10.2025, 19:31 | ||
|
0
|
||
|
|
|
| 13.10.2025, 19:40 | |
|
Дополню: I2C (TWI) действительно был придуман Филлипсом, запатентован и все такое. Его использование предполагало плату, но все на это дружно забили и юзают кто как хотят. Причем, не редко со своими "доработками"..
Отсылаться к стандарту напрямую вряд ли стоит. Что конкретно и как реализовано в СТМ - вопрос..
0
|
|
|
Нарушитель
|
||
| 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 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|