📄 qspi.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 + -