|
-26 / 4 / 0
Регистрация: 26.09.2024
Сообщений: 128
|
||||||
Передача данных по i2c через DMA STM32F401CUE608.10.2025, 13:46. Показов 4599. Ответов 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
|
|||
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
|
|
| 12.10.2025, 16:31 | |
|
0
|
|
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,715
|
|||
| 12.10.2025, 18:09 | |||
|
Добавлено через 1 минуту Добавлено через 4 минуты Да конечно systick является самой независимой процедурой счёта на которую можно операться. Добавлено через 1 минуту Прошу прощения за мой Русский язык.
0
|
|||
|
343 / 135 / 10
Регистрация: 19.07.2024
Сообщений: 770
|
|
| 12.10.2025, 18:44 | |
|
0
|
|
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
|
|||
| 12.10.2025, 20:03 | |||
|
0
|
|||
|
343 / 135 / 10
Регистрация: 19.07.2024
Сообщений: 770
|
||
| 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
|
|
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
|
|||
| 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
|
|||||||
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
|
|||||
| 13.10.2025, 10:06 | |||||
|
Ну и хардкод каналов это в любом случае неудачная идея.
0
|
|||||
|
1509 / 526 / 76
Регистрация: 22.09.2023
Сообщений: 1,667
|
|
| 13.10.2025, 14:51 | |
|
0
|
|
|
343 / 135 / 10
Регистрация: 19.07.2024
Сообщений: 770
|
|||
| 13.10.2025, 15:07 | |||
0
|
|||
|
1509 / 526 / 76
Регистрация: 22.09.2023
Сообщений: 1,667
|
|||
| 13.10.2025, 15:20 | |||
![]() Добавлено через 4 минуты Почитал мельком, HS-режим требует поддержки со стороны железа, простым разгоном не получается:
Поискал на сайте Филипса - мой документ является последней опубликованной версией стандарта I2С. Режим Fast mode+ был добавлен в стандарт в середине 2007 г. А режим HS - какое-то нестандартное расширение
0
|
|||
|
343 / 135 / 10
Регистрация: 19.07.2024
Сообщений: 770
|
||||
| 13.10.2025, 15:25 | ||||
|
И причём тут какой-то "разгон"? Значение указано в официальном документе, значит поддерживается штатно, без "разгонов". ![]() Добавлено через 1 минуту
0
|
||||
|
1509 / 526 / 76
Регистрация: 22.09.2023
Сообщений: 1,667
|
|||
| 13.10.2025, 15:28 | |||
|
0
|
|||
|
343 / 135 / 10
Регистрация: 19.07.2024
Сообщений: 770
|
|||
| 13.10.2025, 15:35 | |||
![]() PS: Некий неандерталец является автором и правообладателем колеса. И как вы думаете он бы отнёсся к тем колёсам, на которых вы сейчас гоняете? Сказал бы что это неправильные колёса? И стукнул каменным топором по башке? ![]() Ведь его колесо было каменным и не ездило столь быстро как нонешние.
0
|
|||
|
1509 / 526 / 76
Регистрация: 22.09.2023
Сообщений: 1,667
|
||||
| 13.10.2025, 19:15 | ||||
|
Это не описание МК, это спецификация (=стандарт) на шину. Погуглить "UM10204" потрудитесь сами.
0
|
||||
|
1509 / 526 / 76
Регистрация: 22.09.2023
Сообщений: 1,667
|
||
| 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|