小磷光一

BF533对ADT7516时序的配置,初始化

0
阅读(2982)

 

****************************************************************************/ 
#include "dm_bf5xx.h"
#include "dm_types.h"

#define Iner_Flag_OE	0xff
#define Out_Flag_A		0x00
#define Out_Flag_B		0x00
#define Out_Flag_C		0x00

extern uint8_t databuf[256];
extern uint8_t cmd[2];

/****************************************************************************
* 名称 : ADT7516_SPImode
* 功能 : 软件实现ADT7516进入SPI工作模式
* 入口参数 :无
* 出口参数 :无
****************************************************************************/

void ADT7516_SPImode(void)
{
	*pFIO_FLAG_S = PF2;      //ADT7516_SPISS 拉高
	udelay(0x3ff);
	*pFIO_FLAG_C = PF2;      //ADT7516_SPISS 拉低
	udelay(0x3ff);
	*pFIO_FLAG_S = PF2;
	udelay(0x3ff);
	*pFIO_FLAG_C = PF2;
	udelay(0x3ff);
	*pFIO_FLAG_S = PF2;
	udelay(0x3ff);
	*pFIO_FLAG_C = PF2;
	udelay(0x3ff);
	*pFIO_FLAG_S = PF2;
	udelay(0x3ff);
}

/****************************************************************************
* 名称 : ADT7516_SPI_init
* 功能 : ADT7516 SPI 控制器初始化 ,进入主发送模式
* 入口参数 :无
* 出口参数 :无
****************************************************************************/

void ADT7516_SPI_init(void)
{
    ADT7516_SPImode();         // 3个脉冲从IIC模式 进入SPI模式
	SPIinit();
	SPIMenable();
    SPIMODE_TX();
}

/****************************************************************************
* 名称 : ADT7516_WRITE_REG
* 功能 : ADT7516 SPI 写控制寄存器函数
* 入口参数 :addr 控制寄存器地址 *buf 要写入的数据 NUM连续写入寄存器数目
* 出口参数 :无
****************************************************************************/

void ADT7516_WRITE_REG(uint8_t addr,uint8_t *buf,uint8_t NUM)
{
	SPIMenable();                //允许SPI控制器
	SPIMODE_TX();                //SPI 为发送模式
	SPIsend(ADT7516_WRITE );     //写命令
	SPIsend(addr);               //写地址
	if(NUM==2)
	{
		SPIsend(buf[1]); 		
		SPIsend(buf[0]); 		
	}
	if(NUM==1)
	{
		SPIsend(buf[0]);		
	}
	udelay(0x3ff);
	SPIdisable();                // 禁止SPI 控制器
	udelay(0x3ff);
}

/****************************************************************************
* 名称 : ADT7516_READ_REG
* 功能 : ADT7516 SPI 读控制寄存器函数
* 入口参数 :addrr 控制寄存器地址   len 连续读入寄存器数据数目
* 出口参数 :无
****************************************************************************/

void ADT7516_READ_REG(uint8_t addrr,int_t len)
{
	uint8_t i ;
		
	SPIMenable();                 // SPI 控制器允许
	SPIMODE_TX();                 // SPI 为发送模式
	SPIsend(ADT7516_WRITE );      //写命令
	SPIsend(addrr);               //写地址
	udelay(0x3ff);
	SPIdisable();                 //禁止SPI控制器
	
	udelay(0x3ff);
	SPIMenable();                 // SPI 控制器允许
	SPIMODE_TX();                 // SPI 为发送模式
	SPIsend(ADT7516_READ );       // 写读命令
	SPIMODE_RX();                 // SPI 为接收模式
	
	if(*pSPI_STAT&RXS)             //接收数据
	{
		databuf[0] = *pSPI_RDBR;
	}	
	
	for(i=0;i