mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-10-31 06:11:10 -04:00
add SPI 8MHz.
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@6 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
parent
882a1b0319
commit
b02cefe996
@ -134,6 +134,7 @@ TWL_LIBS ?= \
|
||||
libos_sp$(TWL_LIBSUFFIX).a \
|
||||
libmi_sp$(TWL_LIBSUFFIX).a \
|
||||
libvlink_sp$(TWL_LIBSUFFIX).a \
|
||||
libnvram_sp$(TWL_LIBSUFFIX).a \
|
||||
|
||||
ifdef TWL_PROFILE_TYPE
|
||||
TWL_LIBS += libos_sp.$(TWL_PROFILE_TYPE)$(TWL_LIBSUFFIX).a
|
||||
@ -148,6 +149,16 @@ include $(NITROSDK_ROOT)/build/buildtools/commondefs
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
ifeq ($(NITRO_PROVATE),TRUE)
|
||||
TWL_PROVATE := TRUE
|
||||
endif
|
||||
|
||||
ifeq ($(NITRO_WITH_ARM7),TRUE)
|
||||
TWL_WITH_ARM7 := TRUE
|
||||
endif
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
### Global Library resettings
|
||||
|
||||
GINCLUDES := $(TWL_INCDIR) $(GINCLUDES)
|
||||
@ -155,6 +166,7 @@ GLIBRARY_DIRS := $(TWL_LIBDIR) $(GLIBRARY_DIRS)
|
||||
GLIBRARIES := $(TWL_LIBS) \
|
||||
$(filter-out libos$(NITRO_LIBSUFFIX).a libos_sp$(NITRO_LIBSUFFIX).a \
|
||||
libmi$(NITRO_LIBSUFFIX).a libmi_sp$(NITRO_LIBSUFFIX).a \
|
||||
libnvram_sp$(NITRO_LIBSUFFIX).a \
|
||||
,$(GLIBRARIES))
|
||||
|
||||
|
||||
|
||||
@ -25,6 +25,7 @@ SUBDIRS = \
|
||||
os \
|
||||
mi \
|
||||
vlink \
|
||||
spi \
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
52
build/libraries/spi/ARM7/Makefile
Normal file
52
build/libraries/spi/ARM7/Makefile
Normal file
@ -0,0 +1,52 @@
|
||||
#! make -f
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - libraries - spi
|
||||
# File: Makefile
|
||||
#
|
||||
# Copyright 2007 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs contain
|
||||
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
# Company Ltd., and are protected by Federal copyright law. They may
|
||||
# not be disclosed to third parties or copied or duplicated in any form,
|
||||
# in whole or in part, without the prior written consent of Nintendo.
|
||||
#
|
||||
# $Log: $
|
||||
# $NoKeywords: $
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SUBDIRS = nvram # tp mic pm
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
# build ARM & THUMB libraries
|
||||
TWL_CODEGEN_ALL ?= True
|
||||
|
||||
TWL_PROC = ARM7
|
||||
|
||||
# SRCS = spi_sp.c
|
||||
|
||||
# TARGET_LIB = libspi_sp$(TWL_LIBSUFFIX).a
|
||||
INCDIR = $(TWL_NITROSDK_ROOT)/build/libraries/spi/ARM7/include
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
# DEBUG版ビルドの場合、RELEASE版でビルドして
|
||||
# DEBUG版のライブラリを装います。
|
||||
|
||||
ifdef NITRO_DEBUG
|
||||
NITRO_BUILD_TYPE = RELEASE
|
||||
endif
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||
|
||||
INSTALL_TARGETS = $(TARGETS)
|
||||
INSTALL_DIR = $(TWL_INSTALL_LIBDIR)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
# do-build: $(TARGETS)
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||
|
||||
#===== End of Makefile =====
|
||||
180
build/libraries/spi/ARM7/include/nvram_sp.h
Normal file
180
build/libraries/spi/ARM7/include/nvram_sp.h
Normal file
@ -0,0 +1,180 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: NitroSDK - libraries - spi
|
||||
File: nvram_sp.h
|
||||
|
||||
Copyright 2003-2006 Nintendo. All rights reserved.
|
||||
|
||||
These coded instructions, statements, and computer programs contain
|
||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
Company Ltd., and are protected by Federal copyright law. They may
|
||||
not be disclosed to third parties or copied or duplicated in any form,
|
||||
in whole or in part, without the prior written consent of Nintendo.
|
||||
|
||||
$Log: nvram_sp.h,v $
|
||||
Revision 1.6 2006/01/18 02:11:30 kitase_hirotake
|
||||
do-indent
|
||||
|
||||
Revision 1.5 2005/02/28 05:26:27 yosizaki
|
||||
do-indent.
|
||||
|
||||
Revision 1.4 2004/10/07 06:49:34 terui
|
||||
NVRAMについて別メーカー製の場合のコマンド追加に伴う修正。
|
||||
|
||||
Revision 1.3 2004/09/16 04:56:40 terui
|
||||
NVRAMのステータスレジスタに関する定義を追加。
|
||||
|
||||
Revision 1.2 2004/09/07 00:34:27 takano_makoto
|
||||
SDK_SMALL_BUILD定義時にSDK_NVRAM_USE_READ_HIGHER_SPEEDを未定義にするよう変更。
|
||||
|
||||
Revision 1.1 2004/09/06 12:54:18 terui
|
||||
libraries/spi/includeからlibraries/spi/ARM7/includeに移動。
|
||||
SPI処理予約方式の実装に伴う修正。
|
||||
|
||||
Revision 1.5 2004/05/25 00:58:01 terui
|
||||
SPI各デバイス用ライブラリ細分化に伴う修正
|
||||
|
||||
Revision 1.4 2004/05/12 10:51:44 terui
|
||||
メインメモリへのアクセスをMI関数にて行うコンパイルスイッチを追加
|
||||
ReadHigherSpeedインストラクションのみ切り離すコンパイルスイッチを追加
|
||||
|
||||
Revision 1.3 2004/04/29 10:26:09 terui
|
||||
関数定義の引数削除に伴う変更
|
||||
|
||||
Revision 1.2 2004/04/14 06:26:46 terui
|
||||
SPIライブラリのソース整理に伴う更新
|
||||
|
||||
Revision 1.1 2004/04/05 04:46:37 terui
|
||||
Initial upload.
|
||||
|
||||
$NoKeywords: $
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef LIBRARIES_NVRAM_SP_H_
|
||||
#define LIBRARIES_NVRAM_SP_H_
|
||||
|
||||
#include <nitro/types.h>
|
||||
#include "spi_sp.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
定数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
// 高速読み出しコマンドにも対応する場合はdefineする
|
||||
#ifndef SDK_SMALL_BUILD
|
||||
#define SDK_NVRAM_USE_READ_HIGHER_SPEED
|
||||
#endif
|
||||
// LE25FW203Tに特有のinstructionが必要な場合はdefineする
|
||||
#define SDK_NVRAM_ANOTHER_MAKER
|
||||
|
||||
// メインメモリへのアクセスをMIのバイトアクセス関数を使って省コードする場合にdefine
|
||||
#define SDK_SPI_LOW_SPEED_LOW_CODE_SIZE
|
||||
|
||||
// NVRAM操作コマンド定義
|
||||
#define NVRAM_INSTRUCTION_DUMMY 0x00 // 応答取得用のダミー命令
|
||||
#define NVRAM_INSTRUCTION_WREN 0x06 // 書き込み許可
|
||||
#define NVRAM_INSTRUCTION_WRDI 0x04 // 書き込み禁止
|
||||
#define NVRAM_INSTRUCTION_RDSR 0x05 // ステータスレジスタ読み出し
|
||||
#define NVRAM_INSTRUCTION_READ 0x03 // 読み出し
|
||||
#define NVRAM_INSTRUCTION_FAST_READ 0x0b // 高速読み出し
|
||||
#define NVRAM_INSTRUCTION_PW 0x0a // ページ書き込み
|
||||
#define NVRAM_INSTRUCTION_PP 0x02 // ページ書き込み(条件付)
|
||||
#define NVRAM_INSTRUCTION_PE 0xdb // ページ消去
|
||||
#define NVRAM_INSTRUCTION_SE 0xd8 // セクタ消去
|
||||
#define NVRAM_INSTRUCTION_DP 0xb9 // 省電力
|
||||
#define NVRAM_INSTRUCTION_RDP 0xab // 省電力から復帰
|
||||
#ifdef SDK_NVRAM_ANOTHER_MAKER
|
||||
#define NVRAM_INSTRUCTION_CE 0xc7 // チップイレース
|
||||
#define NVRAM_INSTRUCTION_RSI 0x9f // シリコンID読み出し
|
||||
#define NVRAM_INSTRUCTION_SR 0xff // ソフトウェアリセット
|
||||
#endif
|
||||
|
||||
// NVRAMステータスレジスタ内ビット定義
|
||||
#define NVRAM_STATUS_REGISTER_WIP 0x01
|
||||
#define NVRAM_STATUS_REGISTER_WEL 0x02
|
||||
#ifdef SDK_NVRAM_ANOTHER_MAKER
|
||||
#define NVRAM_STATUS_REGISTER_ERSER 0x20
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
構造体定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
// NVRAM用ワーク構造体
|
||||
typedef struct NVRAMWork
|
||||
{
|
||||
u16 command[SPI_PXI_CONTINUOUS_PACKET_MAX];
|
||||
|
||||
}
|
||||
NVRAMWork;
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
関数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
void NVRAM_Init();
|
||||
void NVRAM_AnalyzeCommand(u32 data);
|
||||
void NVRAM_ExecuteProcess(SPIEntry * entry);
|
||||
|
||||
void NVRAM_WriteEnable(void);
|
||||
void NVRAM_WriteDisable(void);
|
||||
void NVRAM_ReadStatusRegister(u8 *buf);
|
||||
void NVRAM_ReadDataBytes(u32 address, u32 size, u8 *buf);
|
||||
#ifdef SDK_NVRAM_USE_READ_HIGHER_SPEED
|
||||
void NVRAM_ReadDataBytesAtHigherSpeed(u32 address, u32 size, u8 *buf);
|
||||
#endif
|
||||
void NVRAM_PageWrite(u32 address, u16 size, const u8 *buf);
|
||||
void NVRAM_PageProgram(u32 address, u16 size, const u8 *buf);
|
||||
void NVRAM_PageErase(u32 address);
|
||||
void NVRAM_SectorErase(u32 address);
|
||||
void NVRAM_DeepPowerDown(void);
|
||||
void NVRAM_ReleaseFromDeepPowerDown(void);
|
||||
#ifdef SDK_NVRAM_ANOTHER_MAKER
|
||||
void NVRAM_ChipErase(void);
|
||||
void NVRAM_ReadSiliconId(u8 *buf);
|
||||
void NVRAM_SoftwareReset(void);
|
||||
#endif
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
インライン関数定義
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: NVRAM_SPIChangeMode
|
||||
|
||||
Description: SPIコントロールレジスタを編集してNVRAM用にコマンド転送準備を整える。
|
||||
この時同時に、SPI連続クロック発振モードを切り替える。
|
||||
|
||||
Arguments: continuous - SPI連続クロック発振可否。'1'で1byte通信の都度CSを上げ
|
||||
ないモード。ただし連続転送の最後の1バイトでは'0'にして
|
||||
1byte転送モードにしないと永久にCSが上がらない。
|
||||
|
||||
Returns: None.
|
||||
*---------------------------------------------------------------------------*/
|
||||
static inline void NVRAM_SPIChangeMode(SPITransMode continuous)
|
||||
{
|
||||
reg_SPI_SPICNT = (u16)((0x0001 << REG_SPI_SPICNT_E_SHIFT) |
|
||||
(0x0000 << REG_SPI_SPICNT_I_SHIFT) |
|
||||
(SPI_COMMPARTNER_EEPROM << REG_SPI_SPICNT_SEL_SHIFT) |
|
||||
(continuous << REG_SPI_SPICNT_MODE_SHIFT) |
|
||||
(0x0000 << REG_SPI_SPICNT_BUSY_SHIFT) |
|
||||
(SPI_BAUDRATE_4MHZ << REG_SPI_SPICNT_BAUDRATE_SHIFT));
|
||||
}
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* LIBRARIES_NVRAM_SP_H_ */
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
End of file
|
||||
*---------------------------------------------------------------------------*/
|
||||
55
build/libraries/spi/ARM7/nvram/Makefile
Normal file
55
build/libraries/spi/ARM7/nvram/Makefile
Normal file
@ -0,0 +1,55 @@
|
||||
#! make -f
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - libraries - spi
|
||||
# File: Makefile
|
||||
#
|
||||
# Copyright 2007 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs contain
|
||||
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
# Company Ltd., and are protected by Federal copyright law. They may
|
||||
# not be disclosed to third parties or copied or duplicated in any form,
|
||||
# in whole or in part, without the prior written consent of Nintendo.
|
||||
#
|
||||
# $Log: $
|
||||
# $NoKeywords: $
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SUBDIRS =
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
# build ARM & THUMB libraries
|
||||
TWL_CODEGEN_ALL ?= True
|
||||
|
||||
TWL_PROC = ARM7
|
||||
|
||||
SRCDIR = .
|
||||
SRCDIR += $(TWL_NITROSDK_ROOT)/build/libraries/spi/ARM7/nvram/src \
|
||||
|
||||
SRCS = nvram_sp.c nvram_instruction.c
|
||||
|
||||
TARGET_LIB = libnvram_sp$(TWL_LIBSUFFIX).a
|
||||
INCDIR = $(TWL_NITROSDK_ROOT)/build/libraries/spi/ARM7/include
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
# DEBUG版ビルドの場合、RELEASE版でビルドして
|
||||
# DEBUG版のライブラリを装います。
|
||||
|
||||
ifdef NITRO_DEBUG
|
||||
NITRO_BUILD_TYPE = RELEASE
|
||||
endif
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||
|
||||
INSTALL_TARGETS = $(TARGETS)
|
||||
INSTALL_DIR = $(TWL_INSTALL_LIBDIR)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
do-build: $(TARGETS)
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||
|
||||
#===== End of Makefile =====
|
||||
34
build/libraries/spi/Makefile
Normal file
34
build/libraries/spi/Makefile
Normal file
@ -0,0 +1,34 @@
|
||||
#! make -f
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - libraries - spi
|
||||
# File: Makefile
|
||||
#
|
||||
# Copyright 2007 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs contain
|
||||
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
# Company Ltd., and are protected by Federal copyright law. They may
|
||||
# not be disclosed to third parties or copied or duplicated in any form,
|
||||
# in whole or in part, without the prior written consent of Nintendo.
|
||||
#
|
||||
# $Log: $
|
||||
# $NoKeywords: $
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
# SUBDIRS = ARM9
|
||||
|
||||
ifdef TWL_WITH_ARM7
|
||||
SUBDIRS += ARM7
|
||||
endif
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||
|
||||
|
||||
#===== End of Makefile =====
|
||||
201
include/nitro/spi/ARM7/spi.h
Normal file
201
include/nitro/spi/ARM7/spi.h
Normal file
@ -0,0 +1,201 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlSDK - SPI
|
||||
File: spi.h
|
||||
|
||||
Copyright 2007 Nintendo. All rights reserved.
|
||||
|
||||
These coded instructions, statements, and computer programs contain
|
||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
Company Ltd., and are protected by Federal copyright law. They may
|
||||
not be disclosed to third parties or copied or duplicated in any form,
|
||||
in whole or in part, without the prior written consent of Nintendo.
|
||||
|
||||
$Log: $
|
||||
$NoKeywords: $
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef TWL_SPI_SPI_H_
|
||||
#define TWL_SPI_SPI_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <nitro/ioreg.h>
|
||||
#include <nitro/hw/ARM7/ioreg_SPI.h>
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// enums
|
||||
//
|
||||
//---- SPI baud rate
|
||||
typedef enum
|
||||
{
|
||||
SPI_BAUDRATE_4MHZ = 0,
|
||||
SPI_BAUDRATE_2MHZ = 1,
|
||||
SPI_BAUDRATE_1MHZ = 2,
|
||||
SPI_BAUDRATE_512KHZ = 3,
|
||||
SPI_BAUDRATE_8MHZ = 4
|
||||
}
|
||||
SPIBaudRate;
|
||||
|
||||
//---- SPI baud rate
|
||||
typedef enum
|
||||
{
|
||||
SPI_TRANSMODE_1BYTE = 0,
|
||||
SPI_TRANSMODE_CONTINUOUS = 1
|
||||
}
|
||||
SPITransMode;
|
||||
|
||||
//---- Clock mode
|
||||
#ifdef SDK_TS
|
||||
typedef enum
|
||||
{
|
||||
SPI_CLKMODE_8CLK = 0,
|
||||
SPI_CLKMODE_16CLK = 1
|
||||
}
|
||||
SPIClockMode;
|
||||
#endif
|
||||
|
||||
//---- communication partner
|
||||
#ifdef SDK_TS
|
||||
typedef enum
|
||||
{
|
||||
SPI_COMMPARTNER_PMIC = 0,
|
||||
SPI_COMMPARTNER_EEPROM = 1,
|
||||
SPI_COMMPARTNER_TP = 2
|
||||
}
|
||||
SPICommPartner;
|
||||
|
||||
#else /* !SDK_TS */
|
||||
typedef enum
|
||||
{
|
||||
SPI_COMMPARTNER_PMIC = 0,
|
||||
SPI_COMMPARTNER_EEPROM = 1
|
||||
}
|
||||
SPICommPartner;
|
||||
|
||||
#define SPI_COMMPARTNER_TP (SPI_COMMPARTNER_PMIC)
|
||||
#endif
|
||||
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// assertion definition
|
||||
//
|
||||
#define SPI_COMMPARTNER_ASSERT( x ) SDK_ASSERT( (u32)x <= SPI_COMMPARTNER_EEPROM )
|
||||
#define SPI_TRANSMODE_ASSERT( x ) SDK_ASSERT( (u32)x <= SPI_TRANSMODE_CONTINUOUS )
|
||||
#define SPI_BAUDRATE_ASSERT( x ) SDK_ASSERT( (u32)x <= SPI_BAUDRATE_512KHZ )
|
||||
|
||||
|
||||
//----------------------------------------------------------------
|
||||
//---- enable/disable/restore SPIEnable
|
||||
static inline BOOL SPI_Enable(void)
|
||||
{
|
||||
BOOL pre = (reg_SPI_SPICNT & ~REG_SPI_SPICNT_E_MASK) >> REG_SPI_SPICNT_E_SHIFT;
|
||||
reg_SPI_SPICNT =
|
||||
(u16)((reg_SPI_SPICNT & ~REG_SPI_SPICNT_E_MASK) | (1UL << REG_SPI_SPICNT_E_SHIFT));
|
||||
return pre;
|
||||
}
|
||||
|
||||
static inline BOOL SPI_Disable(void)
|
||||
{
|
||||
BOOL pre = (reg_SPI_SPICNT & ~REG_SPI_SPICNT_E_MASK) >> REG_SPI_SPICNT_E_SHIFT;
|
||||
reg_SPI_SPICNT = (u16)((reg_SPI_SPICNT & ~REG_SPI_SPICNT_E_MASK));
|
||||
return pre;
|
||||
}
|
||||
|
||||
static inline BOOL SPI_Restore(BOOL flag)
|
||||
{
|
||||
BOOL pre = (reg_SPI_SPICNT & ~REG_SPI_SPICNT_E_MASK) >> REG_SPI_SPICNT_E_SHIFT;
|
||||
reg_SPI_SPICNT =
|
||||
(u16)((reg_SPI_SPICNT & ~REG_SPI_SPICNT_E_MASK) |
|
||||
(flag ? 1UL << REG_SPI_SPICNT_E_SHIFT : 0));
|
||||
return pre;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
//---- Set/Get Interrupt
|
||||
static inline void SPI_SetInterrupt(BOOL e)
|
||||
{
|
||||
reg_SPI_SPICNT =
|
||||
(u16)((reg_SPI_SPICNT & REG_SPI_SPICNT_I_MASK) | (e ? 1UL << REG_SPI_SPICNT_I_SHIFT : 0));
|
||||
}
|
||||
|
||||
static inline BOOL SPI_GetInterrupt(void)
|
||||
{
|
||||
return (BOOL)((reg_SPI_SPICNT & REG_SPI_SPICNT_I_MASK) >> REG_SPI_SPICNT_I_SHIFT);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
//---- Set/Get comminucation partner
|
||||
static inline void SPI_SetCommPartner(SPICommPartner p)
|
||||
{
|
||||
SPI_COMMPARTNER_ASSERT(p);
|
||||
reg_SPI_SPICNT =
|
||||
(u16)((reg_SPI_SPICNT & REG_SPI_SPICNT_SEL_MASK) | (p << REG_SPI_SPICNT_SEL_SHIFT));
|
||||
}
|
||||
|
||||
static inline SPICommPartner SPI_GetCommPartner(void)
|
||||
{
|
||||
return (SPICommPartner)((reg_SPI_SPICNT & REG_SPI_SPICNT_SEL_MASK) >> REG_SPI_SPICNT_SEL_SHIFT);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
//---- set/Get Transfer mode
|
||||
static inline void SPI_SetTransMode(SPITransMode mode)
|
||||
{
|
||||
SPI_TRANSMODE_ASSERT(mode);
|
||||
reg_SPI_SPICNT =
|
||||
(u16)((reg_SPI_SPICNT & REG_SPI_SPICNT_MODE_MASK) | (mode << REG_SPI_SPICNT_MODE_SHIFT));
|
||||
}
|
||||
|
||||
static inline SPITransMode SPI_GetTransMode(void)
|
||||
{
|
||||
return (SPITransMode)((reg_SPI_SPICNT & REG_SPI_SPICNT_MODE_MASK) >> REG_SPI_SPICNT_MODE_SHIFT);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
//---- check SPI is busy
|
||||
static inline BOOL SPI_IsBusy(void)
|
||||
{
|
||||
return (BOOL)((reg_SPI_SPICNT & REG_SPI_SPICNT_BUSY_MASK) >> REG_SPI_SPICNT_BUSY_SHIFT);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
//---- set/get Baudrate
|
||||
static inline void SPI_SetBaudRate(SPIBaudRate baud)
|
||||
{
|
||||
SPI_BAUDRATE_ASSERT(baud);
|
||||
reg_SPI_SPICNT =
|
||||
(u16)((reg_SPI_SPICNT & REG_SPI_SPICNT_BAUDRATE_MASK) |
|
||||
(baud << REG_SPI_SPICNT_BAUDRATE_SHIFT));
|
||||
}
|
||||
|
||||
static inline SPIBaudRate SPI_GetBaudRate(void)
|
||||
{
|
||||
return (SPIBaudRate)((reg_SPI_SPICNT & REG_SPI_SPICNT_BAUDRATE_MASK) >>
|
||||
REG_SPI_SPICNT_BAUDRATE_SHIFT);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
//---- set/get data to/from SPI
|
||||
static inline void SPI_SendData(u8 data)
|
||||
{
|
||||
reg_SPI_SPID = (u16)data;
|
||||
}
|
||||
|
||||
static inline u8 SPI_GetData(void)
|
||||
{
|
||||
return (u8)(reg_SPI_SPICNT & 0xff);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
// subroutine definition
|
||||
//
|
||||
void SPI_Init(u32 prio);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
/* TWL_SPI_SPI_H_ */
|
||||
#endif
|
||||
Loading…
Reference in New Issue
Block a user