搜索
bottom↓
回复: 26

CS5532/CS5534如何设置偏移寄存器、增益寄存器?

[复制链接]

出0入0汤圆

发表于 2010-12-24 11:13:30 | 显示全部楼层 |阅读模式
CS5532/CS5534的datasheet看了3遍,没看明白怎样设置其偏移寄存器、增益寄存器,应该将其偏移寄存器、增益寄存器设置成什么数值?设置的依据是什么?
向通道设置寄存器写数据,怎样知道是向哪个设置单元(CS5534有8个setup)写的数据?

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

 楼主| 发表于 2010-12-24 11:30:57 | 显示全部楼层
通道1对应setup1、setup2;
通道2对应setup3、setup4;
通道3对应setup5、setup6;
通道4对应setup7、setup8;

是这样理解的吗?

出0入0汤圆

发表于 2010-12-24 16:41:44 | 显示全部楼层
你说的这两个寄存器我没有用到过。
setup是个配置表,使用之前要配置setup。setup1里面可以是配置为通道1,也可以通道2.
采集的时候就可以指定用哪一个setup进行采集。
一般的使用步骤是这样的:
void CS5532_Serial_Reset(void)
{
   unsigned long tmp;
   for(tmp=16;tmp;tmp--) SPI_SST_Send_Byte(0xff);
   SPI_SST_Send_Byte(0xfe);
   delay(1);
}
//*****************************************
void CS5532_System_Reset(void)
{
    SPI_SST_Send_Byte(CMD_WRITE+REG_CONFIG);
    SPI_Send_Long(SYSTEM_RESET);
    delay(1);
    delay(1);
    SPI_SST_Send_Byte(CMD_WRITE+REG_CONFIG);
    SPI_Send_Long(NORMAL_MODE);
    delay(1);

}
//*****************************************
void CS5532_Config(void)
{

    SPI_SST_Send_Byte(CMD_WRITE+REG_CONFIG);
    SPI_Send_Long(NORMAL_MODE+A0_GUARD+VREF_LOW+A0_A1_REG_SETUP+CAL_DATA_PHYSICAL+LINE_FREQ_50);
    delay(1);
    SPI_SST_Send_Byte(CMD_WRITE+CMD_CH1+REG_SETUP);
    SPI_Send_Long(((CSR_CH1+PGA_1+DATARATE_50+BIPOLAR_MODE+START_NO_DELAY+CAL_DATA_CH1)<<16)
                     +(CSR_CH2+PGA_1+DATARATE_6P25+BIPOLAR_MODE+START_NO_DELAY+CAL_DATA_CH2));
    delay(1);
    SPI_SST_Send_Byte(CMD_WRITE+CMD_CH2+REG_SETUP);
    SPI_Send_Long(((CSR_CH3+PGA_1+DATARATE_50+BIPOLAR_MODE+START_NO_DELAY+CAL_DATA_CH3)<<16)
                     +(CSR_CH4+PGA_1+DATARATE_50+BIPOLAR_MODE+START_NO_DELAY+CAL_DATA_CH4));
    delay(1);
    SPI_SST_Send_Byte(START_SINGLE+SETUP1+SELF_OFFSET_CAL);
    delay(30);
    SPI_SST_Send_Byte(START_SINGLE+SETUP3+SELF_OFFSET_CAL);
    delay(30);
    SPI_SST_Send_Byte(START_SINGLE+SETUP4+SELF_OFFSET_CAL);
    delay(30);
}

出0入0汤圆

发表于 2010-12-24 16:43:20 | 显示全部楼层
SPI_SST_Send_Byte(START_SINGLE+SETUP1+NORMAL_CONVERSION);
  data=(long)CS5534_Get_Result();

出0入0汤圆

 楼主| 发表于 2010-12-24 19:32:18 | 显示全部楼层
通道设置寄存器中的G2-G0(增益位)是用来设置增益的,还是用来设置模拟量输入范围的?

出0入0汤圆

发表于 2010-12-27 13:06:22 | 显示全部楼层
内部可编程增益放大器,PGA,小信号可以放大。

出0入0汤圆

发表于 2011-1-19 09:16:24 | 显示全部楼层
回复【楼主位】bioe
cs5532/cs5534的datasheet看了3遍,没看明白怎样设置其偏移寄存器、增益寄存器,应该将其偏移寄存器、增益寄存器设置成什么数值?设置的依据是什么?
向通道设置寄存器写数据,怎样知道是向哪个设置单元(cs5534有8个setup)写的数据?
-----------------------------------------------------------------------

楼主你好,我在使用CS5530  碰到了类似你得困惑,在进行系统校准(包括偏移校准和增益校准)时,是怎么样的工作过程?怎样来写程序?  我是这样想的 偏移校准的值是用来修正地输入时的输出偏差,(但是我怎么知道这个写入值应该是多少呢?难道要把输入端接地然后读出转换值然后再 算出偏移再写入 Offset Register  ?) 对于增益寄存器 需要输入满量程来校准,这又是怎么样的工作过程呢 ?

出0入0汤圆

 楼主| 发表于 2011-2-24 10:31:39 | 显示全部楼层
回复【2楼】jackwang123
setup是个配置表,使用之前要配置setup
-----------------------------------------------------------------------

首先谢谢你。
请问setup如何配置?你的程序我没看明白。setup是如何配置的?

出0入0汤圆

 楼主| 发表于 2011-2-24 10:33:13 | 显示全部楼层
回复【6楼】cabbageybc
-----------------------------------------------------------------------

你好,我还没有进行系统校准。继续交流

出0入0汤圆

发表于 2011-2-24 10:59:56 | 显示全部楼层
setup1~8是配置表,其中的G2-G0设置增益的,这个也就确定了输入的范围,输入范围=(参考正-参考负)/(增益*A),A与参考电压大于2.5V,或者小于等于2.5V有关。小于等于2.5V时A=1,大于A=2.

setup1~8与实际的物理通道关联是在你发出转换命令时指定的。所以一个setup可以对应几个通道,一个通道也可以对应几个setup,但转换时肯定只有一个setup起作用。

出0入0汤圆

发表于 2011-2-24 11:25:13 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-2-24 17:05:56 | 显示全部楼层
回复【9楼】size327948964
一个setup可以对应几个通道,一个通道也可以对应几个setup,但转换时肯定只有一个setup起作用。
-----------------------------------------------------------------------

转换时肯定只有一个setup起作用,请问这个起作用的setup是怎样与通道对应的?

出0入0汤圆

发表于 2011-2-24 20:01:22 | 显示全部楼层
mark 准备弄这个片子来做点东西,不知道使用过后各位的感受如何,精度,可靠性等等

不知道哪里有可靠的商家卖这个片子的CS5534-BSZ,想弄2片来做做看

出0入0汤圆

 楼主| 发表于 2011-2-25 10:38:44 | 显示全部楼层
CS5532/4 数据手册上讲到:对某一指定的物理通道可使用多个设置单元(Setup)设置,请问如何指定通道,如何对指定的通道使用多个设置单元设置?

出0入0汤圆

发表于 2011-2-25 11:53:58 | 显示全部楼层
看3遍不够,继续看,知道明了为止

出0入0汤圆

发表于 2011-2-25 12:42:03 | 显示全部楼层
回复【13楼】bioe
cs5532/4 数据手册上讲到:对某一指定的物理通道可使用多个设置单元(setup)设置,请问如何指定通道,如何对指定的通道使用多个设置单元设置?
-----------------------------------------------------------------------

1转换命令指定需要转化所用到的Setup
PERFORM CONVERSION
  D7(MSB) D6   D5    D4     D3   D2 D1 D0
      1   MC  CSRP2 CSRP1 CSRP0  0  0  0
CSRP [2:0] (Channel Setup Register Pointer Bits)
000 Setup 1 (All devices)
001 Setup 2 (All devices)
010 Setup 3 (All devices)
011 Setup 4 (All devices)
100 Setup 5 (All devices)
101 Setup 6 (All devices)
110 Setup 7 (All devices)
111 Setup 8 (All devices)
2Setup寄存器中有物理通道的设置为,在这里对应物理通道
D31(MSB) D30  D29  D28  D27  D26  D25  D24  D23  D22 D21 D20 D19 D18 D17 D16
CS1      CS0   G2   G1   G0  WR3  WR2  WR1  WR0  U/B OL1 OL0  DT OCD OG1 OG0
CS1-CS0 (Channel Select Bits) [31:30] [15:14]
00 Select physical channel 1 (All devices)
01 Select physical channel 2 (All devices)
10 Select physical channel 3 (CS5533/34 only)
11 Select physical channel 4 (CS5533/34 only)

出0入0汤圆

发表于 2011-2-25 12:44:08 | 显示全部楼层
setup1~8是配置表,其中的g2-g0设置增益的,这个也就确定了输入的范围,输入范围=(参考正-参考负)/(增益*a),a与参考电压大于2.5v,或者小于等于2.5v有关。小于等于2.5v时a=1,大于a=2.
setup1~8与实际的物理通道关联是在你发出转换命令时指定的。所以一个setup可以对应几个通道,一个通道也可以对应几个setup,但转换时肯定只有一个setup起作用。
-----------------------------------------------------------------------

这里写错了,转换时指定setup,setup设定时指定对应的物理通道。

出0入0汤圆

 楼主| 发表于 2011-3-9 14:43:34 | 显示全部楼层
CS5534的偏移寄存器设置为0x00000000,输入电压为9mV到18mV时,ADC转换得到的16进制数据计算后一直为9.7930mV,这是为何?

CS5534的偏移寄存器设置为0x8000ff00,输入电压变化时,ADC转换数据成了0。

CS5534的偏移寄存器如何设置???

出0入0汤圆

发表于 2011-5-6 16:23:12 | 显示全部楼层
SPI_Send_Long(((CSR_CH1+PGA_1+DATARATE_50+BIPOLAR_MODE+START_NO_DELAY+CAL_DATA_CH1)<<16)
                     +(CSR_CH2+PGA_1+DATARATE_6P25+BIPOLAR_MODE+START_NO_DELAY+CAL_DATA_CH2));
这就是配置setup1 和setup2 。
CSR_CH2+PGA_1+DATARATE_6P25+BIPOLAR_MODE+START_NO_DELAY+CAL_DATA_CH2));
表示:物理通道1,pga倍数为1 采样速率6.25次,双向、立即采集、加校正值。


回复【17楼】bioe
-----------------------------------------------------------------------
你去搜一个cs5532的中文文档看看就明白了。
http://soft.laogu.com/sharefile/cs5532.pdf

出0入0汤圆

发表于 2011-8-9 16:37:19 | 显示全部楼层
正在使用 CS5532,学习了

出0入0汤圆

发表于 2011-9-19 14:48:54 | 显示全部楼层
CS5532这么多人都在用,怎么没有发现高手呢

出0入0汤圆

发表于 2011-9-20 09:16:10 | 显示全部楼层
高手在哪里啊,我也是这个问题,按照手册的算法,怎么也算不出信号为±5mv的增益是多少,偏移又该是多少

出0入0汤圆

发表于 2011-9-23 21:17:19 | 显示全部楼层
上个源程序吧 网上找的 没看懂
#include "reg51.h"   //
#include "stdio.h"
#include "intrins.h"
#include "stdlib.h"
#include "absacc.h"
#define uchar unsigned char
// Original design board
sbit CS5532_CS=P1^2;
sbit CS5532_SDI=P1^3;
sbit CS5532_SCLK=P1^5;
sbit CS5532_SDO=P2^4;
// all design board ?
sbit CS5532_A0=P1^6;
sbit CS5532_A1=P1^7;

#define RxdTxd4b_0 DBYTE[0x20]
#define RxdTxd4b_1 DBYTE[0x21]
#define RxdTxd4b_2 DBYTE[0x22]
#define RxdTxd4b_3 DBYTE[0x23]

uchar idata RxdTxd4b[4];
void CS5532_Txd(uchar);
void CS5532_Txd_init(uchar);
void read_reg(uchar address_pt);
void read_data(uchar address_pt);
void read_data1(uchar address_pt);
void CS5532_init(void);

void main(void)
{
   
   uchar i,k,address_pt;
   uchar flag="0";
   address_pt = 32;     // RAM 数据区起始地址
   CS5532_init();
   for(k=0;k<20;k++) _nop_();
//************************************************
// 系统软复位( CS5532_init() 包含该部分)
   
   CS5532_Txd(0x03);    // Soft Reset
   CS5532_Txd(0x2A);
   CS5532_Txd(0x00);
   CS5532_Txd(0x04);
   CS5532_Txd(0x00);
   CS5532_Txd(0x0B);    // Read Config Reg
   DBYTE[address_pt++]=0x0B;//问什么要写这个呢
   read_reg(address_pt);
   address_pt = address_pt +4;
   CS5532_Txd(0x0B);    // Read Config Reg
   DBYTE[address_pt++]=0x0B;
   read_reg(address_pt);
   address_pt = address_pt +4;
//////////////////////////////////////////////
   CS5532_Txd(0x05);    // Setup REG
   CS5532_Txd(0x32);
   CS5532_Txd(0x34);
   CS5532_Txd(0x00);
   CS5532_Txd(0x00);

   CS5532_Txd(0x03);    // Config ReG
   CS5532_Txd(0x40);
   CS5532_Txd(0x00);
   CS5532_Txd(0x00);
   CS5532_Txd(0x00);
   CS5532_Txd(0x03);    // Config ReG
   CS5532_Txd(0xC0);
   CS5532_Txd(0x00);
   CS5532_Txd(0x00);
   CS5532_Txd(0x00);
   CS5532_Txd(0x03);    // Config ReG
   CS5532_Txd(0x01);
   CS5532_Txd(0x80);
   CS5532_Txd(0x00);
   CS5532_Txd(0x00);
   CS5532_Txd(0x0B);    // Read Config Reg
   DBYTE[address_pt++]=0x0B;
   read_reg(address_pt);
   address_pt = address_pt +4;
   CS5532_Txd(0x0D);    // Read Setup Reg
   DBYTE[address_pt++]=0x0D;
   read_reg(address_pt);
   address_pt = address_pt +4;
   _nop_(); _nop_(); _nop_(); _nop_();
address_pt = 52;
CS5532_CS=1;          // 未校准前转换
CS5532_Txd(0x80);
while(CS5532_SDO)
_nop_(); _nop_(); _nop_(); _nop_();
DBYTE[address_pt++]=0x80;
read_data(address_pt);
address_pt = address_pt +4;
_nop_(); _nop_(); _nop_(); _nop_();
/*
CS5532_Txd(0x81);    // 自偏移校准
while(CS5532_SDO)
_nop_(); _nop_(); _nop_(); _nop_();
*/
/*
CS5532_Txd(0x82);    // 自增益校准
while(CS5532_SDO)
_nop_(); _nop_(); _nop_(); _nop_();
*/

CS5532_Txd(0x85);    // 偏移校准
while(CS5532_SDO)
_nop_(); _nop_(); _nop_(); _nop_();

/*
CS5532_Txd(0x86);    // 增益校准
while(CS5532_SDO)
_nop_(); _nop_(); _nop_(); _nop_();
*/
/*
                         // 测试寄存器写回默认值
   CS5532_Txd(0x07);    // REF TEST
   CS5532_Txd(0x00);
   CS5532_Txd(0x00);
   CS5532_Txd(0x1A);
   CS5532_Txd(0x00);
*/
//单次转换
//////////////////////////////////////////////////
for(i=0;i<5;i++)
{
   CS5532_CS=1;
   _nop_(); _nop_(); _nop_(); _nop_();
   _nop_(); _nop_(); _nop_(); _nop_();
   _nop_(); _nop_(); _nop_(); _nop_();
// address_pt = 48;
CS5532_Txd(0x80);
while(CS5532_SDO)
_nop_(); _nop_(); _nop_(); _nop_();
DBYTE[address_pt++]=0x80;
read_data1(address_pt);
address_pt = address_pt +4;
for(k=0;k<20;k++) _nop_();
}
// 连续转换
//***************************************************
     CS5532_Txd(0xC0);//连续转换命令
while(CS5532_SDO)
     _nop_(); _nop_(); _nop_(); _nop_();
for(i=0;i<5;i++)
{
   for(k=0;k<20;k++) _nop_();//delay1
// address_pt = 48;
   while(CS5532_SDO)
     _nop_(); _nop_(); _nop_(); _nop_();
DBYTE[address_pt++]=0xC0;
read_data1(address_pt);
     address_pt = address_pt +4;
   for(k=0;k<20;k++) _nop_(); //delay
}
   for(i=0;i<5;i++)
{
   for(k=0;k<20;k++) _nop_();//delay1
// address_pt = 48;
   while(CS5532_SDO)
     _nop_(); _nop_(); _nop_(); _nop_();
DBYTE[address_pt++]=0xC0;
read_data1(address_pt);
     address_pt = address_pt +4;
   for(k=0;k<20;k++) _nop_(); //delay
}
while(CS5532_SDO)
      _nop_(); _nop_(); _nop_(); _nop_();
     CS5532_Txd(0xFF);
     CS5532_Txd(0x00);
     CS5532_Txd(0x00);
     CS5532_Txd(0x00);
     CS5532_Txd(0x00);
   CS5532_Txd(0x0B);    // Read Config Reg
   DBYTE[address_pt++]=0x0B;
   read_reg(address_pt);
   address_pt = address_pt +4;
   CS5532_Txd(0x03);    // Power Save Select
   CS5532_Txd(0x80);
   CS5532_Txd(0x00);
   CS5532_Txd(0x00);
   CS5532_Txd(0x00);
_nop_();
}


void read_reg(uchar address_pt)
{
uchar i,j;
// EX1=0;     
      CS5532_SCLK = 0; //时钟低
      CS5532_SDI = 0;
      _nop_(); _nop_(); _nop_();
      for(j=0;j<4;j++)
      {
       for(i=0;i<8;i++)
       {
        CS5532_SCLK=1;     //时钟高   
        RxdTxd4b[j]<<=1;     
        if(CS5532_SDO)
         RxdTxd4b[j]|=0x01; //从SDO读取数据
        CS5532_SCLK=0;            //时钟低
        _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
       }
      }
DBYTE[address_pt]=RxdTxd4b[0];
DBYTE[address_pt+1]=RxdTxd4b[1];
DBYTE[address_pt+2]=RxdTxd4b[2];
DBYTE[address_pt+3]=RxdTxd4b[3];
}
void read_data(uchar address_pt)
{
uchar i,j;
// EX1=0;     
       CS5532_SCLK = 0; //时钟低
      CS5532_SDI = 0;
   //for(i=0;i<16;i++)
      _nop_(); _nop_(); _nop_();
      for(i=0;i<8;i++)             // 8 个清串口时钟
      {
     CS5532_SCLK=1;    //时钟高   
        _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
        _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
   
        CS5532_SCLK=0;    //时钟低
_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
     _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
   _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
      }
      for(j=0;j<4;j++)
      {
       for(i=0;i<8;i++)
       {
        CS5532_SCLK=1;     //时钟高   
        RxdTxd4b[j]<<=1;     
        if(CS5532_SDO)
         RxdTxd4b[j]|=0x01; //从SDO读取数据
        CS5532_SCLK=0;            //时钟低
        _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
        _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
       }
      }
DBYTE[address_pt]=RxdTxd4b[0];
DBYTE[address_pt+1]=RxdTxd4b[1];
DBYTE[address_pt+2]=RxdTxd4b[2];
DBYTE[address_pt+3]=RxdTxd4b[3];
}
void CS5532_init(void)
{
uchar k;
//串口初始化
uchar i;
CS5532_CS=1;
for(k=0;k<200;k++) _nop_();
CS5532_CS=0; //片选使能
for(k=0;k<200;k++) _nop_();
CS5532_SDI=0;
CS5532_SDO=1;
CS5532_SCLK=0;
for(i=0;i<180;i++)
CS5532_Txd_init(0xFF);//发送命令
CS5532_Txd(0xFE);
for(i=0;i<18;i++) _nop_();
for(i=0;i<18;i++) _nop_();
//配置寄存器
CS5532_Txd(0x03);
CS5532_Txd(0x20);
CS5532_Txd(0x00);
CS5532_Txd(0x00);
CS5532_Txd(0x00);
for(k=0;k<200;k++) _nop_();
for(k=0;k<200;k++) _nop_();
/*
//配置寄存器
CS5532_Txd(0x03);
CS5532_Txd(0x02);
CS5532_Txd(0x40);
CS5532_Txd(0x00);
CS5532_Txd(0x02);

CS5532_Txd(0x05);
CS5532_Txd(0x84);
CS5532_Txd(0x00);
CS5532_Txd(0x84);
CS5532_Txd(0x00);
*/     
//---------------------------     
}

void CS5532_Txd(uchar dat)//向CS5532写一字节数据
{
     uchar i,k;
     CS5532_SCLK=0;//时钟低   
     CS5532_CS=0;
     _nop_();
//    for(i=0;i<16;i++)
// _nop_();
// _nop_();
_nop_();
_nop_();
     for(i=0;i<8;i++)
     {
      if((dat<<i)&0x80)
       CS5532_SDI=1;   //数据送到SPI的SDI口
       else            
       CS5532_SDI=0;
       _nop_();
    _nop_();
//    for(i=0;i<16;i++)
//    _nop_();
    _nop_();
       CS5532_SCLK=1;    //时钟高   
      for(k=0;k<20;k++) _nop_();
      CS5532_SCLK=0;    //时钟低
      for(k=0;k<20;k++) _nop_();
     }
     CS5532_SDI=0;
}
void CS5532_Txd_init(uchar dat)//向CS5532写一字节数据
{
     uchar i,k;
     CS5532_SCLK=0;//时钟低   
     CS5532_CS=0;
     _nop_();
     for(i=0;i<8;i++)
     {
      if((dat<<i)&0x80)
       CS5532_SDI=1;   //数据送到SPI的SDI口
       else            
       CS5532_SDI=0;
       _nop_();
       CS5532_SCLK=1;    //时钟高   
      for(k=0;k<190;k++) _nop_();
      CS5532_SCLK=0;    //时钟低
       _nop_();
      for(k=0;k<190;k++) _nop_();
     }
}
void read_data1(uchar address_pt)
{
uchar i,j;
// EX1=0;     
       CS5532_SCLK = 0; //时钟低
      CS5532_SDI = 0;
   //for(i=0;i<16;i++)
      _nop_(); _nop_(); _nop_();
      for(i=0;i<8;i++)             // 8 个清串口时钟
      {
     CS5532_SCLK=1;    //时钟高   
        _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
        _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
   
        CS5532_SCLK=0;    //时钟低
_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
     _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
   _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
      }
      for(j=0;j<4;j++)
      {
       for(i=0;i<8;i++)
       {
        CS5532_SCLK=1;     //时钟高   
        RxdTxd4b[j]<<=1;     
        if(CS5532_SDO)
         RxdTxd4b[j]|=0x01; //从SDO读取数据
        CS5532_SCLK=0;            //时钟低
        _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
     _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
        _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
       _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();
       }
      }
   
if(RxdTxd4b[0] > 0x7F)
    {
//     RxdTxd4b[3] = ~RxdTxd4b[3];
       RxdTxd4b[2] = ~RxdTxd4b[2];
      RxdTxd4b[1] = ~RxdTxd4b[1];
       RxdTxd4b[0] = ~RxdTxd4b[0];
}
     DBYTE[address_pt]=RxdTxd4b[0];
     DBYTE[address_pt+1]=RxdTxd4b[1];
     DBYTE[address_pt+2]=RxdTxd4b[2];
     DBYTE[address_pt+3]=RxdTxd4b[3];
}

出0入0汤圆

发表于 2011-9-26 08:48:06 | 显示全部楼层
楼上的程序,我也看过,没有搞懂

出0入0汤圆

发表于 2011-10-11 12:36:54 | 显示全部楼层
cs5532的setup的增益放大倍数是不是有问题啊?

我设置setup1的gain=1,setup2的gain=2,
在相同的输入信号下,分别转换一次,但转换后的结果第二次只比第一次稍微增大,远不是理论上的2倍。

有同学碰到类似的问题吗?不知是何原因?

出0入0汤圆

发表于 2011-10-11 12:41:56 | 显示全部楼层
cs5532我使用了好长时间,应该说比较熟悉。不过,我在尝试不同的增益倍数时出现问题。有兴趣的朋友可以qq交流,705499586

出0入0汤圆

发表于 2013-8-22 16:42:13 | 显示全部楼层
求个stm32下的驱动程序.thanks.zhiyukai@sina.com
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 16:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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