Здравствуйте.
Есть устройство stm32f107+KSZ8993M, свитч подключен по MII собственно вопрос, что это значит и как с ним общаться? покурил даташит к свитчу, просветления не достиг, куча регистров для разных целей, а где их объявлять и как связать с устройством я не вкурил, из гугла понял, что по шине MDC выполняется синхронизация(или переключение чтение/запись), а по шине MDIO выполняется передача информаци, может кто подскажет как оно работает или где искать?
STM32 (Cortex-M3) + свитч по MII
- Реклама
Re: STM32 (Cortex-M3) + свитч по MII
Ессно про обмен по MDI интерфейсу читать в даташите к stm32f107.
А что в какие регистры и зачем - в даташите на KSZ8993M
Как именно работает MDI париться нет необходимости. Идеология как у I2C, в реализации несколько иначе.
Тупо все регистры прописывать нет необходимости. См. на занчения по умолчанию после резета. Думаю, там > 90% уже будут необходимые для большинства случаев.
А что в какие регистры и зачем - в даташите на KSZ8993M
Как именно работает MDI париться нет необходимости. Идеология как у I2C, в реализации несколько иначе.
Тупо все регистры прописывать нет необходимости. См. на занчения по умолчанию после резета. Думаю, там > 90% уже будут необходимые для большинства случаев.
Re: STM32 (Cortex-M3) + свитч по MII
Разбираюсь с даташитом МК, единственное не понял, откуда МК узнает о регистрах свитча?
Re: STM32 (Cortex-M3) + свитч по MII
Ни откуда он о них не знает.pulo писал(а):Разбираюсь с даташитом МК, единственное не понял, откуда МК узнает о регистрах свитча?
У него лишь есть связь с интерфейсом свича, через который можно эти регистры менять.
"Знать" их и конфигурировать - чисто твоя задача. Поищи примеры под STM32 чего нибудь с ethernet'ом. Внутреннего PHY там нет, так что полюбому будет по MII подключен Ehternet PHY и хоть какой то обмен с ним по MDIO.
Re: STM32 (Cortex-M3) + свитч по MII
Собсна, 40 секунд поисков.
см в библиотеке в stm32_eth.h функции:
u16 ETH_ReadPHYRegister(u16 PHYAddress, u16 PHYReg);
uint32_t ETH_WritePHYRegister(u16 PHYAddress, u16 PHYReg, u16 PHYValue);
см в библиотеке в stm32_eth.h функции:
u16 ETH_ReadPHYRegister(u16 PHYAddress, u16 PHYReg);
uint32_t ETH_WritePHYRegister(u16 PHYAddress, u16 PHYReg, u16 PHYValue);
- Реклама
Re: STM32 (Cortex-M3) + свитч по MII
Это да, видел данные функции, пытался понять как они работаю с шиной, но все корни уходят к тому, что некую структуру (ETH_TypeDef) натягивают на область памяти со смещением от PERIPH_BASE и производят чтение/запись в эту область, только как производят связывание памяти с шиной?
Re: STM32 (Cortex-M3) + свитч по MII
Оно тебе надо ?
Если надо - открывай даташит и внимательно смотри карту памяти и принципы работы с периферией вообще в STM32.
В Cortex-M3 нет портов ввода-вывода, какими они были привычны в x86. Абсолютно все регистры memory mapped
Если надо - открывай даташит и внимательно смотри карту памяти и принципы работы с периферией вообще в STM32.
В Cortex-M3 нет портов ввода-вывода, какими они были привычны в x86. Абсолютно все регистры memory mapped
Re: STM32 (Cortex-M3) + свитч по MII
Satyr, большое спасибо за ответы
, действительно, после x86 довольно непривычно, буду разбираться со структурой памяти, точнее тем, куда чего писать.
Re: STM32 (Cortex-M3) + свитч по MII
Короче, некоторые адреса в памяти - и есть регистры переферии.
описываешь структуру в той последовательности, что регистрый у девайса, ставишь адрес структуры на адрес начального регистра девайса - и запись в переменные структуры пойдет точно в нужные адреса памяти, которые являются регистрами того или иного девайса.
Все стандартные хеадеры от производителей камней именно так построены. Если сам будешь что делать, главное не забыть volatile к таким структурам приписать, а то компилер нафиг выбросить всю эту инициализацию "неиспользуемых переменных" -))
описываешь структуру в той последовательности, что регистрый у девайса, ставишь адрес структуры на адрес начального регистра девайса - и запись в переменные структуры пойдет точно в нужные адреса памяти, которые являются регистрами того или иного девайса.
Все стандартные хеадеры от производителей камней именно так построены. Если сам будешь что делать, главное не забыть volatile к таким структурам приписать, а то компилер нафиг выбросить всю эту инициализацию "неиспользуемых переменных" -))


