📄 cf_flash.c
字号:
//=====================================================================
// TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION
// Property of Texas Instruments -- For Unrestricted Internal Use Only
// Unauthorized reproduction and/or distribution is strictly prohibited
// This product is protected under copyright law and trade secret law as
// an unpublished work.Created 1987,(C) Copyright 1997 Texas Instruments.
// All rights reserved.
//=====================================================================
// Filename : compact_flash.c
//
// Description : library to access compact flash
//
// Project : HELEN
//
// Author : didier ounkowsky d-ounkowsky@ti.com
//
//===========================================================================
#include "cf_flash.h"
//---------------------------------------------------------------------
// NAME : CF_CompactFlashConfig
//
// DESCRIPTION : config the compact flash
//
// PARAMETERS : none
//
//
// RETURN VALUE: None
//
// LIMITATIONS : None
//---------------------------------------------------------------------
void CF_CompactFlashConfig(UWORD8 flash_type)
{
UWORD8 i;
// reset the cf
SetGroupBits8(CF_CONFIGURATION_REG_ADDR,
CF_CONFIGURATION_REG_RESET_POS,
CF_CONFIGURATION_REG_RESET_NUMB,
1);
for (i=0;i<10;i++); // wait a little
SetGroupBits8(CF_CONFIGURATION_REG_ADDR,
CF_CONFIGURATION_REG_RESET_POS,
CF_CONFIGURATION_REG_RESET_NUMB,
0);
// config the interrupt as a pulse
SetGroupBits8(CF_CONFIGURATION_REG_ADDR,
CF_CONFIGURATION_REG_LEVIRQ_POS,
CF_CONFIGURATION_REG_LEVIRQ_NUMB,
0);
switch (flash_type)
{
case MEMORY_CF:
//config the card as a memory
SetGroupBits8(CF_CONFIGURATION_REG_ADDR,
CF_CONFIGURATION_REG_CONF_POS,
CF_CONFIGURATION_REG_CONF_NUMB,
CF_CONFIGURATION_MEMORY);
break;
case IO_CF:
//config the card as a memory
SetGroupBits8(CF_CONFIGURATION_REG_ADDR,
CF_CONFIGURATION_REG_CONF_POS,
CF_CONFIGURATION_REG_CONF_NUMB,
CF_CONFIGURATION_IO1);
break;
default:
break;
}
// set the CF_SOCKET_COPY_REG
//SetGroupBits16(CF_SOCKET_COPY_REG_ADDR,
// CF_SOCKET_COPY_REG_FULLPOS,
// CF_SOCKET_COPY_REG_FULLNUMB,
// CF_SOCKET_COPY_REG_VALUE);
}
//---------------------------------------------------------------------
// NAME : CF_CompactFlashReadConfig
//
// DESCRIPTION : read the value of field conf in register configuration
// of the compact flash
//
// PARAMETERS : none
//
//
// RETURN VALUE: None
//
// LIMITATIONS : None
//---------------------------------------------------------------------
UWORD8 CF_CompactFlashReadConfig()
{
return GetGroupBits8(CF_CONFIGURATION_REG_ADDR,
CF_CONFIGURATION_REG_CONF_POS,
CF_CONFIGURATION_REG_CONF_NUMB);
}
//---------------------------------------------------------------------
// NAME : CF_CompactflashRW
//
// DESCRIPTION : perform a RW on the compact flash
//
// PARAMETERS : none
//
//
// RETURN VALUE: None
//
// LIMITATIONS : None
//---------------------------------------------------------------------
UWORD8 CF_CompactflashRW()
{
UWORD8 k, result=0;
UWORD16 tablo[4]={0xAAAA,0x5555,0x0000,0xFFFF};
for (k=0;k<4;k++)
{
REG16(CF_MEMORY_ADDRESS+k*2)=tablo[k];
if (REG16(CF_MEMORY_ADDRESS+k*2)!=tablo[k])
{result++;}
}
return result;
}
//---------------------------------------------------------------------
// NAME : CF_CompactFlashIO
//
// DESCRIPTION : perform an IO on the compact flash
//
// PARAMETERS : none
//
//
// RETURN VALUE: None
//
// LIMITATIONS : None
//---------------------------------------------------------------------
UWORD8 CF_CompactFlashIO()
{
UWORD8 result=0;
UWORD16 value=0x1111;
REG16(CF_IO_ADDRESS)=value;
if (REG16(CF_IO_ADDRESS)!=value)
result++;
return result;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -