0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CS5532-PIC程序代码解析

2oON_changxuemc 来源:未知 作者:易水寒 2017-12-22 10:19 次阅读

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 ;

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

}


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PIC
    PIC
    +关注

    关注

    8

    文章

    507

    浏览量

    86693

原文标题:CS5532程序代码

文章出处:【微信号:changxuemcu,微信公众号:畅学单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    求一份CS1237的驱动程序代码

    求一份STMM32F103C8T6驱动CS1237的驱动程序,那位大佬发一下。邮箱2864165038@qq.com
    发表于 04-20 10:56

    国产ADC可替代CS5532BS在工业自动化和精密测量中应用

    国产ADC可替代CS5532BS在工业自动化和精密测量中应用
    的头像 发表于 03-19 09:59 106次阅读
    国产ADC可替代<b class='flag-5'>CS5532</b>BS在工业自动化和精密测量中应用

    更快的tsv解析代码分享

    使用正则解析的正则表达式很简单, 这里直接给代码, 为了避免重复编译正则表达式和重新分配内存报错结果列表, 这里将她们作为参数传给解析函数.
    的头像 发表于 12-29 09:45 166次阅读
    更快的tsv<b class='flag-5'>解析</b><b class='flag-5'>代码</b>分享

    单片机解析g代码的方法

    的运动。 解析G代码是将其转化为单片机能够理解和执行的指令集。单片机解析G代码的方法主要包括以下几个方面:G代码的格式
    的头像 发表于 12-22 14:15 515次阅读

    pic16f628a烧录设置

    PIC16F628A是微芯科技(Microchip)推出的一款8位微控制器芯片。它是一款多功能的芯片,被广泛应用于各种嵌入式系统和电子设备中。烧录是将程序代码写入芯片的过程,它是使用这款芯片的第一步
    的头像 发表于 12-19 09:43 916次阅读

    pic单片机汇编程序实例

    。 以下是一个简单的PIC单片机汇编程序示例,这个程序将实现一个LED闪烁的功能。 配置PIC单片机的引脚 在PIC单片机中,每个引脚都可以
    的头像 发表于 12-14 11:01 677次阅读

    PIC16F73

    电路PIC
    jf_34538777
    发布于 :2023年11月15日 14:24:18

    一分钟带你了解TSMaster小程序编辑代码智能提示功能

    本文给大家带来TSMaster小程序编辑的新功能,其中主要包含:代码编辑智能提示功能、可用外部代码编辑器编辑小程序代码并同步。本文关键字:C小程序
    的头像 发表于 10-28 08:22 1216次阅读
    一分钟带你了解TSMaster小<b class='flag-5'>程序</b>编辑<b class='flag-5'>代码</b>智能提示功能

    在STM32单片机上运行除零运算的C程序代码时为何程序不崩溃?

    众所周知,在 C 语言中,当一个数除以0的时候,会导致除法运算异常。程序也会因此崩溃。 为了避免程序崩溃,我们需要在代码中包含对 0 的判断。
    的头像 发表于 09-14 11:11 906次阅读
    在STM32单片机上运行除零运算的C<b class='flag-5'>程序代码</b>时为何<b class='flag-5'>程序</b>不崩溃?

    CAN公交车的应用程序代码分享

    应用程序: 这个示例是 CAN 公交车的应用程序代码, 描述当公交车在设备节点发生时如何回收并让设备重新进入公交车, 以便进行包件传输和接收 。 BSP 版本:M480系列BSP CMSIS
    发表于 08-29 07:18

    用于程序代码可视化和监控的对象连接到控制程序

    简介 在此示例中,将用于程序代码可视化和监控的对象连接到控制程序。您先前已在 STEP 7 中创建了一个程序(用于运输传送带上的生产单位)。您还创建了一个 ProDiag 函数块,在其中设置对操作数
    的头像 发表于 08-21 10:11 750次阅读
    用于<b class='flag-5'>程序代码</b>可视化和监控的对象连接到控制<b class='flag-5'>程序</b>

    西门子博途SCL:REGION:构建程序代码的步骤

    可以使用指令“构建程序代码”,在 SCL 块中构建程序代码并将其分为几个不同区域。
    的头像 发表于 07-31 09:09 4131次阅读

    Cortex-M0/M4芯片是否支持代码保护用户的程序代码吗?

    NuMicro™ Cortex-M0/M4芯片是否支持代码保护用户的程序代码吗?如何解开LOCK位上的用户配置字?
    发表于 06-19 06:02

    使用S32DS生成一些驱动程序代码,使用相同的DS和SDK,为什么构建版本不同?

    我正在使用 S32DS 生成一些驱动程序代码,我发现许多我没有修改的文件(由其他人生成)也发生了变化。唯一的区别是构建版本。 我们使用相同的 DS 和 SDK,为什么构建版本不同?
    发表于 06-12 07:46

    电子琴设计程序代码

    电子琴代码
    发表于 05-26 16:38 3次下载