⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qspi.h

📁 基于32位ColdFire构建嵌入式系统书本原程序.rar
💻 H
字号:
//-------------------------------------------------------------------------*
// 文件名:  QSPI.h (QSPI驱动程序头文件)                                    *
//-------------------------------------------------------------------------*
#ifndef QSPI_H           //防止重复定义
#define QSPI_H

//1、头文件   
#include "Type.h"     
#include "mcf52233.h"
#include "sysinit.h"  

//QSPI RAM 空间
#define QSPI_TX_RAM 0x00      //发送RAM起始地址0x00
#define QSPI_RX_RAM 0x10      //接收RAM起始地址0x10
#define QSPI_COMMAND_RAM 0x20 //命令RAM起始地址0x20
//命令RAM的控制字
#define QSPI_COM_CONT 0x5100    
//QCR 15 14 13 12 11-8 7-0
//    |  |  |  |   |    |______保留位为0
//    |  |  |  |   |___________QSPI_CS=1111(高/低电平有效由QWR[csiv]位决定)
//    |  |  |  |_______________DSCK=1 使能从片选有效到有效的QSPI_CLK之间的延时
//    |  |  |__________________DT=0 一个标准的1/2 QSPI时钟
//    |  |_____________________BITSE=1 传输QMR[BITS]中设置的位
//    |________________________CONT=0 不连续发送

//QSPI初始化配置参数:
typedef struct QSPI_InitPara
{
    uint8 CPHA;   //CPHA:时钟相位标志.0:在QSPI_CLK上升沿接收数据,下降    
                  //沿发送数据.1:在QSPI_CLK上升沿发送数据,下降沿接收数据
                    
    uint8 CPOL;   //CPOL:时钟极性标志。0;QSPI_CLK空闲电平为0电平。       
                  // 1:QSPI_CLK空闲电平为1电平。                
                            
    uint8 fsys;   //内部时钟时钟。fsys范围因芯片类型而异。单位MHz。  
    uint16 Baud;  //传输波特率。内部时钟为60MHz时,范围为:117.6~15000 Kbps  
                  //内部总线为66MHz时,范围为:129.4~16600 Kbps。 
                  
    uint8 bitcnt; //QSPI传输数据的位数,QSPI支持8~16位数据传输      
           
    uint8 QCD;    //QCD:QSPI_CS有效到第一个QSPI_CLK上升沿之间的延时长度,也
                  //称传输前延时。                                         
                  //当命令RAM中DSCK=0或QCD=0时,延时长度为一 个标准的1/2   
                  //QSPI时钟。当命令RAM中DSCK=1时,QCD=1~127时,延时计算    
                  //公式为:延时时长度=QCD/fsys               
    uint8 DTL;    //DTL:从QSPI_CS信号无效到下一次传输启动之间的延时,也称传 
                  //输后延时。
                  //当命令RAM中DT=0时,则延时长度为一个标准的1/2 QSPI 时钟 
                  //当命令RAM中DT=1,DTL=1~255时,传输后延时=32 × DTL/fsys   
                  //当命令RAM中DT=1,DTL=0时,传输后延时=8192/fsys。   
                       
    uint8 csiv;   //QSPI_CS空闲电平约定。0:空闲电平为0;1: 空闲电平为1。
       
    uint8 NEWQP;  //NEWQP:QSPI将要传输的RAM中的第一个队列节点号。(0~15)
  
    uint8 WREN;   //WREN,环绕模式标志。WREN =0,在执行完所有命令以后停止命
                  //令的执行。WREN =1, 在执行完所有命令以后返回到节点0,或 
                  //QWR[NEWQP]指向的节点继续执行命令。                     
    uint8 WRTO;   //WRTO,环绕位。该位决定环绕模式下QSPI从何处环绕,即执行 
                  //完命令以后从何处开始重新开始执行命令〉当WREN=0时,该位忽
                  //略。当WREN=1时,若WRTO=0,环绕到RAM节点0执行。若WRTO=1,
                  //则环绕到QWR[NEWQP]所指的RAM节点。          
                              
    uint8 SPIFE;  //SPIFE发送完成中断使能位。1:使能发送完成中断 0:禁止发送
                  //完成中断                                               
}QSPI_InitPara;

//QSPI通信相关函数声明
void QSPI_init(QSPI_InitPara Para); //MCF5223x的QSPI模块初始化函数 
void QSPI_WriteToRAM1(uint8 address, uint16 data );//写1个数据
void QSPI_WriteToRAMN(uint8 address, uint16 data[],uint8 N);//写N个数据 
uint16 QSPI_ReadFromRAM1(uint8 address);//读1个数据 
uint16 QSPI_ReadFromRAMN(uint8 address,uint16 data[],uint8 N);//读N个数据 
uint8 QSPI_StartTrans(uint8 bytes);//启动QSPI发送函数

#endif



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -