реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Попытка реализации PTP протокола на STM32F417, Проблема с флагом TSTS
proga
сообщение Feb 20 2013, 14:57
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 17-01-06
Из: иркутск
Пользователь №: 13 278



Я сейчас разрабатываю программу на базе платы TE-STM32F417MCU. В ней я пытаюсь, в том числе, реализовать поддержку PTP протокола. Однако я столкнулся со следующей проблемой.Системный таймер, ответственный за PTP, генерирует прерывание, если его текущее время превышает значение, записанное в регистрах target time. При этом устанавливается флаг TSTS в регистре ETH_MACSR. Данный флаг очищается как только производится чтение из регистра ETH_MACSR, так гласит Reference manual. Однако в режиме отладки я наблюдал , что после прочтения регистра никакого снятия флага TSTS не происходит и программа застревает в обработчике. Вследствие этого пришлось ввести в обработчик цикл, который снова и снова считывает содержимое регистра ETH_MACSR
до тех пор пока флаг TSTS не очищается. Однако этого я смог добиться только в режиме отладки. Когда же я прошиваю контроллер и запуская его на исполнение без программатора, то программа застревает в этом цикле навечно, т.е флаг TSTS так и не сбрасывается. Буду благодарен любым соображениям по этому поводу . Спасибо
Go to the top of the page
 
+Quote Post
Sekat
сообщение Aug 15 2013, 12:31
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 13-02-12
Пользователь №: 70 242



Нарвался на ту же проблему с STM32F407 на Discovery. При чем, если читать состояние этого флага в регистре ETH->MACSR с помощью ST-LINK в окне дебаггера , то этот флажок успешно сбрасывается! А изнутри - никак!
Может есть прогресс в этом вопросе с февраля?

Сообщение отредактировал Sekat - Aug 15 2013, 12:33
Go to the top of the page
 
+Quote Post
proga
сообщение Aug 18 2013, 15:37
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 17-01-06
Из: иркутск
Пользователь №: 13 278



К сожалению, нет. В итоге, я использовал трансивер физического уровня dp83640 с поддержкой протокола IEE 1588 и на его основе успешно реализовал поддержку протокола PTP в своём проекте. Я задавал вопрос в комьюнити STM по данной проблеме и, судя потому, как они резко прекратили обсуждения, после того, как я послал им проект, в котором можно наблюдать проявление данной проблемы, я сделал вывод, что это аппаратный баг, который делает невозможным реализацию протокола PTP только средствами контроллера STMF417. Хотя возможно я и ошибаюсь.
Go to the top of the page
 
+Quote Post
Sekat
сообщение Aug 19 2013, 08:16
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 13-02-12
Пользователь №: 70 242



Цитата(proga @ Aug 18 2013, 19:37) *
К сожалению, нет. В итоге, я использовал трансивер физического уровня dp83640 с поддержкой протокола IEE 1588 и на его основе успешно реализовал поддержку протокола PTP в своём проекте. Я задавал вопрос в комьюнити STM по данной проблеме и, судя потому, как они резко прекратили обсуждения, после того, как я послал им проект, в котором можно наблюдать проявление данной проблемы, я сделал вывод, что это аппаратный баг, который делает невозможным реализацию протокола PTP только средствами контроллера STMF417. Хотя возможно я и ошибаюсь.


Спасибо за ответ.
Да. Видел я этот тред в коммьюнити, даже там тоже написал. Относительно официальной поддержки - действительно, по опыту предыдущих общений с СТ -очень тяжело чего-либо добиться. Реализация в трансивере - выход из положения, однако для моего проекта это существенно менее удобно.

Не уверен что все так совсем плохо для реализации только средствами STM.
1. PTP можно реализовать и без этого прерывания средствами только контроллера, практически без ущерба для точности.
2. У меня меня есть несколько иные планы на это прерывание от таймера (не для целей PTP), которые так же надеюсь реализовать иными методами, однако без привлечения дополнительно аппаратного обеспечения.

Конечно же нормальная работа этого прерывания облегчила бы жизнь, однако официально писать им в поддержку по этому поводу не стану - жалко времени.
Go to the top of the page
 
+Quote Post
HasuMan
сообщение Dec 26 2013, 06:43
Сообщение #5





Группа: Участник
Сообщений: 11
Регистрация: 9-02-09
Пользователь №: 44 597



Добрый день. Столкнулся с той же самой проблемой на stm32f417.
Ваша тема на форуме st?
Подскажите, как решили данную проблему. Если возможно, выложите исходный код.
Go to the top of the page
 
+Quote Post
Sekat
сообщение Jan 2 2014, 14:18
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 13-02-12
Пользователь №: 70 242



Цитата(HasuMan @ Dec 26 2013, 10:43) *
Добрый день. Столкнулся с той же самой проблемой на stm32f417.
Ваша тема на форуме st?
Подскажите, как решили данную проблему. Если возможно, выложите исходный код.

Да. Проблема преодолена.
С Новым Годом! Держите Новогодний подарок:
Код
       if (ETH->MACSR & ETH_MACSR_TSTS){
// Есть прерывание от "будильника PTP"
       ETH->PTPTTHR=ETH->PTPTSHR+MyConst;// Переустановить будильник
       if(ETH->PTPTSSR&ETH_PTP_FLAG_TSTTR){// Эта команда очищает не только флаг ETH_PTP_FLAG_TSTTR, но и ETH_MACSR_TSTS.
           ETH->PTPTSCR|=ETH_PTPTSCR_TSITE;
// Ваш код
//
}}

Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 04:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016