2.2.3 数据段
在 SPI 工作模式位 OM[1:0]设定了控制端之后,数据段被设定为 2 种长度类型:1 种为可变的 N 字节长度(可变数据长度模式),另以一种为确定的 1/2/4 字节长度(固定数 据长度模式)。
此时,1 字节数据从最大标志位到最小标志位,通过 MOSI 或者 MISO 信号传输。
2.3 可变数据长度模式
在 VDM 模式下,SPI 数据帧的长度被外设主机控制的 SCSn 所定义。这就意味着数据 段长度根据 SCSn 的控制,可以是一个随机值(从 1 字节到 N 字节任何长度均可)。
在 VDM 模式下,M[1:0]位必须为‘00’。
2.3.1 写访问——VDM 模式
图 8 在 VDM 模式下读 SPI 数据帧
图 8 显示的是在外部主机控制 W5500 读操作时的 SPI 数据帧。
在 VDM 模式下,SPI 数据帧的控制段:读写控制位(RWB)为‘1’,工作模式位为’00’。
此时外设主机在传输 SPI 数据帧之前,须拉低 SCSn 信号引脚。
然后主机通过 MOSI 将 SPI 数据帧的所有位传输给 W5500 ,并在 SCLK 的下降沿同 步。
在完成 SPI 数据帧的传输后,主机拉高 SCSn 信号(低电平到高电平)。 当 SCSn 保持低电平且数据段持续传输,即可实现连续数据写入。
1 字节数据写访问示例
当主机在 VDM 模式下,向通用寄存器区域中的 Socket 中断屏蔽寄存器写入数据‘0xA
A’时,SPI 数据帧的写操作如下所示:
Offset Address = 0×0018
BSB[4:0] = ‘00000’ RWB = ‘1’ OM[1:0] = ‘00’
1st Data = 0xAA
在传输 SPI 数据帧之前,外设主机须拉低 SCSn,然后主机在时钟(SCLK)跳变时同步 传输 1 位数据。在 SPI 数据帧传输完毕后,外设主机拉高 SCSn。(参考图 9)
图 9 VDM 模式下,SIMR 寄存器写操作
N 字节写访问示例
当主机在 VDM 模式下,向通用寄存器区域中的 Socket 中断屏蔽寄存器写入 5 字节数 据时(0×11, 0×22, 0×33, 0×44, 0×55),SPI 数据帧的写操作如下所示:
N 字节的写访问如图 10 所示。
5 字节的数据被连续地写入 Socket 1 的写缓存地址:0×0040 – 0×0044。 在 SPI 数据帧传输时,外设主机拉低 SCSn(高电平到低电平)。
在 SPI 数据帧传输完毕时,外设主机拉高 SCSn(低电平到高电平)。
图 10 在 VDM 模式下,向 Socket1 的发送缓存区 0×0040 中写入 5 字节数据
2.3.2 读访问——VDM 模式
图 11 在 VDM 模式下读 SPI 数据帧
图 11 显示的是当外设主机访问 W5500 做读访问时,SPI 的数据帧格式。
在 VDM 模式下,读/写访问位(RWB)为‘0’(读模式),SPI 数据帧控制段的工作 模式位(OM[1:0])为‘00’。
与此同时,在 SPI 数据帧传输之前,外设主机拉低 SCSn(高电平到低电平)。 然后主机通过 MOSI 将地址及控制段的所有位传输给 W5500.所有为将在 SCLK 的下降 沿同步。
之后在同步采样时钟(SCLK)的上升沿,主机通过 MISO 接收到所有数据位。 在接收完所有数据后,主机拉高 SCSn(低电平到高电平)。
当 SCSn 保持低电平且数据段持续传输,即可实现连续数据读取。
1 字节数据读访问示例
在 VDM 模式下,当主机读取 Socket 7 寄存器区的 Socket 状态寄存器(S7_SR),SPI 数据帧的数据读取如下所示。我们让 S7_SR 设置为 Socket 建立模式下(0×17)。
在 SPI 数据帧传输之前,外设主机拉低 SCSn(高电平到低电平)。然后外设主机通过 M OSI 传输地址段和控制段给 W5500.
然后主机通过 MISO 接收到接收完的数据。
在完成数据段的接收后,主机拉高 SCSn(低电平到高电平)。(参考图 12)
图 12 在 VDM 模式下读 S7_SR
N 字节读访问示例
在 VDM 模式下,当从Socket3 的地址为 0×0100 的读取缓存中读取 5 字节的数据(0xAA, 0xBB, 0xCC, 0xDD,0xEE)。这 5 个字节数据的读访问 SPI 数据帧如下所示。
N 字节读访问如图 13 所示。
从 Socket 3 的接收缓存(地址 0×0100 – 0×0104),连续地读取这 5 字节的数据(0xAA,
0xBB, 0xCC, 0xDD, 0xEE)。
在 SPI 传输数据帧之前,外设主机将 SCSn 拉低。(高电平到低电平) 在 SPI 数据段结束时,外设主机将 SCSn 拉高。(低电平到高电平)
图 13 在 VDM 模式下,读取 Socket 3 接收缓存 0×0100 中的 5 字节数据
感谢阅读!
明天继续为您讲解~
更多信息与我们交流:
WIZnet邮箱:wiznetbj@wiznet.co.kr
WIZnet主页:http://www.wiznet.co.kr
WIZnet微博:http://e.weibo.com/wiznet2012