اطلاعیه

Collapse
No announcement yet.

معرفی تراشه CS5534 مبدل ADC چهار کاناله 24 بیت

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    معرفی تراشه CS5534 مبدل ADC چهار کاناله 24 بیت

    با سلام خدمت دوستان عزیز
    ممکن است روزی احتیاج به پردازش بر روی سیگنال با دقت 24 بیت داشته باشید. همان موقع است که شاید تا حدودی این نوشته بتواند کمک هرچند کوچکی به شما دوستان بکند.
    CS5534 یک تراشه مبدل آنالوگ به دیجیتال با دقت 24 بیت و چهار کانال مجزا است که با استفاده از یک مولتی پلکسر کانال های مختلف آن قابل انتخاب است. در مورد جزییات تراشه بیشتر توضیح خواهم داد.
    نحوه برقراری ارتباط با تراشه با استفاده از پروتکل SPI امکان پذیر است. این تراشه در کل 24 پایه داره که چهار تای آن برای ارتباط SPI و چهار تا دو پایه برای خواندن سیگنال آنالوگ به صورت تکی یا متقارن.
    این تراشه قابل برنامه ریزی است. برای برنامه ریزی آن ابتدا باید با استفاده از میکرو کنترلر دستور مورد نظر رو بهش بدید تا وارد مد دستور یا دیتا بشه. اگر وارد مد دستور شد با ارسال 32 بیت می تونید قسمت های مختلف رو برنامه ریزی کنید. قسمت های مختلف شامل گین قابل تغییر از 1x تا 64x و اضافه کردن آفست به سیگنال ورودی، فعال کردن فیلتر های داخلی و کالیبراسیون و یه چند تا امکانات دیگه.
    جالب این جاست که چتد تا setup داره که می تونید هر کدوم را به صورت مجزا از هم برنامه ریزی کنید تا بتونید روی یک سیگنال چند تنظیمات مشخص متفاوت رو اجرا کنید.
    دیتا ازش گرفتن یه خورده حوصله می خواهد. من تازه باهاش آشنا شدم و بالاخره موفق شدم ازش دیتا بگیرم. حالا تا این مرحله سعی می کنم کمک کنم تا کسانی هم که می خواهند شروع به کار کنند تا این سطح راهنمایی کنم. :icon_razz:
    این تراشه رو از جوان می تونید تهیه کنید. قیمتش هم جدیدا شده 15 تومن. دوکاناله اون 7500 تومنه. تمام سعیم را می کنم تا بتونم سوال هایی در این رابطه پرسیده می شود را جواب بدم.
    پیروز و سربلند باشید.
    آدمی از عالم خاکی نمی آید بدست

    عالمی دیگر بباید ساخت و از نو آدمی
    پردازش تصویر با FPGA از صفر تا انتها
    http://www.eca.ir/forum2/index.php?topic=74299.0

    #2
    پاسخ : معرفی تراشه CS5534 مبدل ADC چهار کاناله 24 بیت

    سلام
    یه سئوال درمورد سمپل ریت این آی سی داشتم.
    ماکزیموم فرکانسی که میشه به ورودیش داد چقدر است؟
    خیلی مهمه.
    با تشکر

    دیدگاه


      #3
      پاسخ : معرفی تراشه CS5534 مبدل ADC چهار کاناله 24 بیت

      سلام
      نرخ نمونه برداری تراشه همانند سایر امکانات آن قابل برنامه ریزی است. می توانید به سادگی نرخ تبدیل بین 6.25 نمونه در ثانیه تا 3840 نمونه در ثانیه را در آن تنظیم کنید. در ضمن ولتاژ تغذیه اون می تونه بین سه تا پنج ولت هم انتخاب شود.
      پیروز و سربلند باشید.
      آدمی از عالم خاکی نمی آید بدست

      عالمی دیگر بباید ساخت و از نو آدمی
      پردازش تصویر با FPGA از صفر تا انتها
      http://www.eca.ir/forum2/index.php?topic=74299.0

      دیدگاه


        #4
        پاسخ : معرفی تراشه CS5534 مبدل ADC چهار کاناله 24 بیت

        سلام
        تراشه CS5532 مبدل 24 بیت دو کاناله رو تست کردم به خوبی جواب می ده فقط کوپل کردن آن با یه تراشه دیگه از همین نوع یه خورده حوصله و دقت می خواهد. ر ضمن تراشه CS5534 رو هم تست کردم به نظرم رسید ممکنه باگ داشته باشه. چون پایه اتصال خازن و پایه ورودی تراشه از داخل به هم وصل شده که باعث جریان کشی بیش از حد مجاز می شه. اتصال داخلی این دوپایه در عضو دیگر خانواده یعنی CS5532 وجود ندارد و منظقی هم نیست که چنین اتصالی وجود داشته باشه.

        پیروز و سربلند باشید.
        آدمی از عالم خاکی نمی آید بدست

        عالمی دیگر بباید ساخت و از نو آدمی
        پردازش تصویر با FPGA از صفر تا انتها
        http://www.eca.ir/forum2/index.php?topic=74299.0

        دیدگاه


          #5
          پاسخ : معرفی تراشه CS5534 مبدل ADC چهار کاناله 24 بیت

          با سلام
          نمی دونم توی این مدت کسی سعی کرده با تراشه CS5534 کار کنه یا نه. توی مدتی که مشغول کار کردن با این تراشه بودم به مشکل های زیادی برخورد کردم که نتوانستم حلشان کنم. یکی از این مشکل ها همان موردی بود که چندی پیش به اطلاعتان رساندم. حالا به دوستانی که می خواهند از هرچهار کانال تراشه استفاده کنند ولی به مشکل من رسیدند پیشنها می کنم از مدل CS5532 که دوکانال داره استفاده کنند با این تفاوت که از یک مولتی پلکسر آنالوگ برای افزایش تعداد کانال ها استفاده شود. البته می توانید هم زمان از دو تراشه CS5532 استفاده کنید و آن ها را به هم کوپل کنید ولی چون من تجربه این کار را ندارم گفتم به هر حال راهی رو پیشنهاد بدم که خودم قبلا امتحانش کردم و جواب گرفتم و بعدا که کسی به مشکلی برخورد کرد بتونم پاسخی داشته باشم
          دیتاشیت اون رو به فارسی ترجمه کردم. البته ترجمه خط به خط نیست و بیشتر مفهومیه بعضی قسمت ها رو هم که فکر می کردم ممکنه باعث سخن فرسایی بشه حذف کردم. این فایلی که براتون پلود می کنم گزارش کاری بود که باید تحویل سرپرست تیمی می دادم به خاطر همین ممکنه گاهی نکاتی در آن مطرح شود که شاید در جریان نباشید ولی از دو سه صفحه اول به بعد بیشتر در مورد تراشه گفته شده. امید وارم که از خواندن آن لذت ببرید.
          http://www.4shared.com/document/CZsHKSRc/13_CS5534_Pooya_.html


          پیروز و سربلند باشید
          آدمی از عالم خاکی نمی آید بدست

          عالمی دیگر بباید ساخت و از نو آدمی
          پردازش تصویر با FPGA از صفر تا انتها
          http://www.eca.ir/forum2/index.php?topic=74299.0

          دیدگاه


            #6
            پاسخ : معرفی تراشه CS5534 مبدل ADC چهار کاناله 24 بیت

            نوشته اصلی توسط پویا
            با سلام
            نمی دونم توی این مدت کسی سعی کرده با تراشه CS5534 کار کنه یا نه. توی مدتی که مشغول کار کردن با این تراشه بودم به مشکل های زیادی برخورد کردم که نتوانستم حلشان کنم. یکی از این مشکل ها همان موردی بود که چندی پیش به اطلاعتان رساندم. حالا به دوستانی که می خواهند از هرچهار کانال تراشه استفاده کنند ولی به مشکل من رسیدند پیشنها می کنم از مدل CS5532 که دوکانال داره استفاده کنند با این تفاوت که از یک مولتی پلکسر آنالوگ برای افزایش تعداد کانال ها استفاده شود. البته می توانید هم زمان از دو تراشه CS5532 استفاده کنید و آن ها را به هم کوپل کنید ولی چون من تجربه این کار را ندارم گفتم به هر حال راهی رو پیشنهاد بدم که خودم قبلا امتحانش کردم و جواب گرفتم و بعدا که کسی به مشکلی برخورد کرد بتونم پاسخی داشته باشم
            دیتاشیت اون رو به فارسی ترجمه کردم. البته ترجمه خط به خط نیست و بیشتر مفهومیه بعضی قسمت ها رو هم که فکر می کردم ممکنه باعث سخن فرسایی بشه حذف کردم. این فایلی که براتون پلود می کنم گزارش کاری بود که باید تحویل سرپرست تیمی می دادم به خاطر همین ممکنه گاهی نکاتی در آن مطرح شود که شاید در جریان نباشید ولی از دو سه صفحه اول به بعد بیشتر در مورد تراشه گفته شده. امید وارم که از خواندن آن لذت ببرید.
            http://www.4shared.com/document/CZsHKSRc/13_CS5534_Pooya_.html


            پیروز و سربلند باشید
            4shared فیلتر شده اگه امکان داره مجددا جای دیگه فایل رو بزارید

            دیدگاه


              #7
              پاسخ : معرفی تراشه CS5534 مبدل ADC چهار کاناله 24 بیت

              لطفا ترجمه رو در upload.ir بذارید که فیلتر نباشه
              و از تجربه ای که در کار کردن با این آیسی بدست آوردید هم ، در اینجا قرار بدید
              اکثرا از ad7730 7715 7780 استفاده می کنند ، مزیت این مبدل نسبت به اونا چی ؟
              کشیدن pcb این مبدل هم ، کار سختی هست
              شما فوت پرینت 5532 رو اگر دارید ، قرار بدید
              اگر هم تونستید مداری رو که با اون ساختید رو قرار بدید و از دقتش در عمل بگید

              دیدگاه


                #8
                پاسخ : معرفی تراشه CS5534 مبدل ADC چهار کاناله 24 بیت

                دیدگاه


                  #9
                  پاسخ : معرفی تراشه CS5534 مبدل ADC چهار کاناله 24 بیت

                  سلام
                  من برای ارتباط با CS5532 از این کد استفاده کردم اما کار نمی کنه و تو حلقه مشخص شده گیر می کنه مطمعن نیستم که کد درست باشه کسی می تونه کمک کنه
                  کد:
                  //Include Headers --------------------------------------------------------------
                  #include <ValuesConversion.h>
                  
                  //Define LCD Pins --------------------------------------------------------------
                  sbit LCD_RS at GPIOB_ODR.B12;
                  sbit LCD_EN at GPIOB_ODR.B13;
                  sbit LCD_D4 at GPIOB_ODR.B14;
                  sbit LCD_D5 at GPIOB_ODR.B15;
                  sbit LCD_D6 at GPIOA_ODR.B8;
                  sbit LCD_D7 at GPIOA_ODR.B9;
                  
                  //Define EX ADC PINs -----------------------------------------------------------
                  sbit Ex_ADC_Ramp_Pin0 at GPIOA_ODR.B0;
                  sbit Ex_ADC_Ramp_Pin1 at GPIOA_ODR.B1;
                  sbit Ex_ADC_Ramp_Pin2 at GPIOA_ODR.B2;
                  sbit Ex_ADC_Ramp_Pin3 at GPIOA_ODR.B3;
                  sbit Ex_ADC_Ramp_Pin4 at GPIOA_ODR.B4;
                  sbit Ex_ADC_Ramp_Pin5 at GPIOA_ODR.B5;
                  sbit Ex_ADC_Ramp_Pin6 at GPIOA_ODR.B6;
                  sbit Ex_ADC_Ramp_Pin7 at GPIOA_ODR.B7;
                  sbit Ex_ADC_Ramp_Pin8 at GPIOB_ODR.B0;
                  sbit Ex_ADC_Ramp_Pin9 at GPIOB_ODR.B1;
                  sbit Ex_ADC_Ramp_Pin10 at GPIOB_ODR.B2;
                  sbit Ex_ADC_Ramp_Pin11 at GPIOB_ODR.B10;
                  sbit Ex_ADC_Ramp_Pin12 at GPIOB_ODR.B11;
                  
                  sbit Ex_ADC_End_Flag at GPIOC_IDR.B15;
                  
                  //------------------------------------------------------------------------------
                  sbit Spi_CLK at GPIOB_ODR.B9;
                  sbit Spi_SDI at GPIOB_IDR.B8;
                  sbit Spi_SDO at GPIOB_ODR.B7;
                  
                  unsigned char CS5532_Buffer[4];
                  
                  void CS5532_WR_Byte(unsigned char dat) {
                  
                    unsigned char i;
                  
                   for(i=0;i<8;i++) {
                  
                    if((dat&0x80) == 0x80)
                     Spi_SDO = 1;
                    else
                     Spi_SDO = 0;
                     
                    Delay_us(20);
                    Spi_CLK = 1;
                    Delay_us(20);
                    Spi_CLK = 0;
                    Delay_us(20);
                    
                    dat <<= 1;
                   }
                  }
                  
                  unsigned char CS5532_RD_Byte(void) {
                  
                    unsigned char i,temp=0;
                  
                   for(i=0;i<8;i++) {
                  
                    Spi_CLK = 1;
                    Delay_us(20);
                  
                    if(Spi_SDI)
                     temp |= 1;
                     
                    temp <<= 1;
                  
                    Spi_CLK = 0;
                    Delay_us(20);
                   }
                   return temp;
                  }
                  
                  void CS5532_RESET(void) {
                  
                   unsigned char i;
                  
                   Spi_CLK = 0;
                   Spi_SDO = 0;
                   Spi_SDI = 0;
                   
                   for(i=0;i<15;i++)
                    CS5532_WR_Byte(0xFF);
                  
                   CS5532_WR_Byte(0xFE);
                  }
                  
                  void CS5532_WR_Reg(unsigned char cmd,unsigned long dat) {
                  
                    unsigned char temp[4];
                    unsigned long temp32;
                  
                   temp32 = dat;
                   temp32 >>= 24;
                   temp[0] = (unsigned char)temp32;
                  
                   temp32 = dat;
                   temp32 >>= 16;
                   temp[1]=(unsigned char)temp32;
                  
                   temp32 = dat;
                   temp32 >>= 8;
                   temp[2]=(unsigned char)temp32;;
                  
                   temp[3]=(unsigned char)dat;
                  
                   CS5532_WR_Byte(cmd);
                   CS5532_WR_Byte(temp[0]);
                   CS5532_WR_Byte(temp[1]);
                   CS5532_WR_Byte(temp[2]);
                   CS5532_WR_Byte(temp[3]);
                  }
                  
                  unsigned long CS5532_RD_Reg(unsigned char cmd) {
                  
                    unsigned long rv=0;
                  
                   CS5532_WR_Byte(cmd);
                   CS5532_Buffer[3] = CS5532_RD_Byte();
                   CS5532_Buffer[2] = CS5532_RD_Byte();
                   CS5532_Buffer[1] = CS5532_RD_Byte();
                   CS5532_Buffer[0] = CS5532_RD_Byte();
                  
                   rv=CS5532_Buffer[3];
                   rv<<=8;
                   rv|=CS5532_Buffer[2];
                   rv<<=8;
                   rv|=CS5532_Buffer[1];
                   rv<<=8;
                   rv|=CS5532_Buffer[0];
                  
                   return(rv);
                  }
                  
                  void CS5532_Init(void) {
                  
                   unsigned char i;
                  
                   Delay_ms(100);
                   CS5532_RESET();
                   Delay_ms(100);
                   CS5532_WR_Reg(0x03,0x20000000);
                   Delay_ms(100);
                   CS5532_WR_Reg(0x03,0x00000000);
                   Delay_ms(100);
                   
                   do {
                    CS5532_RD_Reg(0x0B);
                   }while(CS5532_Buffer[3]&0x10);
                   
                   //CS5532_WR_Byte(0x45);
                   //for(i=0;i<4;i++) {
                  
                   // CS5532_WR_Byte(0x30);
                   // CS5532_WR_Byte(0x80);
                   // CS5532_WR_Byte(0x00);
                   // CS5532_WR_Byte(0xC0);
                   //}
                  }
                  
                  unsigned long CS5532_Get_Sample(void) {
                  
                    unsigned long temp;
                    unsigned long tmp[3];
                  
                   CS5532_RD_Reg(0x0C);
                  
                   CS5532_Buffer[0] = CS5532_RD_Byte();
                   CS5532_Buffer[1] = CS5532_RD_Byte();
                   CS5532_Buffer[2] = CS5532_RD_Byte();
                   CS5532_Buffer[3] = CS5532_RD_Byte();
                  
                   tmp[0] = CS5532_Buffer[0];
                   tmp[1] = CS5532_Buffer[1];
                   tmp[2] = CS5532_Buffer[2];
                  
                   tmp[0] <<= 16;
                   tmp[1] <<= 8;
                  
                   tmp[2] += tmp[0];
                   tmp[2] += tmp[1];
                  
                   temp = tmp[2];
                   temp <<= 8;
                   temp >>= 8;
                  
                   return(temp);
                  }
                  
                  void main() {
                  
                    unsigned long Sample=0,Ring;
                    unsigned char Text[16];
                  
                   GPIO_Config(&GPIOA_BASE,
                   _GPIO_PINMASK_0 | _GPIO_PINMASK_1 | _GPIO_PINMASK_2 | _GPIO_PINMASK_3 |
                   _GPIO_PINMASK_4 | _GPIO_PINMASK_5 | _GPIO_PINMASK_6 | _GPIO_PINMASK_7 |
                   _GPIO_PINMASK_8 | _GPIO_PINMASK_9 ,
                   _GPIO_CFG_DIGITAL_OUTPUT | _GPIO_CFG_SPEED_MAX | _GPIO_CFG_OTYPE_PP);
                  
                   GPIO_Config(&GPIOB_BASE,
                   _GPIO_PINMASK_0 | _GPIO_PINMASK_1 | _GPIO_PINMASK_2 | _GPIO_PINMASK_10 |
                   _GPIO_PINMASK_11| _GPIO_PINMASK_12 | _GPIO_PINMASK_13 | _GPIO_PINMASK_14 |
                   _GPIO_PINMASK_15| _GPIO_PINMASK_7 | _GPIO_PINMASK_9 ,
                   _GPIO_CFG_MODE_OUTPUT | _GPIO_CFG_SPEED_MAX | _GPIO_CFG_OTYPE_PP);
                  
                   GPIO_Config(&GPIOB_BASE,
                   _GPIO_PINMASK_8 ,
                   _GPIO_CFG_MODE_INPUT | _GPIO_CFG_SPEED_MAX | _GPIO_CFG_PULL_NO);
                  
                   GPIO_Config(&GPIOC_BASE,
                   _GPIO_PINMASK_15 ,
                   _GPIO_CFG_MODE_INPUT | _GPIO_CFG_SPEED_MAX | _GPIO_CFG_PULL_NO);
                  
                   //GPIO_Config(&GPIOD_BASE,
                   //_GPIO_PINMASK_0 | _GPIO_PINMASK_1 ,
                   //_GPIO_CFG_MODE_OUTPUT | _GPIO_CFG_SPEED_MAX | _GPIO_CFG_OTYPE_PP);
                  
                   Delay_ms(1000);
                  
                   CS5532_Init();
                  
                   Lcd_Init();
                   Lcd_Cmd(_LCD_CLEAR);
                   Lcd_Cmd(_LCD_CURSOR_OFF);
                   Lcd_Out_CP("Starting...");
                   Delay_ms(1000);
                   Lcd_Cmd(_LCD_CLEAR);
                  
                   while(1) {
                  
                    Sample = CS5532_Get_Sample();
                    //for(Ring=0;Ring<20;Ring++) {
                  
                     //Sample += Ex_ADC_Read();
                  
                    //}
                  
                    //Sample /= 20;
                    
                    //Delay_ms(100);
                  
                    LongToStr(Sample,Text);
                    AlignStrLeft(Text);
                    Lcd_Out(1,1,Text);
                    Lcd_Out_CP("    ");
                   }
                  }

                  دیدگاه


                    #10
                    پاسخ : معرفی تراشه CS5534 مبدل ADC چهار کاناله 24 بیت

                    سلام
                    من توانسته ام با رجیسترهای CS5532 ارتباط برقرار کنم بطوریکه هر عددی را در رجیستر خاص میریزم دقیقا همان عدد را میخوانم و وقتی در حالت مد مداوم قرار میدهم فقط عدد 0 خوانده میشود لطفا راهنمایی فرمایید.

                    دیدگاه


                      #11
                      پاسخ : معرفی تراشه CS5534 مبدل ADC چهار کاناله 24 بیت

                      نمی دونم دوستان چرا به تاریخ پست ها دقت نمی کنن.
                      در زیر این نقاب چیزی بیشتر از گوشت هست. در زیر این نقاب یک ایده هست و ایده ها ضدگلوله هستند.

                      1-به اندازه ی باورهای هر کسی ؛ با او حرف بزن …. بیشتر که بگویی ، تو را احمق فرض خواهد کرد …!!!
                      2-تنها دو گروه نمى توانند افکار خود را عوض کنند: دیوانگان تیمارستان و مردگان گورستان.
                      3-آدم ها مثل عکس ها هستند: زیاد بزرگشون کنی ، کیفیتشون میاد پایین!

                      دیدگاه


                        #12
                        پاسخ : معرفی تراشه CS5534 مبدل ADC چهار کاناله 24 بیت

                        دوست عزیز لطفا فایل که ترجمه کردین برای این آیسی قرار می دهید ما هم استفاده نمائیم
                        با تشکر
                        نوشته اصلی توسط pooyafaroka نمایش پست ها
                        با سلام
                        نمی دونم توی این مدت کسی سعی کرده با تراشه CS5534 کار کنه یا نه. توی مدتی که مشغول کار کردن با این تراشه بودم به مشکل های زیادی برخورد کردم که نتوانستم حلشان کنم. یکی از این مشکل ها همان موردی بود که چندی پیش به اطلاعتان رساندم. حالا به دوستانی که می خواهند از هرچهار کانال تراشه استفاده کنند ولی به مشکل من رسیدند پیشنها می کنم از مدل CS5532 که دوکانال داره استفاده کنند با این تفاوت که از یک مولتی پلکسر آنالوگ برای افزایش تعداد کانال ها استفاده شود. البته می توانید هم زمان از دو تراشه CS5532 استفاده کنید و آن ها را به هم کوپل کنید ولی چون من تجربه این کار را ندارم گفتم به هر حال راهی رو پیشنهاد بدم که خودم قبلا امتحانش کردم و جواب گرفتم و بعدا که کسی به مشکلی برخورد کرد بتونم پاسخی داشته باشم
                        دیتاشیت اون رو به فارسی ترجمه کردم. البته ترجمه خط به خط نیست و بیشتر مفهومیه بعضی قسمت ها رو هم که فکر می کردم ممکنه باعث سخن فرسایی بشه حذف کردم. این فایلی که براتون پلود می کنم گزارش کاری بود که باید تحویل سرپرست تیمی می دادم به خاطر همین ممکنه گاهی نکاتی در آن مطرح شود که شاید در جریان نباشید ولی از دو سه صفحه اول به بعد بیشتر در مورد تراشه گفته شده. امید وارم که از خواندن آن لذت ببرید.



                        پیروز و سربلند باشید

                        دیدگاه

                        لطفا صبر کنید...
                        X