BF533对ADT7516时序的配置,初始化
0赞
发表于 3/3/2012 11:31:26 AM
阅读(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
