سلام من می خوام دوتا میکرو lpc2138 رو با پروتکل spi به هم متصل کنم و مقدار یه متغییر رو انتقال بدم روی میکرو بعدی
ولی نمی دونم باید چی کار کنم؟
اگه کسی می تونه یه مثال ساده بگه من متوجه بشم؟
یعنی کسی نیست تا حالا با spi میکرو arm کار کرده باشه بتونه یه مثال بهم بگه؟
با توجه به کمک شایانی که دوستان در این پست انجام دادند من خودم یه سری کد برای را اندازی spi یافتم ولی به نتونستم ازش استفاده کنم
یعنی اطلاعات می فرسته ولی اون سمت نمی تونم این اطلاعات بخونم
واینم شکل مدارشه

می دونید من می خوام دوتا میکرو رو به هم متصل کنم ولی این برنامه کارش فرستادن چندتا کد به سون سگمنته
از دوستان اگه کسی می دونه این کدا رو چه جوریا میشه تغییرش داد واسه اتصال دو تا میکرو به هم به من هم یه کمکی برسونه
مثل اینکه اینجا هیچکس تا حالا با spi میکرو lpc کار نکرده
ولی نمی دونم باید چی کار کنم؟
اگه کسی می تونه یه مثال ساده بگه من متوجه بشم؟
نوشته اصلی توسط Mojtababm66
نمایش پست ها
با توجه به کمک شایانی که دوستان در این پست انجام دادند من خودم یه سری کد برای را اندازی spi یافتم ولی به نتونستم ازش استفاده کنم
یعنی اطلاعات می فرسته ولی اون سمت نمی تونم این اطلاعات بخونم
کد:
[LEFT]#include<lpc21xx.h> unsigned char spi_rec; void spi_ini(); void spi_tr1(unsigned int x); char spi_re(); void spi_tr(unsigned char cmd,unsigned char data); void spi_str(unsigned char *str); int ar[10]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f }; int ar1[8]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}; void pll(); void delay_ms(unsigned int x); int main() { int i,a,b,c,d,e,f,g,h; a=b=c=d=e=f=g=h=0; PINSEL0=0X00000000; IO0DIR=0XFFFFFFFF; pll(); spi_ini(); spi_tr(0x0a,0xf); spi_tr(0x0b,0xf); for(i=0;i<9;i++) { spi_tr(ar1[i],ar[0]); delay_ms(100); } spi_tr(0x0c,0x01); while(1) { spi_tr(ar1[7],ar[a]); spi_tr(ar1[6],ar[b]); spi_tr(ar1[5],ar[c]); spi_tr(ar1[4],ar[d]); spi_tr(ar1[3],ar[e]); spi_tr(ar1[2],ar[f]); spi_tr(ar1[1],ar[g]); spi_tr(ar1[0],ar[h]); a++; if(a==10) { a=0; b++; } if(b==10) { a=b=0; c++; } if(c==10) { a=b=c=0; d++; } if(d==10) { a=b=c=d=0; e++; } if(e==10) { a=b=c=d=e=0; f++; } if(f==10) { a=b=c=d=e=f=0; g++; } if(g==10) { a=b=c=d=e=f=g=0; h++; } if(h==10) { a=b=c=d=e=f=g=h=0; } delay_ms(3000); } } void pll() { /*PLL IS CONFIGURED TO GET 60HZ pCLK*/ PLLCFG=0X24; // SET PSEL=2 AND MSEL=5 PLLCON=0X01; //PLL IS ACTIVE BUT NOT YET CONNECT PLLFEED=0XAA; //FEED SEQUENCE PLLFEED=0X55; //FEED SEQUENCE while((PLLSTAT & 0X400)==0); //WAIT FOR FEED SEQUENCE TO BE INSERTED PLLCON=0X03; // PLL HAS BEEN ACTIVE AND BEING CONNECTRD VPBDIV=0X00; // SET PCLK SAME AS FCCLK PLLFEED=0XAA; //FEED SEQUENCE PLLFEED=0X55; //FEED SEQUENCE } void spi_ini() { PINSEL0 |=0x1500; /* P0.4, P0.5, P0.6, P0.7 are set as SCK, MISO, MOSI and GPIO */ //IODIR0 |= 0X80; /* SSEL is output */ //IOSET0 |=0X80; /* set SSEL to high */ S0SPCCR=8; /* SPI clock prescale register minimum value is 8. */ S0SPCR=0x0030; /* Device select as master, Set data to 8-bit, CPOL = 0, CPHA = 0*/ } void spi_tr1(unsigned int x) { S0SPDR =x; while ( !(S0SPSR & 0x80) ); /* Wait until the SPIF bit is set to indicate trabsfer complete */ } char spi_re() { while ( !(S0SPSR & 0x80) ); /* Wait until the SPIF bit is set to indicate trabsfer complete */ spi_rec= S0SPDR; return spi_rec; } void spi_str(unsigned char *str) { while(*str!='\0') { spi_tr1(*str); str++; } } void spi_tr(unsigned char cmd,unsigned char data) { IO0CLR=(1<<7); //enable transmission spi_tr1(cmd); spi_tr1(data); IO0SET=(1<<7); // disable transmission } void delay_ms(unsigned int x) { int i; while(x--) { for(i=0;i<100;i++); } } [/LEFT]

می دونید من می خوام دوتا میکرو رو به هم متصل کنم ولی این برنامه کارش فرستادن چندتا کد به سون سگمنته
از دوستان اگه کسی می دونه این کدا رو چه جوریا میشه تغییرش داد واسه اتصال دو تا میکرو به هم به من هم یه کمکی برسونه
مثل اینکه اینجا هیچکس تا حالا با spi میکرو lpc کار نکرده
دیدگاه