资源简介

SI4702的资料,有示例代码,很好操作的。

资源截图

代码片段和文件信息

/**************************************

Si47XX I2C part

***************************************/

#include “Si4702_common.h“

/***********************************************
MTK GPIO routine claim
***********************************************/

void GPIO_ModeSetup(kal_uint16 pin kal_uint16 conf_dada);
void GPIO_InitIO(char direction char port);
void GPIO_WriteIO(char datachar port);
char GPIO_ReadIO(char port);


/********************************************************
Before reset make sure following for 2-wire mode:
RCLK = 32KHz
SENB = 1(Bus mode 1 decided by SENB SDIO must be low)
if use bus mode 2 decided by GPIO1&3
*********************************************************/
void ResetSi47XX_2w(void)
{
RST_PIN_INIT;
SDIO_PIN_INIT;
SCLK_PIN_INIT;
RST_DIR_OUT;
SCLK_DIR_OUT;

SDIO_DIR_OUT;
SDIO_LOW;
RST_LOW;
SCLK_HIGH;
DELAY(DURATION_INIT_1);
RST_HIGH;
DELAY(DURATION_INIT_2);
SDIO_HIGH;
DELAY(DURATION_INIT_3);

}

unsigned char OperationSi47XX_2w(T_OPERA_MODE operation unsigned char *data unsigned char numBytes)
{
unsigned char controlWord  j error = 0;
int i;

/***************************************************

START: make sure here SDIO_DIR =OUT SCLK = 1 SDIO = 1

****************************************************/

SCLK_HIGH;
SDIO_HIGH;
DELAY(DURATION_START_1);
SDIO_LOW;
DELAY(DURATION_START_2);
SCLK_LOW;
DELAY(DURATION_START_3);


/***************************************************

WRITE CONTROL DATA: make sure here: SLCK = 0; SDIO = 0

****************************************************/

if(operation == READ)
controlWord = 0x21;
else 
controlWord = 0x20;

for(i = 7; i>=0; i--)
{
if((controlWord >> i) & 0x01)
SDIO_HIGH;
else
SDIO_LOW;
DELAY(DURATION_LOW/2);
SCLK_HIGH;
DELAY(DURATION_HIGH);
SCLK_LOW;
DELAY(DURATION_LOW/2);
}


/***************************

CHECK ACK for control word

***************************/

SDIO_DIR_IN;

DELAY(DURATION_LOW/2);
SCLK_HIGH;
DELAY(DURATION_HIGH);
if(READ_SDIO != 0)
{
error = 1;
goto STOP;
}
        SCLK_LOW;
DELAY(DURATION_LOW/2);

/***************************************

WRITE or READ data

****************************************/


for(j = 0; j < numBytes; j++ data++)
{
if(operation == WRITE)
SDIO_DIR_OUT; 
else
SDIO_DIR_IN;

for(i = 7; i>=0; i--)
{
if(operation == WRITE)
if((*data >> i) & 0x01)
SDIO_HIGH;
else
SDIO_LOW;
DELAY(DURATION_LOW/2);
SCLK_HIGH;
DELAY(DURATION_HIGH);
                        if(operation == READ)
*data = (*data << 1) | READ_SDIO;
SCLK_LOW;
DELAY(DURATION_LOW/2);
}


/******************************

CHECK ACK or SEND ACK=0

*******************************/

if(operation == WRITE)
SDIO_DIR_IN;
else
{
SDIO_DIR_OUT;
if(j == (numBytes - 1))
SDIO_HIGH;
e

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3478  2007-10-31 17:16  Si470x_drv_1123\Si4702_common.h

     文件       1094  2007-12-03 13:48  Si470x_drv_1123\Si4702_drv.h

     文件       3539  2007-09-05 15:39  Si470x_drv_1123\Si4702_I2C.c

     文件      11714  2007-11-23 15:08  Si470x_drv_1123\Si4702_RX_FM.c

     文件     457330  2007-11-30 09:58  AN230.pdf

     文件    1861540  2007-10-23 11:08  AN231.pdf

     文件    1018340  2008-01-04 14:08  Si4702-03-C19.pdf

     目录          0  2007-11-23 11:33  Si470x_drv_1123

----------- ---------  ---------- -----  ----

              3357035                    8


评论

共有 条评论