Связанные сообщения
- Обо всем по порядку.2018-04-17
eddy-em.livejournal.com github.com/eddyem
-
- В общем, все более-менее получилось. Как причешу, сделаю пуш коммита. Eddy_Em(731 знак., 19.09.2025 19:41)
- Странная штука происходит при чтении посредством DMA: читается
"левый" первый байт (в итоге потом остается один в "зависоне").
Пока решил этот косяк костылем: Eddy_Em(862 знак., 19.09.2025 15:08)
- А ты когда ДМА попользовал не забываешь DMA_CCR_EN сбрасывать? У
10х серии можно не сбрасывать, а при переходе на 20х, 40х у меня
были проблемы с ДМА, которые решились сбросом il-2(105 знак., 20.09.2025 16:54)
- Конечно, еще в прерывании по окончании приема обнуляю. Eddy_Em(120 знак., 20.09.2025 19:34)
- А ты когда ДМА попользовал не забываешь DMA_CCR_EN сбрасывать? У
10х серии можно не сбрасывать, а при переходе на 20х, 40х у меня
были проблемы с ДМА, которые решились сбросом il-2(105 знак., 20.09.2025 16:54)
- О, на 500кГц получилось. Только фронты, конечно - та еще жесть! Во: Eddy_Em(436 знак., 13.09.2025 23:28, картинка)
- Какой же я дебил!.. Охренеть! Eddy_Em(535 знак., 13.09.2025 23:13)
- Убрал из следующего за записью адреса чтения I2C_CR2_AUTOEND, "внезапно" все стало хорошо. Похоже, я не выдерживаю паузу перед началом, поэтому этот STOP успевает попасть в регистр во время окончания передачи со всеми вытекающими. Экспериментирую дальше. - Eddy_Em(13.09.2025 22:49)
- То, что на фото дугой выделено по-моему STOP, а следом
START-условие. А похожий импульс перед ACK я наблюдал неоднократно,
когда ACK формирует немного "тормозной" SLAVE. В принципе в этом
импульсе нет ничего криминального, т.к. перепад на SDA происходит
во время низкого уровня на SCL. - reZident(13.09.2025 20:40)
- Блин, действительно на кусок STOP смахивает! А не должно быть: я
I2C_CR2_AUTOEND не устанавливаю. Eddy_Em(65 знак., 13.09.2025 20:41)
- Вот же ядрен батон! Выставляю STOP после записи адреса регистра -
получаю абсолютно ту же картинку! Т.е. выходит, что когда мне STOP
был не нужен и я не писал AUTOEND, STOP все равно вылезал! Eddy_Em(365 знак., 13.09.2025 22:18)
- Ну, я просто ни хрена не понимаю! Eddy_Em(852 знак., 13.09.2025 22:36)
- А что там с битом RELOAD? reZident(1 знак., 13.09.2025 22:48, картинка)
- Да не. Это я виноват был. См. новый мой ответ на этот пост. Eddy_Em(518 знак., 13.09.2025 23:18)
- Что-то ты каким-то "судорогом" занимаешься. Новая реализация I2C
практически сама всё делает. VladislavS.(281 знак., 14.09.2025 06:33, картинка)
- Как оно у тебя работает? Попробовал так же - нет, выдает "busy". Eddy_Em(503 знак., 16.09.2025 22:47)
- Ну примерно как "не работает", только наоборот. VladislavS.(1 знак., 17.09.2025 17:24, картинка)
- Так START можно сразу писать? Мне показалось в документации, что нельзя. Но раз так, меньше тактов тратить. Eddy_Em(97 знак., 14.09.2025 10:41)
- Как оно у тебя работает? Попробовал так же - нет, выдает "busy". Eddy_Em(503 знак., 16.09.2025 22:47)
- Что-то ты каким-то "судорогом" занимаешься. Новая реализация I2C
практически сама всё делает. VladislavS.(281 знак., 14.09.2025 06:33, картинка)
- Да не. Это я виноват был. См. новый мой ответ на этот пост. Eddy_Em(518 знак., 13.09.2025 23:18)
- А что там с битом RELOAD? reZident(1 знак., 13.09.2025 22:48, картинка)
- Ну, я просто ни хрена не понимаю! Eddy_Em(852 знак., 13.09.2025 22:36)
- Вот же ядрен батон! Выставляю STOP после записи адреса регистра -
получаю абсолютно ту же картинку! Т.е. выходит, что когда мне STOP
был не нужен и я не писал AUTOEND, STOP все равно вылезал! Eddy_Em(365 знак., 13.09.2025 22:18)
- Блин, действительно на кусок STOP смахивает! А не должно быть: я
I2C_CR2_AUTOEND не устанавливаю. Eddy_Em(65 знак., 13.09.2025 20:41)
- Всплеск перед ACK - это легко. Мастер отпускает линию, а слейв тянет её вниз чуть позже. Бывают там задержки у разных слейвов разные, но спецификация I2C накладывает какие-то ограничения на это. - SciFi(13.09.2025 20:34)