• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

【代码库】如何使用SmartMDA在MCX MCU上实现MDIO从接口

10小时前
181
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

an-mcxn947-mdio-slave-interface-by-smartdma-main (1).zip

共1个文件

如何使用SmartMDA在MCX MCU上实现MDIO从接口

该软件随应用笔记提供,主要介绍如何使用SmartDMA实现MDIOI从设备接口功能。

主板:FRDM-MCXN947

类别:HMI、工业、网络、用户界面

外设:以太网、GPIO

工具链:IAR

目录

  1. 软件
  2. 硬件
  3. 设置
  4. 结果
  5. 支持
  6. 发行说明

1.软件

2.硬件

  • Type-C USB 线缆
  • 两组FRDM-MCXN947
  • 个人电脑
  • 逻辑器件:Saleae logic pro16
  • 一些杜邦线

3. 设置

3.1 步骤 1

此应用需要两块 FRDM-MCXN947 开发板来实现 MDIO 通信,其中一块用作 MDIO 主设备,另一块用作 MDIO 从设备。两块开发板通过两个引脚和地线连接。硬件连接如下表所示。

| 功能 | MDIO 主控 FRDM-MCXN947 | MDIO从属FRDM-MCXN947 |
| ---------------- | ----------------------------------------------- | --------------------------------------------- |
| MDIO | J1-7(P1-21) | J1-1(P316) |
| 多数据中心 | R191 的焊盘 1(移除 R191) (P1
20) | J1-5(P3_20) |
| 接地 | J5-8(接地) | J5-8(接地) |

  1. 用USB线将逻辑设备连接到PC,将逻辑设备连接到MDIO信号。
  2. 使用 USB type-C 电缆将 FRDM-MCXN947 板连接到 PC。
  3. 连接两块FRDM-MCXN947板的信号引脚。

3.1 步骤 2

值得一提的是,MCXN947 的以太网外设具有 MDIO 主设备功能。用户可以通过相应 SDK 中名为“txrxrxpoll”的示例来演示 MDIO 主设备功能。示例路径为:SDK216000FRDM-MCXN947boardsfrdmmcxn947driverexamplesenettxrx_rxpoll。

重要的代码例程如下:

```

```

static void MDIO_Init(void)

{

(void)CLOCKEnableClock(senetClock[ENETGetInstance(EXAMPLEENET_BASE)]);

EXAMPLEENETBASE->MACMDIOADDRESS = ENETMACMDIOADDRESSCR(0);

}

static statust MDIOWrite(uint8t phyAddr, uint8t devAddr,uint16t regAddra, uint16t data)

{

uint32t reg = EXAMPLEENETBASE->MACMDIOADDRESS & ENETMACMDIOADDRESSCRMASK;

/* Build MII write command. */

EXAMPLEENETBASE->MACMDIOADDRESS =

? reg | ENETMACMDIOADDRESSGOC0(1) | ENETMACMDIOADDRESSPA(phyAddr) | ENETMACMDIOADDRESSRDA(devAddr)| ENETMACMDIOADDRESS_C45E(1);

EXAMPLEENETBASE->MACMDIODATA = (regAddra << 16) | data;

EXAMPLEENETBASE->MACMDIOADDRESS |= ENETMACMDIOADDRESSGB_MASK;

while (((EXAMPLEENETBASE->MACMDIOADDRESS & ENETMACMDIOADDRESSGB_MASK) != 0U))

{

}

}

static statust MDIORead(uint8t phyAddr, uint8t devAddr, uint16t regAddr, uint16t *pData)

{

uint32t reg = EXAMPLEENETBASE->MACMDIOADDRESS & ENETMACMDIOADDRESSCRMASK;

/* Build MII read command. */

EXAMPLEENETBASE->MACMDIOADDRESS = reg | ENETMACMDIOADDRESSGOC0(1) | ENETMACMDIOADDRESSGOC1(1) |ENETMACMDIOADDRESSPA(phyAddr) | ENETMACMDIOADDRESSRDA(devAddr)| ENETMACMDIOADDRESSC45E(1);

EXAMPLEENETBASE->MACMDIODATA = (regAddr << 16);

EXAMPLEENETBASE->MACMDIOADDRESS |= ENETMACMDIOADDRESSGB_MASK;

while (((EXAMPLEENETBASE->MACMDIOADDRESS & ENETMACMDIOADDRESSGB_MASK) != 0U))

{

}
*pData = (EXAMPLEENETBASE->MACMDIODATA & ENETMACMDIODATAGD_MASK);
}

The operations code as below:

MDIO_Init();

for(uint32_t i = 0; i < 8*4; i = i+4)

{

? MDIO_Write(0x10, 0x20, 0x8000+i, i);

? SDK_DelayAtLeastUs(10, SystemCoreClock);

}

for(uint32_t i = 0; i < 8*4; i = i+4)

{

? MDIO_Write(0x10, 0x20, 0x9000+i, i+0x100);

? SDK_DelayAtLeastUs(10, SystemCoreClock);

}

for(uint32_t i = 0; i < 8*4; i = i+4)

{

? MDIO_Write(0x10, 0x20, 0xa000+i, i+0x200);

? SDK_DelayAtLeastUs(10, SystemCoreClock);

}

for(uint32_t i = 0; i < 8*4; i = i+4)

{

? MDIO_Write(0x10, 0x20, 0xb000+i, i+0x300);

? SDK_DelayAtLeastUs(10, SystemCoreClock);

}

for(uint32_t i = 0; i < 8*4; i = i+4)

{

? MDIORead(0x10, 0x20, 0x8000+i, &grec_data);

? PRINTF("addr:0x%4x,RxD:0x%4x.rn",0x8000+i,grecdata);

}

for(uint32_t i = 0; i < 8*4; i = i+4)

{

? MDIORead(0x10, 0x20, 0x9000+i, &grec_data);

? PRINTF("addr:0x%4x,RxD:0x%4x.rn",0x9000+i,grecdata);

}

for(uint32_t i = 0; i < 8*4; i = i+4)

{

? MDIORead(0x10, 0x20, 0xa000+i, &grec_data);

? PRINTF("addr:0x%4x,RxD:0x%4x.rn",0xa000+i,grecdata);

}

for(uint32_t i = 0; i < 8*4; i = i+4)

{

? MDIORead(0x10, 0x20, 0xb000+i, &grec_data);

? PRINTF("addr:0x%4x,RxD:0x%4x.rn",0xb000+i,grecdata);

}

```

  • 将从属项目导入 MCUXpresso IDE。
  1. 打开 MCUXpresso IDE,在快速启动面板中,选择?应用程序代码中心导入?。
    ?
  2. 在搜索栏中输入演示名称。
  3. 点击?复制GitHub链接?,MCUXpresso IDE将自动检索项目属性,然后单击?下一步>?。
    ?
  4. 选择分支然后点击?Next>?,选择MCUXpresso工程,点击Finish按钮完成导入。
    ?
  • 使用微型 USB 线连接 PC 主机和开发板上的 USB 端口 (J17)。
  • 分别编译并下载主从机固件到主从机板。
  • 重置并运行。

4.结果

  1. 打开连接到MDIO主板串口的PC主机软件,然后重置主板。
  2. 重置演示板,首先重置 MDIO 从板,然后重置 MDIO 主板。
  3. 可以看到MDIO主板打印的串口日志如下:

地址:0x8000,RxD:0x 0。

地址:0x8004,RxD:0x 4。

地址:0x8008,RxD:0x 8。

地址:0x800c,RxD:0x c。

地址:0x8010,RxD:0x c.

地址:0x8014,RxD:0x c。

地址:0x8018,RxD:0x c。

地址:0x801c,RxD:0x 1c。

地址:0x9000,RxD:0x 1c。

地址:0x9004,RxD:0x 1c。

地址:0x9008,RxD:0x 108。

地址:0x900c,RxD:0x 10c。

地址:0x9010,RxD:0x 110。

地址:0x9014,RxD:0x 114。

地址:0x9018,RxD:0x 118。

地址:0x901c,RxD:0x 11c。

地址:0xa000,RxD:0x 200。

地址:0xa004,RxD:0x 204。

地址:0xa008,RxD:0x 208。

地址:0xa00c,RxD:0x 20c。

地址:0xa010,RxD:0x 210。

地址:0xa014,RxD:0x 214。

地址:0xa018,RxD:0x 218。

地址:0xa01c,RxD:0x 21c。

地址:0xb000,RxD:0x 300。

地址:0xb004,RxD:0x 304。

地址:0xb008,RxD:0x 308。

地址:0xb00c,RxD:0x 30c。

地址:0xb010,RxD:0x 310。

地址:0xb014,RxD:0x 314。

地址:0xb018,RxD:0x 318。

地址:0xb01c,RxD:0x 31c。

  1. 在逻辑设备主机软件工具上可以观察到MDIO波形如下:

5. 支持

在此提供帮助的 URL。

项目元数据

董事会徽章

类别徽章 类别徽章 类别徽章 类别徽章

周边徽章 周边徽章

工具链徽章
```

来源:恩智浦appcodehub

  • an-mcxn947-mdio-slave-interface-by-smartdma-main (1).zip
    下载
恩智浦

恩智浦

恩智浦半导体创立于2006年,其前身为荷兰飞利浦公司于1953年成立的半导体事业部,总部位于荷兰埃因霍温。恩智浦2010年在美国纳斯达克上市。恩智浦2010年在美国纳斯达克上市。恩智浦半导体致力于打造全球化解决方案,实现智慧生活,安全连结。

恩智浦半导体创立于2006年,其前身为荷兰飞利浦公司于1953年成立的半导体事业部,总部位于荷兰埃因霍温。恩智浦2010年在美国纳斯达克上市。恩智浦2010年在美国纳斯达克上市。恩智浦半导体致力于打造全球化解决方案,实现智慧生活,安全连结。收起

查看更多

相关推荐