买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:中国船舶重工集团公司第七0七研究所
摘要:本发明涉及基于Quad‑SPI控制器与外扩FLASH通信控制系统及方法,其中Quad‑SPI控制器内部四个模块通过六根控制线与SPI接口FLASH存储芯片相连,Quad‑SPI控制器内部四个模块包括:控制寄存器、时钟生成器、发送接收控制逻辑和移位寄存器,Quad‑SPI控制器六根控制线包括控制线SCK、控制线NSS、控制线MOSI、控制线MISO、控制线IO2、控制线IO3,本方法能够实现Quad‑SPI控制器与SPI接口FLASH存储芯片进行全双工传输通信,满足了设备的使用功能,降低了项目开发成本,并满足了数据快速存储的需求,提高芯片利用率,缩短项目开发周期,而且维护方便,效率高、便捷操作。
主权项:1.基于Quad-SPI控制器与外扩FLASH的通信控制系统的控制方法,其特征在于:控制系统包括Quad-SPI控制器和SPI接口FLASH存储芯片,所述Quad-SPI控制器内部包括四个模块并通过六根控制线与SPI接口FLASH存储芯片相连,所述四个模块为:控制寄存器、时钟生成器、发送接收控制逻辑和移位寄存器,所述六根控制线为:控制线SCK、控制线NSS、控制线MOSI、控制线MISO、控制线IO2和控制线IO3;所述Quad-SPI控制器使用基于ARMCortex-M4处理器的32位工业级单板机GD32F450XX系列器件,SPI接口Flash存储芯片使用16Mbit串行Flash存储芯片GD25Q32E,所述Quad-SPI控制器通过控制寄存器配置内部寄存器,控制寄存器通过包含的发送缓冲区和接收缓冲区保存传输过程中的临时数据,并且通过控制寄存器分频选择控制通讯速度;所述Quad-SPI控制器通过时钟生成器生成SCK通信时钟,并由SCK引脚提供串行输入和输出操作的时序;所述Quad-SPI控制器通过移位寄存器传输发送缓冲区和接收缓冲区数据,并控制控制线MOSI、控制线MISO、控制线IO2、控制线IO3上的串行数据发送和接收;所述Quad-SPI控制器通过发送接收控制逻辑根据Quad-SPI命令生成控制逻辑,进行IO控制,生成输出信号并控制通信,根据接收到的SCK信号和NSS信号控制接收通信;Quad-SPI控制器的APB总线连接周边外设并作为标准片上外围总线结构;所述控制线SCK为时钟信号线,控制线NSS为片选控制线;控制线MOSI、控制线MISO、控制线IO2和控制线IO3为数据线,其中,控制线MOSI为控制线IO0、控制线MISO为控制线IO1;控制方法包括配置Quad-SPI端口模式的方法、配置SPI总线参数的方法、打开SPI总线的使能的方法、获得Flash存储芯片地址的方法、等待命令执行结束或等待空闲的方法、开启芯片写使能的方法、数据擦除的方法、发送数据的方法、接收数据的方法和禁用SPI总线四路模式和关闭SPI总线的方法;所述配置Quad-SPI端口模式的具体步骤包括:步骤1、将控制线IO2配置成无上下拉电阻复用推挽SPI功能模式,在外部设置上下拉电阻,最大输出速度25M;步骤2、将控制线IO3配置成无上下拉电阻复用推挽SPI功能模式,在外部设置上下拉电阻,最大输出速度25M;步骤3、将控制线MISO配置成无上下拉电阻复用推挽SPI功能模式,在外部设置上下拉电阻,最大输出速度25M;步骤4、将控制线SCK配置成无上下拉电阻复用推挽SPI功能模式,在外部设置上下拉电阻,最大输出速度25M;步骤5、将控制线MOSI配置成无上下拉电阻复用推挽SPI功能模式,在外部设置上下拉电阻,最大输出速度25M;步骤6、将控制线NSS配置成无上下拉电阻推挽输出模式,最大输出速度50M,所述配置SPI总线参数为配置控制寄存器SPI_CTL0,其具体步骤包括:步骤1、配置SPI总线运行方向,配置控制寄存器SPI_CTL0中的RO位、BDEN位和BDOEN位,将SPI总线设置为双线双向全双工模式;步骤2、配置SPI总线的工作模式,配置控制寄存器SPI_CTL0中的MSTMOD位,设置SPI总线工作在主机模式;步骤3、配置SPI总线传输数据长度,数据帧格式,配置控制寄存器SPI_CTL0中的FF16位,SPI总线在四线IO模式下的数据帧长度固定为8位,因此设置SPI总线通讯数据大小为8位;步骤4、配置SPI总线时钟极性,配置控制寄存器SPI_CTL0中的CKPL位,SPI总线在数据发送之前和之后的空闲状态时,SCK引脚拉高;步骤5、配置SPI总线采样延迟,配置控制寄存器SPI_CTL0中的CKPH位,设置在第二个时钟跳变沿采集第一个数据;步骤6、配置是否用硬件控制片选NSS引脚模式,配置SPI_CTL0中的SWNSSEN位和NSSDRV位,因为片选使用的NSS引脚,所以设置软件控制SPI总线片选,管理从设备,指定NSS引脚信号由软件管理,此时,NSS引脚拉高,保持高电平,当发送或接收过程开始时,NSS引脚变为低电平;步骤7、配置控制寄存器SPI_CTL0中的PSC[2:0]位生成预期波特率的通讯速度SCK信号,设APB最高时钟频率为100MHz,发送和接收SCK时钟分频设置为32,故SPI时钟=100MHz4=25MHz;步骤8、配置帧格式数据位顺序,配置控制寄存器SPI_CTL0中的LF位,先发送最高有效位MSB,数据传输从高位开始,所述打开SPI总线的使能配置四路SPI控制寄存器SPI_QCTL和控制寄存器SPI_CTL0,其具体步骤包括:步骤1、配置SPI总线工作在四线IO模式,配置四路SPI控制寄存器SPI_QCTL中的QMOD位;步骤2、驱动IO2引脚和IO3引脚为输出高电平,配置四路SPI控制寄存器SPI_QCTL中的IO23_DRV位;步骤3、使能SPI总线功能,配置控制寄存器SPI_CTL0中的SPIEN位,所述获得Flash存储芯片地址的命令为9F,命令发送的第一个字节是命令字节,然后第二个字节是返回的制造商标识,第三字节和第四个字节是返回的芯片标识,读取芯片地址的具体步骤为:步骤1、拉低NSS引脚使能芯片,选择片选,选中Flash芯片,驱动NSS引脚为低电平;步骤2、向芯片发送获得地址的命令9F;步骤3、连续读取三个字节;步骤4、拉高NSS引脚失能芯片,取消片选,释放芯片,驱动NSS引脚为高电平完成命令;步骤5、将三个字节所得的地址合并获得Flash的ID号,读状态寄存器命令为05,命令发送的第一个字节是命令字节,然后第二个字节是状态寄存器返回值,因此所述等待命令执行结束或等待空闲的具体步骤包括:步骤1、拉低NSS引脚使能芯片,选择片选,选中芯片;步骤2、发送读状态寄存器命令05;步骤3、读取一个字节状态寄存器;步骤4、循环步骤3,等待WIP位清空;步骤5、拉高NSS引脚失能芯片,取消片选,释放芯片,执行Flash存储芯片页编辑与数据擦除命令时,都需要开启芯片写使能功能,开启芯片写使能的具体步骤包括:步骤1、拉低NSS引脚来使能芯片,选择片选,选中芯片;步骤2、发送写使能命令06;步骤3、拉高NSS引脚失能芯片,释放芯片,所述数据擦除按扇区擦除、块区擦除或者芯片擦除,扇区擦除命令20,第一个字节是命令字节,第二、第三和第四字节是扇区擦除地址,擦除芯片操作流程具体包括:步骤1、开启芯片写使能,发送写使能命令06;步骤2、拉低NSS引脚使能芯片,选择片选,选中芯片;步骤3、发送扇区擦除命令20;步骤4、发送要擦除的起始地址,其中需要发送3个8位地址;步骤5、拉高NSS引脚失能芯片,释放芯片;步骤6、等待擦除命令执行结束,在完成SPI总线初始化过程之后,打开SPI总线的使能,并保持在空闲状态,SPI总线工作在写模式中,数据写入的时候只能按照页来写入,采用页写入的方式写入数据,最大支持一次性写入256个字节的数据,一个页的空间,页对齐,而且在进行页编辑时,要保证写入区域位都为1,有数据必须要擦除,所以一般每次写入都要先擦除数据才能写入,四倍速页编辑命令32的第一个字节是命令字节,第二、第三和第四字节是写数据地址,第五是要发送的数据字节,接着写下一个字节的数据,发送数据时寄存器配置的具体步骤包括:步骤1、判断写入的区域是否空,非空则执行数据擦除;步骤2、开启芯片写使能,发送写使能命令;步骤3、配置四线SPI操作芯片,发送写状态寄存器命令01,发送00和02,将Flash存储芯片的状态寄存器QE位允许四线SPI操作Flash存储芯片;步骤4、等待写状态寄存器命令执行结束;步骤5、拉低NSS引脚使能芯片,选择片选,选中芯片;步骤6、配置四路SPI控制寄存器SPI_QCTL中的QMOD位使能SPI总线工作在四线IO模式,配置四路SPI控制寄存器SPI_QCTL中的QRD位选择SPI四路模式写操作;步骤7、发送四倍速页编辑命令32;步骤8、发送要写数据的起始地址,其中需要发送3个8位地址;步骤9、向数据寄存器SPI_DATA中写入一个字节的数据,此时状态寄存器SPI_STAT中的TBE位将会清零;步骤10、等待硬件将状态寄存器SPI_STAT中的TBE位重新置位,发送缓冲区空,然后写入下一个字节数据;步骤11、重复9和10步骤,写入256个字节;步骤12、拉高NSS引脚失能芯片,取消片选,释放芯片;步骤13、等待四倍速页编辑命令执行结束,四端口输出快速读数据命令为6B,该命令启动一个24位地址为进入Flash存储芯片的DI引脚,地址在上升沿锁存SCK引脚,收到地址后,寻址存储单元的数据字节将被移出在SCK的下降沿处的DO引脚上,最高有效位MSB优先,在每个数据字节移出后允许连续,地址是自动的递增到下一个更高的地址数据流,只要使用一条命令就能够继续访问整个Flash存储芯片,为了产生SCK时钟信号,还要写数据到数据寄存器SPI_DATA,该命令允许从Flash存储芯片中顺序读取一个以上的数据字节,四端口输出快速读取命令传输数据是标准SPI器件速率的四倍,IO引脚在第一个数据输出时钟的下降沿之前是高阻态,四端口输出快速读数据命令6B的第一个字节是命令字节,第二、第三和第四字节是读取数据地址,第五个字节是伪字节,第六个字节开始返回数据,若接着读,会返回下一个字节的数据,接收数据的具体步骤包括:步骤1、拉低NSS引脚使能芯片,选择片选,选中芯片;步骤2、发送四端口输出快速读数据命令6B;步骤3、发送要读数据的起始地址,其中需要发送3个8位地址;步骤4、发送一个8位伪字节0XA5,实现Flash存储芯片的内部电路有额外的时间进行起始地址设置,并在最高频率下工作;步骤5、配置四路SPI控制寄存器SPI_QCTL中的QMOD位使能SPI工作在四线IO模式,和QRD位选择SPI总线四路模式读操作;步骤6、写空闲数据0xFF到数据寄存器SPI_DATA,产生SCK时钟信号;步骤7、等待状态寄存器SPI_STAT中的RBNE位置1,接收缓冲区非空,然后读数据寄存器SPI_DATA来获取接收的数据;步骤8、重复步骤6和步骤7,数据传输开始之后,每发送一个数据帧都要检测状态寄存器SPI_STAT中的TBE位,若发送缓冲区空,向数据寄存器SPI_DATA写空闲数据,以接收下一个字节数据;步骤9、拉高NSS引脚失能芯片,取消片选,释放芯片;步骤10、等待四端口输出快速读数据命令执行结束,所述禁用SPI总线四路模式和关闭SPI总线的具体步骤包括:步骤1:禁用SPI总线四路模式和关闭SPI总线功能之前,先检查状态寄存器SPI_STAT中的TBE位是否置位,TRANS位是否清零,所述TRANS位是SPI总线通信进行中标志位,TRANS位是用来指示当前传输是否正在进行或结束的状态标志位,它由内部硬件置位和清除,无法通过软件控制;步骤2:配置四路SPI控制寄存器SPI_QCTL中的QMOD位禁用SPI总线工作在四线IO模式;步骤3:配置控制寄存器SPI_CTL0中的SPIEN位禁止SPI设备。
全文数据:
权利要求:
百度查询: 中国船舶重工集团公司第七0七研究所 基于Quad-SPI控制器与外扩FLASH通信控制系统及方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。