请选择 进入手机版 | 继续访问电脑版

北南南北论坛

 找回密码
 立即注册
查看: 17|回复: 0

CS5532程序代码

[复制链接]

563

主题

950

帖子

2694

积分

金牌会员

Rank: 6Rank: 6

积分
2694
发表于 2017-12-21 14:54:10 | 显示全部楼层 |阅读模式
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 ;

//------------------------------

}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


手机版|北南南北论坛  

GMT+8, 2018-1-24 07:57 , Processed in 0.067109 second(s), 30 queries .

© 2001-2016 VxWorks6 Inc.

快速回复 返回顶部 返回列表