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