Welcome back~
大家十一节假日玩儿的都还好吧!今天开始继续与大家分享我们的精彩博文,今天给大家介绍的是“串口转WiFi”无线模块 WizFi210 的应用笔记之SPI-to-WiFi指南。本部分内容包括7个部分,分别为SPI接口实例框图、SPI引脚连接、SPI接口详细描述、主机唤醒信号处理、SPI传输数据处理、SPI接收数据处理、连接实例等。希望对大家有帮助!
1. SPI接口实例框图
在SPI接口的情况下,WizFi210运行在从模式与主SPI控制器通信。默认情况下,SPI接口支持时钟极性为0且时钟相位为0的Motorola协议。
因为SPI数据传输工作在全双工模式,需要使用特定的字节(octet)提示空闲数据(idle data)。相似地,如果主MCU在以更高的速率发送数据,需要进行流控制机制。为了使这些特定的控制码(比如空闲模式、流控制码和其他控制字节)与用户数据区别开来,使用字节填充机制。
2. SPI引脚连接
Host App (SPI主模式) | WizFi210 (SPI从模式) | 注释 |
MSPI_MISO | SSPI_MISO (27) | SPI 主入/从出 |
MSPI_CLK | SSPI_CLK (28) | SPI 时钟 |
MSPI_CS | SSPI_CS (29) | SPI片选 |
MSPI_MOSI | SSPI_MOSI (30) | SPI 主出/从入 |
Allocate your GPIO | GPIO#19 (23) | 主机唤醒信号 |
GND | GND | 共地 |
3. SPI接口详细描述
如果需要SPI接口额外任务处理SPI数据传输,SPI数据传输
Ø 只支持Motorola模式
Ø 只支持8位SPI数据字大小。
Ø 默认SPI模式时,选择模式#0 (CPOL =0且CPH=0)
Motorola SPI格式,CPL=0,CPH=0。
注意: 在连续的端到端传输的情况下,在每个字节传输过程中必须拉高片选(CS)信号。
参数 | 描述 | 最小 | 最大 | 单位 |
tSSetup | 片选信号下降沿和SPI时钟信号第一次上升沿之间的最小时间 | 4个核心SPI 时钟周期+ 68 ns | mixed | |
tTxdDelay | 在SPI时钟信号下降沿之后从机asserting TX line的延迟时间,或从片选信号下降沿到第一比特的时间 | 4个核心SPI时钟周期+ 68 ns | mixed | |
tRxdSetup | 从接收到的数据准备好到SPI时钟上升沿之间的时间 | 15 | ns | |
tRxdHold | 从SPI时钟上升沿到接收到的数据稳定的时间 | 3个核心SPI 时钟周期+ 14 ns | mixed | |
tSSHold | 在传输的最后比特的采样沿之后片选信号将被保持的时间 | 3个核心SPI 时钟周期+ 14 ns | mixed |
4. 主机唤醒信号处理
主机唤醒信号是高电平有效的信号。主控制器必须给出SPI时钟信号,直到主机唤醒信号是高电平。
不管什么时候WizFi210想发送数据,它将主机唤醒信号拉高。一旦所有数据都从WizFi21发送之后,它又将该信号拉低。
主控制器将删除主机唤醒信号转换(低电平到高电平)作为边缘触发中断并处理进来的数据。
5. SPI传输数据处理
SPI数据传输层利用一字节填充过程。Control Escape字节定义成二进制11111011 (十六进制0xFB),最高有效位先传输。
每一个特定控制模式由一个2字节的序列代替,该2字节序列由Control Escape字节和原始字节与十六进制0×20的异或(XOR)组成。接收完成必须正确地处理所有Control Escape序列。
Escaped数据按以下所示链接被传输:
模式(pattern) | 编码 | 描述 |
0xFD | 0xFB 0xDD | SPI_XON |
0xFA | 0xFB 0xDA | SPI_XOFF |
0xFB | 0xFB 0xDB | Control ESCAPE |
0xF5 | 0xFB 0xD5 | SPI _IDLE |
0xF3 | 0xFB 0xD3 | SPI link ready indication |
需要一个被称作主机唤醒(host wake-up)的特定GPIO信号,该信号指示从从模式WizFi210到主模式主机控制器的数据准备好。主模式控制器必去提供时钟知道主机唤醒信号(host wake-up signal)是高电平。主机控制器可以使用GPIO中断(边缘触发,低电平到高电平转变)从WizFi210接收数据。
因为SPI数据传输工作在全双工模式,将在空闲时间(如果没有更多的数据传输)传输特定填充字符(SPI _IDLE)。这些空闲填充块将在接收数据的结尾。
6. SPI接收数据处理
因为用了字节填充,必须删除每一个ControlEscape字节,且紧接着的下一字节要和十六进制0×20进行异或(XOR)。
如果接收缓冲达到上限值 ,SPI_XOFF 字节将被发送以告知主机停止传输实际数据。在接收到SPI_XOFF字符后,主机必须停止传输实际数据。一旦应用开始处理接收到的数据,并有足够的空间用于进一步接收(reached lower water mark),将发送SPI_XON ,然后可以进行有效数据传输。
特定控制字节SPI _IDLE将被接收机扔掉。
7. 连接实例
n SPI主模式 : W5200E01-M3 (STM32F103C8)
n SPI 从模式 : WizFi210, 固件版本 1.1.0.2(SPI)
n PB10:SPI主模式的GPIO,Host Wake-up signal(主机唤醒信号),高电平有效
n PB11 : 复位WizFi210,控制适配器的使能信号(Enable signal) (可选)
n SPI Mode 0 (CPOL = 0 且CPHASE = 0)
n 只支持8位SPI数据字大小
n SPI 时钟频率是200 KHZ(请看 SPI Master的源文件)
n 当处于空闲状态时,WizFi210周期性的发送 <IDLE code(0xF5)> 。
n 在重启以同步SPI接口后,SPI Master需要发送 <IDLE Code> 到WizFi210。
n 当Host Wake-up信号是高电平时,SPI Master需要接收WizFi210发送的数据。
n 通过发送“AT”命令,SPI Master可以检查WizFi210是处于数据模式还是命令模式。
n SPI Master的样本源程序(sample source)应用在以下环境中。
WizFi210 IP: 192.168.88.123 (静态IP)
TCP服务器模式: Port 5000
SSID of AP: WIZ_RED
WPAPassphrase : wiznet0123456
详细信息,请在WIZnet主页中参考SPI Master的源文件。
本份内容就是这些了,多谢关注!