- Главная
- Форум
- Микроконтроллеры и Системы на Модуле (SOM)
- Микроконтроллеры
- Осваиваем Ethernet в STM32
Осваиваем Ethernet в STM32
- ThE_BuZz
- Посетитель
12 года 3 мес. назад - 12 года 3 мес. назад #3270
от ThE_BuZz
простые, без надстроек типа IP адресации …. Т.е. пригодные для работы внутри локальной сети. (на базе которых, кстати, написана статья) ?
ThE_BuZz ответил в теме Re: Осваиваем Ethernet в STM32
Можно ли увидеть полный вариант лабораторных работ по данной тематике,Теперь к делу - не поленился, !!!набрал!!! код из статьи - бесполезно!
Они простые без надстроек типа IP адресации …
Очень хотелось бы увидеть полный вариант.
простые, без надстроек типа IP адресации …. Т.е. пригодные для работы внутри локальной сети. (на базе которых, кстати, написана статья) ?
Последнее редактирование: 12 года 3 мес. назад пользователем .
- Денис Ягов
- Посетитель
12 года 3 мес. назад #3287
от Денис Ягов
Денис Ягов ответил в теме Re: Осваиваем Ethernet в STM32
В силу "давности дела" публекуем решённые лабораторки.
Требуется подключение 2-х компонент: Светодиод (с последовательным резистором) и Подстроечный резистор. Порты подключения - догадаетесь по коду программы. Во всех лабораторках подключение внешних компонент - одинаковое.
Первые 2 лабораторки (проба пера, без Ethernet) выполняются на одной плате SK-MSTM32F107
www.promelec.ru/catalog/1812/0/0/0/137181/
3-я потребует двух таких плат (соединить через ethernet).
4-я - 2 платы или больше соединённые через HUB (будет применена фильтрация по MAC адресам)
Смысл лабораторок:
1. Управляем портом
2. АЦП + управление портом - крутим ручку потенциометра = меняем яркость светодиода
3. АЦП + управление портом + приём/отправка данных по Ethernet... Крутим ручку потенциометра = меняем яркость светодиода на соседней плате, соединённой по Eth.
4. Крутим ручку потенциометра = меняем яркость на нескольнких (избранных) платах.
PS. Данные лабораторки были испытаны на 20- ти добровольцах, почти у всех заработало.
Если не работает - внимательно сравните описание микросхем Eth PHY вашей и той, что на отладочной плате. Желаю успехов
Требуется подключение 2-х компонент: Светодиод (с последовательным резистором) и Подстроечный резистор. Порты подключения - догадаетесь по коду программы. Во всех лабораторках подключение внешних компонент - одинаковое.
Первые 2 лабораторки (проба пера, без Ethernet) выполняются на одной плате SK-MSTM32F107
www.promelec.ru/catalog/1812/0/0/0/137181/
3-я потребует двух таких плат (соединить через ethernet).
4-я - 2 платы или больше соединённые через HUB (будет применена фильтрация по MAC адресам)
Смысл лабораторок:
1. Управляем портом
2. АЦП + управление портом - крутим ручку потенциометра = меняем яркость светодиода
3. АЦП + управление портом + приём/отправка данных по Ethernet... Крутим ручку потенциометра = меняем яркость светодиода на соседней плате, соединённой по Eth.
4. Крутим ручку потенциометра = меняем яркость на нескольнких (избранных) платах.
PS. Данные лабораторки были испытаны на 20- ти добровольцах, почти у всех заработало.
Если не работает - внимательно сравните описание микросхем Eth PHY вашей и той, что на отладочной плате. Желаю успехов
- C1oudStrife
- Посетитель
12 года 2 мес. назад #3301
от C1oudStrife
C1oudStrife ответил в теме Re: Осваиваем Ethernet в STM32
Прочитал статью и просмотрел лабораторки, очень хорошо и доходчиво написано, даже законспектировал себе.
Пытаюсь проинициализировать Ethernet, намертво встает наи двигаться дальше никак не хочет.
В чем может быть проблема и куда копать?
Использую другую микросхему PHY(KSZ8031), там подключение пинов прямое и ремап не нужен(естественно отключаю его в программе).
Заранее спасибо за ответ
Пытаюсь проинициализировать Ethernet, намертво встает на
while(ETH_GetSoftwareResetStatus()==SET);
В чем может быть проблема и куда копать?
Использую другую микросхему PHY(KSZ8031), там подключение пинов прямое и ремап не нужен(естественно отключаю его в программе).
Заранее спасибо за ответ
- Денис Ягов
- Посетитель
12 года 2 мес. назад #3302
от Денис Ягов
Подключено ли тактирование этой периферии?
до изменения любых регистров Ethernet в STM32 программа должна выполнить эту строку:
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ETH_MAC | RCC_AHBPeriph_ETH_MAC_Tx |
RCC_AHBPeriph_ETH_MAC_Rx, ENABLE);
Характерным признаком того что периферия не затактирована является нулевая реакция на попытку изменить любой управляющий регистр периферии.
фактически код процедур, на которых виснет:
01783 void ETH_SoftwareReset(void)
01784 {
01785 /* Set the SWR bit: resets all MAC subsystem internal registers and logic */
01786 /* After reset all the registers holds their respective reset values */
01787 ETH->DMABMR |= ETH_DMABMR_SR;
01788 }
01789
01790 /**
01791 * @brief Checks whether the ETHERNET software reset bit is set or not.
01792 * @param None
01793 * @retval : The new state of DMA Bus Mode register SR bit (SET or RESET).
01794 */
01795 FlagStatus ETH_GetSoftwareResetStatus(void)
01796 {
01797 FlagStatus bitstatus = RESET;
01798 if((ETH->DMABMR & ETH_DMABMR_SR) != (uint32_t)RESET)
01799 {
01800 bitstatus = SET;
01801 }
01802 else
01803 {
01804 bitstatus = RESET;
01805 }
01806 return bitstatus;
01807 }
Фактически меняется один бит регистра ETH->DMABMR.
Если тактирования нет - он не будет меняться, чего бы вы туда не пытались записать.
какое в вашем контроллере сосотяние регистров ETH->DMABMR и ETH_DMABMR_SR?
Итак. дело в этом?
И ещё вопросик, вы пользуетесь описанием библиоечных функций Ethernet для STM32?
Денис Ягов ответил в теме Re: Осваиваем Ethernet в STM32
Пытаюсь проинициализировать Ethernet, намертво встает на
и двигаться дальше никак не хочет.while(ETH_GetSoftwareResetStatus()==SET);
Подключено ли тактирование этой периферии?
до изменения любых регистров Ethernet в STM32 программа должна выполнить эту строку:
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ETH_MAC | RCC_AHBPeriph_ETH_MAC_Tx |
RCC_AHBPeriph_ETH_MAC_Rx, ENABLE);
Характерным признаком того что периферия не затактирована является нулевая реакция на попытку изменить любой управляющий регистр периферии.
фактически код процедур, на которых виснет:
01783 void ETH_SoftwareReset(void)
01784 {
01785 /* Set the SWR bit: resets all MAC subsystem internal registers and logic */
01786 /* After reset all the registers holds their respective reset values */
01787 ETH->DMABMR |= ETH_DMABMR_SR;
01788 }
01789
01790 /**
01791 * @brief Checks whether the ETHERNET software reset bit is set or not.
01792 * @param None
01793 * @retval : The new state of DMA Bus Mode register SR bit (SET or RESET).
01794 */
01795 FlagStatus ETH_GetSoftwareResetStatus(void)
01796 {
01797 FlagStatus bitstatus = RESET;
01798 if((ETH->DMABMR & ETH_DMABMR_SR) != (uint32_t)RESET)
01799 {
01800 bitstatus = SET;
01801 }
01802 else
01803 {
01804 bitstatus = RESET;
01805 }
01806 return bitstatus;
01807 }
Фактически меняется один бит регистра ETH->DMABMR.
Если тактирования нет - он не будет меняться, чего бы вы туда не пытались записать.
какое в вашем контроллере сосотяние регистров ETH->DMABMR и ETH_DMABMR_SR?
Итак. дело в этом?
И ещё вопросик, вы пользуетесь описанием библиоечных функций Ethernet для STM32?
- C1oudStrife
- Посетитель
12 года 2 мес. назад - 12 года 2 мес. назад #3303
от C1oudStrife
Значение ETH->DMABMR до функции ETH_SoftwareReset(); 0x00020101
После функции оно не меняется.
ETH_DMABMR_SR определено кака в ETH->DMABMR младший бит и так равен единице.
C1oudStrife ответил в теме Re: Осваиваем Ethernet в STM32
Да. Так же как и в лабораторке, в начале программы выполняется функция RCC_Configuration(), где вызываетсяПодключено ли тактирование этой периферии?
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ETH_MAC | RCC_AHBPeriph_ETH_MAC_Tx |
RCC_AHBPeriph_ETH_MAC_Rx, ENABLE);
Значение ETH->DMABMR до функции ETH_SoftwareReset(); 0x00020101
После функции оно не меняется.
ETH_DMABMR_SR определено как
#define ETH_DMABMR_SR ((uint32_t)0x00000001) /* Software reset */
Да, такое же, как используется в лабараторной.И ещё вопросик, вы пользуетесь описанием библиоечных функций Ethernet для STM32?
Последнее редактирование: 12 года 2 мес. назад пользователем .
- Денис Ягов
- Посетитель
12 года 2 мес. назад #3304
от Денис Ягов
Денис Ягов ответил в теме Re: Осваиваем Ethernet в STM32
Идём дальше.
1. Вы программу тестируете эмулятором или внутрисхемно?
2. Какая частота у внешнего кварца?
1. Вы программу тестируете эмулятором или внутрисхемно?
2. Какая частота у внешнего кварца?
Время создания страницы: 0.048 секунд