اطلاعیه

Collapse
No announcement yet.

ارتباط با SPI در LPC1768

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

    ارتباط با SPI در LPC1768

    سلام دوستان و اساتید محترم
    من یک مبدل انا لوگ دارم مدل CS5532 که میخواستم از طریق SPI به 1768 وصل کنم و یکسری دستورات مربوطه رو به اون بفرستم و مقدار تبدیل شده رو از مبدل بخونم
    توی مثالهای CMSIS خود فیلیپس در موردش مثال هست که بصورت زیر هستش
    xferConfig.tx_data = Tx_Buf;
    xferConfig.rx_data = Rx_Buf;
    xferConfig.length = BUFFER_SIZE;
    SPI_ReadWrite(LPC_SPI, &xferConfig, SPI_TRANSFER_POLLING);

    حالا از دوستان سوالی که دارم اینه که من چطوری دستورات رو بفرستم یعنی با چه دستوری و برعکس با چه دستوری بخونم
    در ضمن مبدل من SLAVE هستش و میکروی من MASTER

    با تشکر فراوان

    #2
    پاسخ : ارتباط با SPI در LPC1768

    آقا مرتضی oo: این ADC شما n تا رجیستر داره چند تا ورودی و چند تا بافر داره !
    همینجوری نمیشه گفت چی کار کنی ! این مدل آی سی ها اکثرا اگه پشتیبانی داشته باشن یه Library دارن واسه خودشون که کارو راحت می کنه !
    با این چند تا دستور اونم یه Structure خفن اون وست که معلوم نیست چیه که نمیشه حدس زد!
    مثل اینه که یه آجر برداری بگی چجوری میشه خونه ساخت، فیلیپس از این آجر استفاده کرده !

    یه نگاهی به دیتا شیت بندازی دستت میاد، اگه حالشو نداری برو دنبال Library :
    www.cirrus.com/en/pubs/proDatasheet/CS5532-34-BS_F3.pdf

    دیدگاه


      #3
      پاسخ : ارتباط با SPI در LPC1768

      آقای خوانساری
      من در مورد رجیستر های adc مشکلی ندارم و فقط میخوام بدونم چطور میتونم یک دستور مثلا 0x8000000 رو به مبدل بفرستم و بعد چطور دیتای مبدل رو بخونم ؟

      متغیری که باید برای ارسال دستور از اون استفاده کنم ایا همون tx_buf هستش؟

      یا برعکس متغیری که باید خونده بشه همون rx_buf هست؟
      اگه ممکنه خط برنامه مربوطه رو برام بزارین

      در ضمن در مورد لایبراری گفتین برای این مبدل ایا لایبراری هست که کار برنامه نویسی رو راحت بکنه؟

      با تشکر

      دیدگاه


        #4
        پاسخ : ارتباط با SPI در LPC1768

        کار با cs5532 چه جوری ؟
        سخته ؟ نکته خاصی داره ؟
        تو عمل چه جوری ؟
        فوت پرینتش رو اگر دارید قرار بدید :nice:

        دیدگاه


          #5
          پاسخ : ارتباط با SPI در LPC1768

          سلام یه هفته هستش نمی تونم بین دو میکرو 1768 با spi ارتباط بر قرار کنم
          نیازمند یاری سبزتان هستم همش FF می ده
          کد slave
          #include "LPC17xx.h"


          //SPI

          void spi_init (void) {
          LPC_SC->PCONP |= (1 << 8); // Enable power to SSPI0 block

          //LPC_GPIO0->FIODIR |= (1<<16); //P0.16 is output
          LPC_PINCON->PINSEL0 |= (3UL<<30); // select p0.15 --> SCK
          LPC_PINCON->PINSEL1 |= (3<<2) | (3<<4); // select p0.17 , p0.18 --> MISO , MISI


          LPC_SPI-> SPCR = (0<<5) | (1<<6); // (Master)(LSBF)
          LPC_SPI->SPCCR = 0x8;
          LPC_PINCON->PINSEL1|=0x0000003F;


          }

          unsigned int SPI0(unsigned int val)
          {

          unsigned int received = 0;
          LPC_SPI->SPDR = val;
          while( !(LPC_SPI->SPSR & 0x80));//wait for transfer to be completed
          received=LPC_SPI->SPDR;
          return(received);
          }

          int main(){
          unsigned char z;
          int i;
          LPC_GPIO2->FIODIR |= 0xff;
          //LPC_GPIO0->FIOSET|=0x00010000;
          spi_init ();
          while(1){

          // LPC_GPIO0->FIOCLR|=0x00010000;
          // z=SPI0(0x55);
          z=LPC_SPI->SPDR;
          while( !(LPC_SPI->SPSR & 0x80));//wait for transfer to be completed
          // for( i=0; i<1000;i++);
          LPC_GPIO2->FIOCLR|=0xff;
          LPC_GPIO2->FIOSET|=z;
          // LPC_GPIO0->FIOSET|=0x00010000;
          }
          }

          کد master
          #include "LPC17xx.h"


          //SPI
          void spi_init (void) {
          LPC_SC->PCONP |= (1 << 8); //Enable power to SSPI0 block

          //LPC_GPIO0->FIODIR |= (1<<16); // P0.16 is output
          LPC_PINCON->PINSEL0 |= (3UL<<30); // select p0.15 --> SCK
          LPC_PINCON->PINSEL1 |= (3<<2) | (3<<4); // select p0.17 , p0.18 --> MISO , MISI


          LPC_SPI-> SPCR = (1<<5) | (1<<6); // (Master)(LSBF)
          LPC_SPI->SPCCR = 0x8;


          }

          unsigned int SPI0(unsigned int val)
          {

          unsigned int received = 0;
          LPC_SPI->SPDR = val;
          while( !(LPC_SPI->SPSR & 0x80));//wait for transfer to be completed
          received=LPC_SPI->SPDR;
          return(received);
          }

          دیدگاه

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