移植 SOEM 到嵌入式平台 STM32F767

本文详细介绍了如何将SOEM EtherCAT协议栈移植到STM32F767嵌入式平台上,涉及到RMII接口、PHY芯片LAN8742A的使用,以及如何利用STM32的硬件资源实现高精度系统时钟。通过级联TIM2和TIM5定时器消除中断干扰,并讨论了STM32 HAL库在配置MAC单元时的限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32H743 SOEM EtherCAT基于STM32H743芯片和SOEM的EtherCAT主站源码 提供配套CUBE工程。
SOEM协议栈使用1.3.1版本。
可配套NUCLEO-H743ZI开发板使用。
支持DC同步。
可配合汇川IS620N、三洋RS3、赛孚德ASD620B、埃斯顿ProNet、迈信EP3E、台达A2-E、伟创SD700、松下A5B/A6B和欧姆龙G5系列驱动器使用
移植 SOEM 到嵌入式平台的过程就是重写 SOEM 抽象层的过程。在此之前,
先了解一下以太网口电路。
STM32F767 片上集成了一个 EMAC(802.3),在 F767 开发板上,通过 RMII外接一个 PHY 芯片,型号是 LAN8742A-CZ-TR。EMAC 支持 MII 或者 RMII 与PHY 芯片连接。MII 需要 16 个数据和控制信号引脚与外部 PHY 连接,而 RMII只需要 7 个数据引脚[42]。RMII 接口引脚图和开发板上 RMII 接口电路图如下[43]:

PHY 芯片时钟源并不是 MAC 和 PHY 之间的 50MHz 时钟信号RMII_REF_CLK,是 PHY 芯片自己的 25MHz 时钟供应信号。PHY 芯片LAN8742A 通过 25MHz 时钟输入,在 REF_CLK 上驱动输出一个 50MHz 信号;加上两组数据发送和接收信号,可以达到 100Mbps 的全双工通信。
STM32F767 具有 216MHz 的 CPU 频率,内含多个硬件定时器,可提供微秒级别精度的系统时钟[44]。传统方式下,使用 tick 机制实现系统时钟,选取一个硬件定时器如 TIM6 实现系统时间。TIM6 的计数器长度是 16 比特。计数器时钟设定为 1MHz,即计时周期是 1us。在这样的设定下,16 比特的计时器最多计时 65535 微秒(65 毫秒),然后卷绕到 0。设定计数器计数到 50000 则产生一次中断,每次中断 tick 增加 1,计数器重新回到 0 计数。通过 ticks 数和计数器 CNT 数组合后系统时间值为:icks*50000+TIM6->C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值