2、模块设计
根据 SPI总线的原理,可分为以下功能模块:通信模块,控制模块,FIFO模块(缓冲存储器),配置模块,数据收发模块,如图 2所示。
2.1通信模块
这个模块实现与微处理器的通信,接收微处理器的数据和指令,通过指令解析,发出控制信号。该模块定义的寄存器包括发送数据寄存器,接收数据寄存器,测试数据寄存器,接收测试数据寄存器,指令寄存器,配置寄存器,状态寄存器,各寄存器详述如下:
发送数据寄存器:可写寄存器,接收微处理器发送的数据,而后暂存于 FIFO模块中;
接收数据寄存器:可读寄存器,当收到读数据指令时,该寄存器将从 FIFO中读入数据且通过数据总线发送至微处理器;
测试数据寄存器:可写寄存器,用于在测试模式下接收测试数据,而后暂存于 FIFO模块中;
接收测试数据寄存器:可读寄存器,当收到读测试数据指令时,该寄存器读入 FIFO中的测试数据,并通过数据总线发送至微处理器,以测试各功能模块工作是否正常;
指令寄存器:可写寄存器,接收微处理器的指令,通过指令解析后,往其它模块发出相应的控制信号,包括发送数据指令,读数据指令,复位指令,写测试数据指令,读测试数据指令;
配置寄存器:可写寄存器,用于保存 SPI配置参数,包括时钟分频倍数、相位、移位顺序、帧长度等。该寄存器的值将被转发至配置模块。
状态寄存器:只读寄存器,控制模块将状态机状态写入该寄存器,供微处理器查询 SPI
工作状态;
2.2控制模块
控制模块是本系统的核心,控制着整个工作流程,为了方便结构化设计,本模块设计了状态机。根据 SPI总线的原理可将总线分为五种状态,分别是等待状态、数据发送状态、数据接收状态、数据接收完毕状态、在线测试状态。各状态之间的关系如图 2所示: