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