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 ; //------------------------------ }
|
|
来自: 西北望msm66g9f > 《编程》