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

📄 lpc_spi.h

📁 NXP ARM7 用SPI 接口 驱动铁电FM25256
💻 H
字号:
#ifndef __LPC_SPI_H__ 
#define __LPC_SPI_H__ 

// Filename: lpc_spi.h
// Author:   Zhang Sheng
// Orgnize:  Estun digital technology
// Revision  Modifier  Data
// xxx       xxx       xxx
// Function: 
// LPC ARM7 SPI1 驱动,和对FM25256的操作
// SPI 模式设置,片选引脚的设置
// FM25256 的写使能、写禁能、读状态、写状态,写单字节数据,读单字节数据,
// 读连续区域数据,写连续区域数据

#include "iolpc2292.h"
#include "config.h"
//================================= SPI ======================================//
#define Fspi        937500      //使SPCCR = 16
#define SPCCR_SET   (Fpclk/Fspi)//Fplk=15M  SPCCR 要为偶数,且大于8

#define SPCR_SPIE  (1<<7) //SPI中断使能
#define SPCR_LSBF  (1<<6) //数据移动方向
#define SPCR_MSTR  (1<<5) //主模式选择
#define SPCR_CPOL  (1<<4) //时钟极性控制
#define SPCR_CPHA  (1<<3) //时钟相位控制
#define SPI_MODE   (SPCR_MSTR | SPCR_CPOL | SPCR_CPHA) //主模式

#define SPSR_SPIF   (1<<7) //传输完成标志
#define SPSR_WCOL   (1<<6) //写冲突
#define SPSR_ROVR   (1<<5) //读溢出
#define SPSR_MODF   (1<<4) //模式错误
#define SPSR_ABRT   (1<<3) //从机中止

#define SPINT_IF    (1<<0) //中断标志

// SPI 片选引脚操作,本文件未定义此管脚的方向,需在系统初始化时设置为输出方向
#define SPI_CS_SET  P2_SET(18)
#define SPI_CS_CLR  P2_CLR(18)

// SPI的设置,在系统初始化时调用
void SPI_Init(unsigned char fdiv/*=SPCCR_SET*/);

// 向SPI写一个字节数据
void SPI_Write(unsigned char data);

// 从SPI读数据
unsigned char SPI_Read(void);

// 清除SPI中断标志
void SPI_ClrInt(void);

//=============================== FM25256 ====================================//
#define   FM_WREN         0X06        //set write enable latch
#define   FM_WRDI         0X04        //write disable

#define   FM_RDSR         0X05        //read status register
#define   FM_WRSR         0X01        //write status register

#define   FM_READ         0X03        //read memory data
#define   FM_WRITE        0X02        //write memory data

#define   FM_PROTECT_NO   0X00        // WRSR :    7  6  5  4  3  2   1   0  bit
#define   FM_PROTECT_14   0X04        //         WREN 0  0  0 BP1 BP0 WEL 0  name
#define   FM_PROTECT_12   0X08        //
#define   FM_PROTECT_ALL  0X0C

#define   FM_READA8       0X0B        //read high memory data
#define   FM_WRITEA8      0X0A        //write high memory data

//set write enable latch
void wren(void);

//write status register
void wrsr(unsigned char protect_byte);

//write disable
void wrdi(void);

//read status register
unsigned char rdsr(void);

//write
//This add bewteen 0000 and 7Fff.
void fm_write(unsigned short address, unsigned char fm_data);

//read a byte
//This add bewteen 0000 and 7Fff.
unsigned char fm_read(unsigned short address);

//  写连续的数据 (地址自动递增)
//  add bewteen 0000 and 7FFF
void fm_seqWrite(unsigned short address,unsigned char *pArray,unsigned short n);

//  读连续的数据 (地址自动递增)
//  add bewteen 0000 and 7FFF
void fm_seqread(unsigned short address,unsigned short n,unsigned char *pp);

#endif // __LPC_SPI_H__

⌨️ 快捷键说明

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