1. 首页
  2. 养车用车
  3. EtherCAT从站学习笔记——3.3PDI通信接口

EtherCAT从站学习笔记——3.3PDI通信接口

简介:关于EtherCAT从站学习笔记——3.3PDI通信接口的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于养车用车技术大全及相关资讯,可以多多关注茶馆百科网。

EtherCAT从站设计的从站微处理器芯片大多是普通的单片机,数据传输是通过SPI串行接口进行的,传输效率相对较低,这导致EtherCAT通信协议的优良性能不能得到充分发挥。在MCU与LAN9252的通信中,本方案利用PS端引脚设计FSMC模块并行传输数据,大大提高了数据传输速率。FSMC技术具有以下特点:

2)可扩展多种外部存储器;

3)快速访问外部存储器;

4)易于扩展各种外部存储器;

5)易于实现多种存储操作。

HBI索引方式下,MCU与LAN9252的连接示意图如图3-5所示。它包括4位地址线、16位数据线、读写信号线、选片信号线和SYNC0、SYNC1、IRQ中断线。

LAN9252提供三个索引/数据寄存器存储,每个存储用于单独的字节/字双字转换。通过写入三个索引寄存器中的一个,然后读取或写入相应的数据寄存器来访问内部寄存器。3个索引/数据寄存器存储最多支持3个独立的驱动器线程,没有访问冲突。每个线程都可以写入其分配的索引寄存器,而不会出现被另一个线程覆盖的问题。在同一个32位索引/数据寄存器中需要两个16位周期或四个8位周期,但是这些访问可以交错进行。支持直接(非索引)读/写访问过程数据FIFO。直接FIFO访问提供单独的字节/字到双字转换,并支持对索引/数据寄存器的交错访问。

MCU不能通过FSMC总线接口直接访问LAN9252中的EtherCAT核心寄存器。而是需要间接寻址LAN9252提供的系统控制寄存器和状态寄存器,如图3-6所示。

对EtherCAT内核寄存器有两种间接读写方式:对EtherCAT内核寄存器CSR进行读写,这是单次读写;EtherCAT处理RAM中的数据读写,即连续读写。

要读取单个EtherCAT内核寄存器,必须通过以下方式启动一个读周期:向EtherCATCSR接口命令寄存器(ECAT_CSR_CMD)写入一次,设置CSR Busy (CSR_BUSY)位置1,CSR address (CSR_ADDR)字段为所需的寄存器地址,read/Write (R_nW)位置1,CSR Size (CSR_SIZE)字段为所需的大小。当CSR_BUSY位被清除为零时,可以从EtherCATCSR接口数据寄存器(ECAT_CSR_DATA)读取有效数据。有效数据始终与EtherCATCSR接口数据寄存器(ECAT_CSR_DATA)的最低点对齐。图3-71显示了读取EtherCAT内核CSR所需的过程

要写入单个EtherCAT内核寄存器,必须首先将所需的数据写入EtherCATCSR接口数据寄存器(ECAT_CSR_DATA)。有效数据始终与EtherCATCSR接口数据寄存器(ECAT_CSR_DATA)的最低点对齐。必须通过以下方式启动一个写周期:向EtherCATCSR接口命令寄存器(ECAT_CSR_CMD)写入一次,设置CSR忙(CSR_BUSY)位置为1,将CSR地址(CSR_ADDR)字段设置为所需的寄存器地址,将读写(R_nW)位清除为零,并将CSR大小(CSR_SIZE)字段设置为所需的大小。通过将CSR busy (CSR_BUSY)位清除为零来指示写周期的完成。图3-72给出了编写EtherCAT内核CSR所需的过程。

过程数据以不同于其他间接寻址寄存器的方式传输,因为过程数据通过16级深度32位宽FIFO从EtherCAT内核传输,其基址为00h,但也可以在其他七个连续存储单元中访问。主机可以访问任何这些别名端口存储单元中的FIFO,因为它们都具有相同的功能并包含相同的数据。通过实现别名端口寻址,主机可以对连续地址进行突发访问。

为了连续读取EtherCAT过程数据RAM,读取周期需要以以下方式启动:首先将所需传输的起始字节地址和长度(以字节为单位)写入EtherCAT过程RAM读地址和长度寄存器(ECAT_PRAM_RD_ADDR_LEN),然后写入EtherCAT过程RAM读命令寄存器(ECAT_PRAM_RD_CMD)以读取PRAM_READ_BUSY位置1的PRAM。

有效数据由EtherCAT过程RAM读取数据FIFO(ECAT_PRAM_RD_DATA)从FIFO读取。PRAM数据可读计数(PRAM_READ_AVAIL_CNT)字段表示无需再次校验状态即可执行读操作的次数。最后一次读取RAM读FIFO(ECAT_PRAM_RD_DATA)后,PRAM读忙(PRAM_READ_BUSY)将自清除为零。当数据从FIFO传输到EtherCAT内核时,会更新PRAM写长度(PRAM_WRITE_LEN)和PRAM写地址(PRAM_WRITE_ADDR),显示整个过程,如图3-8所示。其中,RCMD: EtherCAT过程RAM读命令寄存器(地址=30Ch), R_ADR_LEN: EtherCAT过程RAM读地址和长度寄存器(地址308h)。

如果要写入EtherCAT过程的数据RAM,则需要启动一个写周期:将所需传输的起始字节地址和长度(以字节为单位)写入EtherCAT过程的RAM写地址和长度寄存器(ECAT_PRAM_WR_ADDR_LEN)。然后写入EtherCAT过程RAM写命令寄存器(ECAT_PRAM_WR_CMD)以使PRAM写繁忙(AM_WRITE_BUSY)位置为1。

数据通过16级深度32位宽FIFO传输到EtherCAT内核。PRAM可写空间(PRAM_WRITE_AVAIL)位在EtherCAT过程RAM写命令寄存器(ECAT_PRAM_WR_CMD)中表示可用空间,主机可以通过EtherCAT过程RAM写数据FIFO(ECAT_PRAM_WR_DATA)向FIFO写入数据。PRAM空间可写计数(PRAM_WRITE_AVAIL_CNT)字段表示无需再次检查状态即可执行的写次数。在最后一次写到EtherCAT内核之后,PRAM写忙(AM_WRITE_BUSY)会自动清除。当数据从FIFO传输到EtherCAT内核时,会更新PRAM写长度(PRAM_WRITE_LEN)和PRAM写地址(PRAM_WRITE_ADDR),显示整个过程,如图3-9所示。WCMD: EtherCAT过程RAM写命令寄存器(地址=314h), W_ADR_LEN: EtherCAT过程RAM写地址和长度寄存器(地址=310h)。

如果有必要,您可以通过在EtherCAT过程RAM读命令寄存器(ECAT_PRAM_RD_CMD)中放置PRAM读abort (PRAM_READ_ABORT)位置1来中止读命令。类似地,您可以通过在ECAT_PRAM_WR_CMD中放置PRAM写中止(PRAM_WRITE_ABORT)位置1来中止EtherCAT过程RAM写命令。

本文主要介绍了关于EtherCAT从站学习笔记——3.3PDI通信接口的相关养殖或种植技术,养车用车栏目还介绍了该行业生产经营方式及经营管理,关注养车用车发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解养车用车技术怎么管理的要点,是您养车用车致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/1629843.html