CS5532-PIC源程序代码(已经调试验证)
//-------------------------------------------------------
void mcu_out8bit(unsigned char add_dat1)
{
unsigned char ad_loop,bak_data,bak_dat;
bak_data = add_dat1 ;
ad_loop = 8 ;
while( ad_loop > 0 )
{
bak_dat = bak_data & 0x80 ;
if ( bak_dat == 0x00 ) cs_di = 0 ;//data=0
else if ( bak_dat == 0x80 ) cs_di = 1 ;//data=1
//---------------------------------------
// clk
cs_clk = 1 ;
Nop() ;
Nop();
Nop();
cs_clk = 0 ;
//---------------------------------------
ad_loop = ad_loop - 1 ;
bak_data = bak_data << 1 ;
}
cs_di = 0 ;
}
//-------------------------------------------------------
void mcu_out32bit(unsigned long add_dat2)
{
unsigned char ad_loop ;
unsigned long bak_data,bak_dat ;
bak_data = add_dat2 ;
ad_loop = 32 ;
while( ad_loop > 0 )
{
bak_dat = bak_data & 0x80000000 ;
if ( bak_dat == 0x00 ) cs_di = 0 ;//data=0
else cs_di = 1 ;//data=1
//---------------------------------------
// clk
cs_clk = 1 ;
Nop() ;
Nop();
Nop();
cs_clk = 0 ;
//---------------------------------------
ad_loop = ad_loop - 1 ;
bak_data = bak_data << 1 ;
}
cs_di = 0 ;
}
//-------------------------------------------------------
void mcu_in8bit( )
{
unsigned char ad_loop,bak_data;
ad_loop = 8 ;
while( ad_loop > 0 )
{
bak_data = bak_data << 1 ;
bak_data = bak_data & 0xfe ; // data = 0
//---------------------------------------
// clk
if( cs_do == 1 ) bak_data = bak_data + 1 ; //data=1
cs_clk = 1 ;
Nop();
Nop() ;
Nop();
cs_clk = 0 ;
//---------------------------------------
ad_loop = ad_loop - 1 ;
}
ad_dat1 = bak_data ;
}
//-------------------------------------------------------
void mcu_in32bit( )
{
unsigned char ad_loop ;
unsigned long bak_data ;
ad_loop = 32 ;
while( ad_loop > 0 )
{
bak_data = bak_data << 1 ;
bak_data = bak_data & 0xfffffffe ; // data = 0
//---------------------------------------
// clk
if( cs_do == 1 ) bak_data = bak_data + 1 ; //data=1
cs_clk = 1 ;
Nop() ;
Nop() ;
Nop();
cs_clk = 0 ;
//---------------------------------------
ad_loop = ad_loop - 1 ;
}
ad_dat2 = bak_data ;
}
//------------------------------------------------------------------------
void write_register( )
{
cs_clk = 0 ;
cs_cs = 0 ;
//-------------------------
mcu_out8bit(cs_command) ;
mcu_out32bit(cs_regs) ;
//-----------------------
// cs_cs = 1 ;
}
//--------------------------------------------------------------------------
void read_register( )
{
cs_clk = 0 ;
cs_cs = 0 ;
//-------------------------
mcu_out8bit(cs_command) ;
delay( 50 ) ;
mcu_in32bit( ) ;
//-------------------------
cs_regs = ad_dat2 ;
// cs_cs = 1 ;
}www.dgzj.com
//--------------------------------------------------------
void sync( )
{
unsigned char reset_loop ;
reset_loop = 15 ;
while ( reset_loop > 0 )
{
mcu_out8bit(0xff) ;
reset_loop = reset_loop - 1 ;
}
mcu_out8bit(0xfe) ;
}
//-------------------------------------------------------
//CS5531/32/33/34 不具有上电复位功能,要
//初始化模数转换器,必须执行软件复位,软件复
//位可通过串口初始化序列对串口复位实现。通过
//发送15 个字节的SYNC1(0xFFH),然后发送1
//个字节的SYNC0(0XFEH)可将串口复位成命
//令模式。
void ad_reset( )
{
cs_clk = 0 ;
cs_cs = 0 ;
//--------------------
// 1.复位部分
sync( ) ;
//--------------------------------------------------
// 写 配置寄存器
mcu_out8bit(0x03) ;
delay_ms(25) ;
//------------------------------
mcu_out8bit(0x03);
//------------------------------
mcu_out8bit(0x02);
//------------------------------
mcu_out8bit(0x00);
//------------------------------
mcu_out8bit(0x00);
//------------------------------
mcu_out8bit(0x00);
//------------------------------
// ad_dat1=0x05; // 写 通道 设置 寄存器
// 120 hz 0x00000000
// 60 hz 0x00800080
mcu_out8bit(0x05);
//------------------------------
mcu_out8bit(0x00);
//------------------------------
mcu_out8bit(0x00);
//------------------------------
mcu_out8bit(0x00);
//------------------------------
mcu_out8bit(0x00);
//------------------------------
// ad_dat1=0xc0; //启动转换
mcu_out8bit(0xc0);
//------------------------------
// ad_csb(1); //cs=1
cs_do = 1 ;
}
//-----------------------------------------------------------------
// 24bit ad
//-----------------------------------------------------
// reae result
void adc_result( )
{
unsigned char k_d1,k_d2,k_d3,k_d4,k_d5 ;
unsigned long d_data1 ;
cs_clk = 0 ;
//-------------------------
while ( cs_do == 1 )
{ }
//----------------------------
mcu_in8bit( ) ;
k_d1 = ad_dat1 ;
mcu_in8bit( ) ;
k_d2 = ad_dat1 ;
mcu_in8bit( ) ;
k_d3 = ad_dat1 ;
mcu_in8bit( ) ;
k_d4 = ad_dat1 ;
mcu_in8bit( ) ;
k_d5 = ad_dat1 ;
while ( cs_do == 0 )
{ }
//-------------------------------------
d_data1 = k_d2 ;
d_data1 = ( d_data1 << 8 ) + k_d3 ;
d_data1 = ( d_data1 << 8 ) + k_d4 ;
//-------------------------------------
d_data = d_data1 << 8 ;
//------------------------------
}