Top.Mail.Ru
Уведомления
Очистить все

[Решено] Отключается ножка MISO

Страница 1 / 2
(@rodion-2)
Level 3

Здравствуйте! Столкнулся с такой проблемой, при которой в одном проекте enc28j60 отвечает нормально (проект на микроконтроллере stm32f407), а в других уже отправляет какие-то непонятные сигналы, которые похожи на то, что линия miso просто отключается периодически. Пока не могу привести свою осциллограмму, но на другом форуме нашел точно такую же проблему, осциллограмму с которого и привожу. Самое непонятное то, что на плате disco stm32F407 все нормально, а на плате с stm32g030 и с stm32f051 какой-то ужас. Передачу по spi проверил осциллографом и анализатором, и они показывают все отлично, данные передаются и отправляются от одного spi к другому без проблем и искажений. Так же с питанием для enc тоже все нормально. Наверно, я делаю что-то неправильно уже в самих функциях для работы с enc28j60.

Снимок

 

 

Цитата
Создатель темы Размещено : 11.12.2022 14:10
Метки темы
Aveal
(@aveal)
Top level Admin

Там с землей точно все нормально?

ОтветитьЦитата
Размещено : 11.12.2022 14:20
(@rodion-2)
Level 3

@aveal По stm32f051 и stm32g030 уверенности нет, а вот у disco уверен, что все норм. Но у stm32f051 и stm32g030 сам spi работает, я проверял по байту данные, идущие одновременно по линии miso и mosi от одного spi к другому. Хотя, наверно, проблемы появляются при соединении земли модуля enc28 с землей платы stm32f051 или stm32g030

 

ОтветитьЦитата
Создатель темы Размещено : 11.12.2022 18:13
(@eduard)
Level 4 Moderator

@rodion-2 А I2C при этом инициализируется?

Я с этими МК тоже горя хапнул.

ОтветитьЦитата
Размещено : 11.12.2022 18:58
(@rodion-2)
Level 3

@eduard Завтра попробую и напишу 

ОтветитьЦитата
Создатель темы Размещено : 11.12.2022 20:56
Aveal
(@aveal)
Top level Admin
От: @eduard

@rodion-2 А I2C при этом инициализируется?

Я с этими МК тоже горя хапнул.

@eduard Перечитал все с самого начала несколько раз ) А причем тут I2C?

ОтветитьЦитата
Размещено : 12.12.2022 10:12
(@eduard)
Level 4 Moderator

@aveal На форуме в разделе всяких глюков я описывал проблему, что после инициализации I2C остальная периферия работает как то странно. Именно на этом МК.

Может у него тоже он инициализируется для чего нибудь. А потом всё пропадает.

ОтветитьЦитата
Размещено : 12.12.2022 20:19
Aveal
(@aveal)
Top level Admin

@eduard У тебя вроде F030 был?

ОтветитьЦитата
Размещено : 12.12.2022 20:29
(@eduard)
Level 4 Moderator

@aveal Да, каюсь. Глаз замылило.

От: @rodion-2

а на плате с stm32g030 и с stm32f051 какой-то ужас.

G030 имеет то же ядро. Только с приставкой +

Может глюки перешли и туда?
Если + то удвоенные? 🤣 

ОтветитьЦитата
Размещено : 12.12.2022 22:32
Aveal
(@aveal)
Top level Admin
От: @eduard

@aveal Да, каюсь. Глаз замылило.

От: @rodion-2

а на плате с stm32g030 и с stm32f051 какой-то ужас.

G030 имеет то же ядро. Только с приставкой +

Может глюки перешли и туда?
Если + то удвоенные? 🤣 

Не знаю, не знаю... но не исключено 😆 

 

ОтветитьЦитата
Размещено : 13.12.2022 11:11
(@rodion-2)
Level 3

Нашел решение проблемы. Дело было в том, что CS отключался до окончания приема байта, поэтому на линии MISO всегда были странные сигналы, похожие на то, что микроконтроллер просто отключает ножку. Я добавил перед каждым переключением CS отправку пустого байта, и enc стал возвращать правильные данные при обращении к управляющим регистрам. 

Но непонятно, почему при обращении к регистру EREVID enc возвращает 0. Не знаю должно ли это быть так, но при записи данных в какой-то из управляющих регистров он возвращает все правильно.

ОтветитьЦитата
Создатель темы Размещено : 16.12.2022 23:01
(@eduard)
Level 4 Moderator

@rodion-2 

А CS кто управляет?

Собственный код или чужая библиотека?

Может просто переключать CS после полного обмена информацией. Когда уже обмен полностью закончен.

А передавать лишний байт не выход.

Может будет достаточно мониторить флаг BSY и только тогда принимать решение о переключении CS.

ОтветитьЦитата
Размещено : 17.12.2022 11:07
(@rodion-2)
Level 3

@eduard Попробовал только с просмотром флагов, но только с флагам ничего не работает, а вот с отправкой пустого байта работает. 

CS я переключаю в собственном коде 

 

ОтветитьЦитата
Создатель темы Размещено : 17.12.2022 14:20
(@eduard)
Level 4 Moderator

Давайте код.
Что то здесь не так.

ОтветитьЦитата
Размещено : 17.12.2022 20:50
(@rodion-2)
Level 3

@eduard Вот проект для stm32g030

 

ОтветитьЦитата
Создатель темы Размещено : 17.12.2022 23:07
Страница 1 / 2
Поделиться: