0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CS5532-PIC程序代碼解析

2oON_changxuemc ? 來源:未知 ? 作者:易水寒 ? 2017-12-22 10:19 ? 次閱讀

CS5532-PIC源程序代碼(已經(jīng)調(diào)試驗(yàn)證)

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

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 不具有上電復(fù)位功能,要

//初始化模數(shù)轉(zhuǎn)換器,必須執(zhí)行軟件復(fù)位,軟件復(fù)

//位可通過串口初始化序列對(duì)串口復(fù)位實(shí)現(xiàn)。通過

//發(fā)送15 個(gè)字節(jié)的SYNC1(0xFFH),然后發(fā)送1

//個(gè)字節(jié)的SYNC0(0XFEH)可將串口復(fù)位成命

//令模式。

void ad_reset( )

{

cs_clk = 0 ;

cs_cs = 0 ;

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

// 1.復(fù)位部分

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; // 寫 通道 設(shè)置 寄存器

// 120 hz 0x00000000

// 60 hz 0x00800080

mcu_out8bit(0x05);

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

mcu_out8bit(0x00);

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

mcu_out8bit(0x00);

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

mcu_out8bit(0x00);

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

mcu_out8bit(0x00);

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

// ad_dat1=0xc0; //啟動(dòng)轉(zhuǎn)換

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 ;

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

}


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • PIC
    PIC
    +關(guān)注

    關(guān)注

    8

    文章

    507

    瀏覽量

    87615

原文標(biāo)題:CS5532程序代碼

文章出處:【微信號(hào):changxuemcu,微信公眾號(hào):暢學(xué)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SA5532輸出失真的原因?

    本人現(xiàn)在用TI公司的SA5532放大一個(gè)50HZ的工頻信號(hào),輸??范圍為40mv到5V,輸出最大為14V峰峰值,用20V給sa5532供電,輸出失真,峰值頂端到峰值左邊谷值在X軸上的△X=9ms,峰值頂端到峰值右邊谷值在X軸上的△X=11ms,波形峰值向左邊偏移,是什么
    發(fā)表于 09-25 07:57

    EEPROM讀寫程序詳解

    EEPROM(Electrically Erasable Programmable Read-Only Memory)讀寫程序的詳解涉及多個(gè)方面,包括EEPROM的基本工作原理、讀寫流程、編程接口、代碼示例以及注意事項(xiàng)等。以下是對(duì)EEPROM讀寫
    的頭像 發(fā)表于 09-05 12:32 ?2285次閱讀

    兼容CS5532,國產(chǎn)ADC用于高精度溫度測(cè)量系統(tǒng)設(shè)計(jì)

    兼容CS5532,國產(chǎn)ADC用于高精度溫度測(cè)量系統(tǒng)設(shè)計(jì)
    的頭像 發(fā)表于 09-05 10:00 ?678次閱讀
    兼容<b class='flag-5'>CS5532</b>,國產(chǎn)ADC用于高精度溫度測(cè)量系統(tǒng)設(shè)計(jì)

    NE5532和NE5532A有什么區(qū)別?

    NE5532和NE5532A到底有什么區(qū)別,手冊(cè)翻了2遍沒看出來,麻煩指導(dǎo)下。
    發(fā)表于 08-20 08:31

    SA5532和SA5532A區(qū)別是什么,‘A’代表什么含義?

    SA5532和SA5532A區(qū)別,‘A’代表什么含義?
    發(fā)表于 08-15 06:22

    EN8F1823E完全替代PIC16F883,PIC16F1883,PIC16F1936,PIC16F1937

    PIC
    捷尚微輝芒微MCU單片機(jī)
    發(fā)布于 :2024年07月30日 16:59:15

    CS1237 / CS1238應(yīng)用原理圖及STC的示例代碼

    CS1237 / CS1238應(yīng)用原理圖及STC的示例代碼。 郵箱381005883@QQ.COM
    發(fā)表于 07-23 16:05

    CS1270程序

    做動(dòng)態(tài)稱重傳感器的數(shù)據(jù)采集,考慮用CS1270,有范例程序?
    發(fā)表于 07-22 11:14

    NE5532x和SA5532x雙通道低噪聲運(yùn)算放大器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《NE5532x和SA5532x雙通道低噪聲運(yùn)算放大器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 06-06 10:02 ?1次下載
    NE<b class='flag-5'>5532</b>x和SA<b class='flag-5'>5532</b>x雙通道低噪聲運(yùn)算放大器數(shù)據(jù)表

    求一份CS1237的驅(qū)動(dòng)程序代碼

    求一份STMM32F103C8T6驅(qū)動(dòng)CS1237的驅(qū)動(dòng)程序,那位大佬發(fā)一下。郵箱2864165038@qq.com
    發(fā)表于 04-20 10:56

    國產(chǎn)ADC可替代CS5532BS在工業(yè)自動(dòng)化和精密測(cè)量中應(yīng)用

    國產(chǎn)ADC可替代CS5532BS在工業(yè)自動(dòng)化和精密測(cè)量中應(yīng)用
    的頭像 發(fā)表于 03-19 09:59 ?581次閱讀
    國產(chǎn)ADC可替代<b class='flag-5'>CS5532</b>BS在工業(yè)自動(dòng)化和精密測(cè)量中應(yīng)用

    模數(shù)轉(zhuǎn)換器 SIG5531A 國產(chǎn)平替 CS5531AS

    ADC with PGA and Reference Compatible Parts CS5531AS/CS5532AS/CS5533AS/CS5534AS pin/regist
    發(fā)表于 03-11 12:56

    優(yōu)化單片機(jī)程序代碼的策略與方法

    程序中使用的用戶標(biāo)識(shí)符除要遵循標(biāo)識(shí)符的命名規(guī)則以外,一般不要用代數(shù)符號(hào)(如a、b、x1、y1)作為變量名,應(yīng)選取具有相關(guān)含義的英文單詞(或縮寫)或漢語拼音作為標(biāo)識(shí)符,以增加程序的可讀性,如:count、number1、red、work 等。
    發(fā)表于 03-11 09:46 ?572次閱讀
    優(yōu)化單片機(jī)<b class='flag-5'>程序代碼</b>的策略與方法

    使用STM32CubeMX初始化STM32F103程序代碼默認(rèn)打開了哪些中斷?是否可以暫時(shí)性關(guān)閉?

    使用STM32CubeMX初始化STM32F103程序代碼,在不使用任何外設(shè)中斷的情況下,系統(tǒng)會(huì)默認(rèn)打開哪些中斷?這些中斷又可以怎樣暫時(shí)性關(guān)閉?
    發(fā)表于 03-11 07:22

    ne5532芯片功能和作用 ne5532工作電壓范圍

    NE5532芯片是一種雙運(yùn)算放大器芯片,它是由德州儀器公司(Texas Instruments)推出的。NE5532芯片是設(shè)計(jì)用于高質(zhì)量音頻放大器和前置放大器電路。它具有低噪聲、低失真和寬帶寬等特點(diǎn)
    的頭像 發(fā)表于 01-24 16:49 ?1w次閱讀