0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 31
|
|
1 | |
Не генерируется стартовый бит I2C STM32F100RBT6B (STM32 Discovery)29.03.2024, 13:18. Показов 528. Ответов 11
Метки нет (Все метки)
Здравствуйте!
Пытался прошить EDID (EEPROM память 24АА16), используя I2C на отладочной плате STM32 Discovery (MB913C). Изначально всё работало, но через некоторое время плата перестала отсылать стартовый бит. Зависает на моменте "while(~I2C1->SR1&(1<<0)){};", т.е. проверки генерации стартового бита. В коде в функции инициализации первая половина - из ERRATA по чипу STM32F100RBT6. Вообще, плата странно себя ведёт. Работаю в кейле, делаю Build, потом Load (F7, потом F8), всё работало, но теперь перестало) Были моменты, когда в режиме отладки, проходя код по шагам, я проходил момент зависающей проверки и прошивал память, но теперь и этого не происходит. Вообще не уверен, что проблема с кодом, но пока думаю только в этом направлении. Сейчас даже в режиме отладки не могу пройти зависающую проверку. Пробовал на нескольких отладочных платах - результат аналогичный. Кто-то сталкивался с таким? Как лечили? Может быть всё-таки какая-то критическая ошибка в коде, которую я в упор не вижу?
0
|
29.03.2024, 13:18 | |
Ответы с готовыми решениями:
11
I2C на stm32-discovery непонятная проблема Не генерируется стартовый бит I2C STM32F100RBT6B (STM32 Discovery) STM32F100RB (discovery) и I2C STMF051R8 Discovery, STM32F0Snippet и I2C Проблемы с I2C - STM8S Discovery |
3219 / 2362 / 540
Регистрация: 11.09.2009
Сообщений: 8,605
|
|
29.03.2024, 14:35 | 2 |
Уточните. То есть любая другая плата тоже сначала работает, а через некоторое время перестаёт, или любая новая плата теперь сразу не работает? При таком разном "поведении" плат будут явно разные причины.
0
|
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 31
|
||||||
29.03.2024, 14:44 [ТС] | 3 | |||||
Все платы теперь не работают. Думаю, может какая-то настройка в кейле слетела или была мной неосознанно изменена.
Добавлено через 2 минуты Странно, тем создал две, в этой нет кода. Подскажите, кстати, куда писать, чтобы удалили повторяющуюся?)
0
|
3219 / 2362 / 540
Регистрация: 11.09.2009
Сообщений: 8,605
|
|
29.03.2024, 17:40 | 4 |
Слева от сообщения, под вашим ником есть треугольник с восклицательным знаком. Нажимаете на него и пишете модератору что надо. В той теме, которую удалить просите.
Наиболее вероятно. Или в коде что "поправили". Вы предыдущие версии сохраняете?
0
|
524 / 218 / 28
Регистрация: 22.09.2023
Сообщений: 580
|
|
29.03.2024, 23:35 | 5 |
В GPIO_INIT() как вам удается писать в GPIOB до того, как вы включили его тактирование?
Запись не проходит, нога остается в режиме входа, старт наружу выйти не может. Ага, "А оно само!"
0
|
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 31
|
|
01.04.2024, 14:01 [ТС] | 6 |
Да, но они не отличаются функционалом. Максимум - порядок изменён или какие-то настройки закомменчены.
Если не видите - подскажу. Эта функция не используется.
0
|
3219 / 2362 / 540
Регистрация: 11.09.2009
Сообщений: 8,605
|
|
02.04.2024, 05:11 | 7 |
Я не про то. Попробуйте найти какую-нибудь самую старую версию, в которой точно работало, проверьте с ней. Если заработает - останется только найти разницу.
1
|
Нарушитель
|
|
02.04.2024, 08:02 | 8 |
Из-за обилия "волшебных чисел" ваш код совершенно нечитаем. Приводите в порядок, чтобы можно было сравнить с работающим.
А еще лучше - открывайте даташит и строго по порядку. У вас даже инициализация неправильная...
0
|
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 31
|
|
02.04.2024, 09:44 [ТС] | 9 |
0
|
Нарушитель
|
||||||
02.04.2024, 11:31 | 10 | |||||
Вот, скажем это:
полная чушь и вообще не по даташиту! Исправьте, чтобы не было magick numbers, тогда и вам понятно будет, и нам. Как пример. Вот так просто I2C включается:
Добавлено через 2 минуты Но да, в сотой серии I2C - просто ад какой-то. Немногие выдерживают: большинство софтовым ногодрыгом эмулирует.
1
|
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 31
|
|
02.04.2024, 12:01 [ТС] | 11 |
Это из эрраты, буквально парой строк выше написано же.
А за дальнейшее спасибо! Приму к сведению. Пока, видимо, оставлю попытки разобраться с проблемой, потому что нашел старый, полностью рабочий в прошлом проект,- он тоже не работает) Пока всё свалю на Всем спасибо за попытку!
0
|
Нарушитель
|
|
02.04.2024, 13:34 | 12 |
А, возможно: сотая серия еще старше 103 - там и не такое можно встретить, наверное. Я-то ориентировался по документации на 103, с 100 никогда не работал (и не собираюсь, мне геморроя со 103 хватает за глаза).
Самые удачные из слабых серий - F072 (там даже работает софтовый переход в DFU, в отличие от 042). Из помощней мне нравятся F303. Еще валяются дома и другие, но в тех же G070 практически ничего нового по сравнению с F030 (кроме, разве что, более удачного DMA, где, заняв один канал, не лишаешься доступа к куче периферии, т.к. она на нем же сидит); а в G431 USB OTG - учитывая то, что на обычный USB у меня полгода ушло, с OTG тоже могу долго провозиться, так что и не берусь пока.
0
|
02.04.2024, 13:34 | |
02.04.2024, 13:34 | |
Помогаю со студенческими работами здесь
12
STM32F4 Discovery I2C нет ACK STM32F4 discovery не срабатывают прерывания по I2C Stm32 discovery 10 бит по I2C Выбор STM32-DISCOVERY Утонул с Stm32 f4 discovery Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |