Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:0
Поисковых ботовПоисковых ботов:2
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:3
Форум » starterkit.ru » Отладочные платы » Hola(Duo)-PC
Схема тактировки физики и enet контроллера
mantech
Добавлено 17.11.2014 23:40 Редактировалось 17.11.2014 23:42
0
Сообщение: 1
mantech
0

Пункты: 2042
Регистрация: 08.03.2014
Приветствую.

Собственно вопрос, каким образом осуществляется тактировка физики и самого контроллера?

По схеме, сигнал с gpio_16 идет на вход физики, т.е. 50мегагерц поступает с gpio_16, но в даташите он обозначен, как вход, при подключении alt2 , где тогда выход частоты?


PS. Может у кого есть "выколупанный" из убута или линукса кусок кода, с инитом портов и тактировки от этой платы?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 18.11.2014 11:45 Редактировалось 18.11.2014 11:46 Сообщение: 2
sasamy
4.71

Пункты: 83556
Регистрация: 14.08.2009
Что вам мешает взять на фтп исходники ?

http://cache.freescale.com/files/32bit/doc/user_guide/IMX6DQ6SDLHDG.pdf

Chapter 12 Using the RMII Interface

#define ANATOP_PLL_LOCK 0x80000000
#define ANATOP_PLL_PWDN_MASK 0x00001000
#define ANATOP_PLL_BYPASS_MASK 0x00010000
#define ANATOP_FEC_PLL_ENABLE_MASK 0x00002000

static int setup_fec(void)
{
u32 reg = 0;
s32 timeout = 100000;
/*
* get enet tx reference clk from internal clock from anatop
* GPR1[21] = 1
*/
reg = readl(IOMUXC_BASE_ADDR + 0x4);
reg |= (0x1 << 21);
writel(reg, IOMUXC_BASE_ADDR + 0x4);
/* Enable PLLs */
reg = readl(ANATOP_BASE_ADDR + 0xe0); /* ENET PLL */
if ((reg & ANATOP_PLL_PWDN_MASK) || (!(reg & ANATOP_PLL_LOCK))) {
reg &= ~ANATOP_PLL_PWDN_MASK;
writel(reg, ANATOP_BASE_ADDR + 0xe0);
while (timeout--) {
if (readl(ANATOP_BASE_ADDR + 0xe0) & ANATOP_PLL_LOCK)
break;
}
if (timeout <= 0)
return -1;
}

/* Enable FEC clock */
reg |= ANATOP_FEC_PLL_ENABLE_MASK;
reg &= ~ANATOP_PLL_BYPASS_MASK;
writel(reg, ANATOP_BASE_ADDR + 0xe0);

return 0;
}

iomux_v3_cfg_t enet_pads[] = {
MX6DL_PAD_GPIO_16__ENET_ANATOP_ETHERNET_REF_OUT,
MX6DL_PAD_ENET_MDIO__ENET_MDIO,
MX6DL_PAD_ENET_MDC__ENET_MDC,
MX6DL_PAD_ENET_CRS_DV__ENET_RX_EN,
MX6DL_PAD_ENET_RX_ER__ENET_RX_ER,
MX6DL_PAD_ENET_TX_EN__ENET_TX_EN,
MX6DL_PAD_ENET_RXD0__ENET_RDATA_0,
MX6DL_PAD_ENET_RXD1__ENET_RDATA_1,
MX6DL_PAD_ENET_TXD0__ENET_TDATA_0,
MX6DL_PAD_ENET_TXD1__ENET_TDATA_1,
/* phy reset: gpio1-23 */
MX6DL_PAD_ENET_REF_CLK__GPIO_1_23,
};


fecp->rcr &= ~(0x40);
fecp->rcr |= 0x104;

#define MX6DL_PAD_GPIO_16__ENET_ANATOP_ETHERNET_REF_OUT \

IOMUX_PAD(0x05E4, 0x0214, 0x12, 0x080C, 0, NO_PAD_CTRL)
Спуститься к концу Подняться к началу
Персональная информация
mantech
Добавлено 18.11.2014 13:57 Редактировалось 18.11.2014 13:59 Сообщение: 3
mantech
0

Пункты: 2042
Регистрация: 08.03.2014
Спасибо, будем разбираться...

Непонятна одна вещь, почему не используется стандартный пин fec_ref_clk (V22), вместо него стоит GPIO_16?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 18.11.2014 14:08 Редактировалось 18.11.2014 14:08 Сообщение: 4
sasamy
4.71

Пункты: 83556
Регистрация: 14.08.2009
There are two possible pins that can either source or sink the reference clock: GPIO_16 and RGMII_TX_CTL. The GPIO_16 pin is the preferred choice because it has the advantage of being in a high voltage IO domain, which means it can be used at the standard 3.3 V IO voltage levels.
Спуститься к концу Подняться к началу
Персональная информация
mantech
Добавлено 18.11.2014 16:44 Редактировалось 18.11.2014 21:51 Сообщение: 5
mantech
0

Пункты: 2042
Регистрация: 08.03.2014
Цитата
There are two possible pins that can either source or sink the reference clock: GPIO_16 and RGMII_TX_CTL. The GPIO_16 pin is the preferred choice because it has the advantage of being in a high voltage IO domain, which means it can be used at the standard 3.3 V IO voltage levels.


Эк оно как

Все-таки, как бы хорошо пройтись молоточком по темечку тому "гению", кто придумал разделить все на fec и enet, причем, и регистры пинов все переиначить...
Уж делаете семейство mx6, так уж одно и тоже у sl и sdl обозначайте одинаково.

Вот например, что за код, на котором все висит намертво:

int imx_fec_mii_type(imx_fec_priv_t * dev, enum imx_mii_type mii_type)
{
switch (mii_type) {
case RMII:
/* disable the gasket */
FEC_MIIGSK_ENR = 0;

/* wait for the gasket to be disabled */
while (FEC_MIIGSK_ENR & FEC_MIIGSK_ENR_READY)
hal_delay_us(FEC_MII_TICK);

/* configure gasket for RMII, 50 MHz, no loopback, and no echo */
FEC_MIIGSK_CFGR = FEC_MIIGSK_CFGR_IF_MODE_RMII;

/* re-enable the gasket */
FEC_MIIGSK_ENR = FEC_MIIGSK_ENR_EN;
while(!(FEC_MIIGSK_ENR & FEC_MIIGSK_ENR_READY))
hal_delay_us(FEC_MII_TICK);
break;
default:
printf("BUG:unknow MII type=%x\n", mii_type);
break;
}
return 0;
}
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » Hola(Duo)-PC