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

📄 fm25l16.c

📁 FM25L16的嵌入式驱动程序
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               上海三浪电子科技有限公司
**
**                                 http://www.san-lang.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: tts.h
**创   建   人: 杨春华
**最后修改日期: 2008年6月11日
**描        述: μCOS-II下FRAM应用程序主文件
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 杨春华
** 版  本: v1.0
** 日 期: 2008年6月11日
** 描 述: 原始版本
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
** 描 述: 
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define FM_GLOBAL
#include "main.h"
// command
#define	WREN	0x06
#define	WRDI	0x04
#define	RDSR	0x05
#define	WRSR	0x01
#define	READ	0x03
#define	WRITE	0x02
#define Fm_CS_H()   	IO0SET = 1<<6
#define Fm_CS_L()	  	IO0CLR = 1<<6 	

/*
****************************************************************************************************
* 描述: SSP口初始化(GPIO配置、控制参数)。
* 函数原型:  void SSP_Init(void)
* 入口参数:
* 出口参数:
* 附加信息: 
****************************************************************************************************
*/
void FramInit(void)
{  

	 //PINSEL1 = (PINSEL1 & (~(0xFF<<2))) | (0x2A<<2);
	 //PINSEL2 &= ~(0x00000003<<((20-16)*2));   //h
	 PCONP |= 0x01<<10;//打开SSP1电源
	 FmSharedSem = OSSemCreate(1);
	 IO0DIR |= 1<<6;//CS脚          
     IO0SET = 1<<6;
     SSP1CR0   =  0x0007;        //8位,SPI帧格式
	 SSP1CPSR  =  0x02;	        //时钟预分频
	 SSP1CR1   =  0x02;          //SSP使能
	 
}
/*
****************************************************************************************************
* 描述:     发送单个字节
* 函数原型: INT8U SSP_SnedReadByte(INT8U ddata)
* 入口参数:
* 出口参数:
* 附加信息: 
****************************************************************************************************
*/
INT8U SSP_SendReadByte(INT8U ddata)
{
	 SSP1DR = ddata;
	 while ((SSP1SR&0x01) == 0x00); //发送结束
	 while ((SSP1SR&0x04) == 0x00); //接收结束

	 return SSP1DR;
}
void FmWriteMemory(INT16U add,INT8U* dat,INT16U len)
{
	INT16U i;
	INT8U err;
	OSSemPend(FmSharedSem,0,&err);
	Fm_CS_L();
	SSP_SendReadByte(WREN);
	Fm_CS_H();
	
	//delay1ms();	
	Fm_CS_L();	
	SSP_SendReadByte(WRITE);
	SSP_SendReadByte((INT8U)(add>>8));
	SSP_SendReadByte((INT8U)(add));
	for(i=0;i<len;i++)
	{
		SSP_SendReadByte(*(dat+i));		
	}
	
	Fm_CS_H();	
	OSSemPost(FmSharedSem);
}


void FmReadMemory(INT16U add,INT8U* dat,INT16U len)
{
	INT16U i;
	INT8U err;
	OSSemPend(FmSharedSem,0,&err);
	//Fm_CS_L();
	//SSP_SendReadByte(WREN);
	//Fm_CS_H();
	
	//delay1ms(1);	
	Fm_CS_L();	
	SSP_SendReadByte(READ );
	SSP_SendReadByte((INT8U)(add>>8));
	SSP_SendReadByte((INT8U)(add));
	for(i=0;i<len;i++)
	{
		*(dat+i) = SSP_SendReadByte(0xaa);		
	}
	
	Fm_CS_H();
	OSSemPost(FmSharedSem);
		
}

⌨️ 快捷键说明

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