ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

نمایش نتایج: از 1 به 8 از 8
  1. #1
    2012/12/28
    32
    12

    راه اندازی LCD N96 با چیپ ILI9325 در IAR برای STM32f10xx

    سلام دوستان من یه برد اموزشی میکرو stm32f103zet6 از همینجا خریدم.کار با پین ها و دسترسی به رجیسترهارو بدون استفاده از کتابخونه یاد گرفتم.در واقع واسه GPIO خورم یه کتابخونه نوشتم.اما حالا میخوام این ال سیدی رو راه بندازم.همه چیزشو بلدم دیتا شیتشم خوندم اما مشکل اینجاست که 16 تا پایه دیتای ال سی دی به پین های مختلف میکرو وصله و ترتیبش از قرار زیره که من برا هر پایه یه اسم تعریف کردم:
    کد:
    #define DB1 GPIOD_ODR_bit.ODR14
    #define DB2 GPIOD_ODR_bit.ODR15
    #define DB3 GPIOD_ODR_bit.ODR0
    #define DB4 GPIOD_ODR_bit.ODR1
    #define DB5 GPIOE_ODR_bit.ODR7
    #define DB6 GPIOE_ODR_bit.ODR8
    #define DB7 GPIOE_ODR_bit.ODR9
    #define DB8 GPIOE_ODR_bit.ODR10
    #define DB10 GPIOE_ODR_bit.ODR11
    #define DB11 GPIOE_ODR_bit.ODR12
    #define DB12 GPIOE_ODR_bit.ODR13
    #define DB13 GPIOE_ODR_bit.ODR14
    #define DB14 GPIOE_ODR_bit.ODR15
    #define DB15 GPIOD_ODR_bit.ODR8
    #define DB16 GPIOD_ODR_bit.ODR9
    #define DB17 GPIOD_ODR_bit.ODR10
    حالا مشکل اینه که اگه بخوام تابع واسه مقدار دهی به این پایه ها بنویسم باید هر بار همه این 16 تا رو دستی صفرو یک کرد که طبیعتا کار غیر عاقلانه و طاقت فرساییه!! :icon_razz:
    اما سوال اینجاست که چطور میشه همه این پین ها رو به عنوان یک متغیر یا یه چیزی شبیه پورت مجازی در نظر گرفت که مثلا با یکبار مقدار دادن مثلا یه عدد هگز مثل 0xffff همه پایه ها مثلا یک بشه یا یک همچین چیزی!
    من که هرکار کردم موفق نشدم.دوستان شما راهی به ذهنتون میرسه؟؟ :angry:
    در ضمن جواب این سوال بیشتر مربوط به زبان سی هست و خیلی فرق نداره تو IAR باشه یا keil :nice:
    خطاب به داعش:
    ای وای اگر پا به حرم بگذاری/یک تکه ز دیوار حرم برداری/شیعه به بین الحرمین حساس است/گفتم که به گوش سگیت بسپاری
    ما از سبوی شاه دین مجنون و مستیم/برگرد تا سربند یا زهرا(س) نبستیم
  2. #2
    2007/08/04
    اصفهان
    577
    4

    پاسخ : راه اندازي LCD N96 با چيپ ILI9325 در IAR براي STM32f10xx

    سلام
    خوب همين مقداري که فرموديد 0xffff را بريزيد داخل رجيستر ديگه
    مثلا :
    USART1->BRR = 0x0271; /* 115200 baud @ PCLK2 72MHz */
    فيلم آموزشي ميکروکنترلر LPC1768
    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...
  3. #3
    2012/12/28
    32
    12

    پاسخ : راه اندازی LCD N96 با چیپ ILI9325 در IAR برای STM32f10xx

    داداش گلم سوال من رو درست متوجه نشدی.من گفتم 16 تا پین که از میکرو به ال سی دی وصله هر کدوم مال یه پورته.مثلا سه تاش از پورتD چندتاش از E و دوتا هم G.مشکل اینه که نمیشه همشو یکجا عدد داد که.میخوام 16 تا پین رو کاری کنم که وفتی یکبار متغیرم رو مقدار دادم همه این 16 تا پین مقدار دهی بشن
    خطاب به داعش:
    ای وای اگر پا به حرم بگذاری/یک تکه ز دیوار حرم برداری/شیعه به بین الحرمین حساس است/گفتم که به گوش سگیت بسپاری
    ما از سبوی شاه دین مجنون و مستیم/برگرد تا سربند یا زهرا(س) نبستیم
  4. #4
    2012/06/05
    نورآباد-لرستان
    182
    6

    پاسخ : راه اندازي LCD N96 با چيپ ILI9325 در IAR براي STM32f10xx

    دوست عزيز من شماتيک برد رو نميدونم ولي احتمالا بهFSMC وصل شده باشن اگه پاسخ درسته بريد دنبال راه اندازي FSMC
    راه اندازی enc28j60 و enc424j600 برای RL-TCPnet

    راه اندازیks0108 با emwin

    راه اندازی lcd7 اینچ با داریور داخلی stm32f429
  5. #5
    2012/12/28
    32
    12

    پاسخ : راه اندازی LCD N96 با چیپ ILI9325 در IAR برای STM32f10xx

    بله دوست عزیز درست میفرمایید.
    من چند وقتیه دارم رو FSMC کار میکنم و تو یه تاپیک راجع بهش حرف زدیم.الان دیگه تئوریش کامل شد و دارم رو قسمت عملی و برنامه نویسی کار میکنم.یک اتفاق بسیار عجیبی افتاده!!! oo:
    من این برنامه زیر رو برای خوندن یکی از رجیسترهای ال سی دی ili9325 با ادرس 00 هگز توی IAR به صورت مستقیم و رجیستری نوشتم که کد 9325 مقدار داخل اونه که توسط fsmc باید خونده بشه و در صورت خوانده شدن یک ال ای دی روشن میشه اما وقتی برنامه رو اجرا و دیباگ سخت افزاری میکنم دو تا اتفاق جالب میافته.!!!!!!!!!! oo: oo: oo: oo:
    یکی اینکه مقدار رجیسترهای کلاک به محض عبور از خط تابع تنظیم اونها اتوماتیک تغییر میکنن و یکی اینکه برنامه بعد از اجرای خط تابع read_data که اونم خودش تابع write_address رو فرا میخونه متوقف میشه و انگار توی یک حلقه گیر کنه شبیه اون دیگه هیچ کاری نمیکنه!!!نمیدنم ایراد کجاست! oo: :angry: :angry:
    کسی نمیدونه چشه؟؟؟
    عکسشم میزارم
    کد:
    #include <iostm32f10xxE.h>
    #include <io_macros.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
    //#include <iostream.h>
    
    
    
    void delay(int num)
    {
     double i;
     for(i=0;i<num;i++)
     {
     
     }
    }
    
    //CLK init function
    void clk_init(void)
    {
    RCC_CR = 0x01010000;
    RCC_CFGR = 0x005d0001;
    RCC_APB2ENR = 0x000001fd;
    RCC_AHBENR = 0x00000104;
    }
    //GPIO pins configuared in output alternate push/pull
    void gpio_init(void)
    {
    GPIOD_CRH = 0xbb000bbb;
    GPIOD_CRL = 0x00bb00bb;
    GPIOE_CRH = 0xbbbbbbbb;
    GPIOE_CRL = 0xb0008000;
    GPIOE_ODR_bit.ODR3=1;
    GPIOG_CRH = 0x000b0000;
    GPIOG_CRL = 0x0000000b;
    GPIOF_CRH=0x00003000;
    GPIOB_CRL=0x00000003;
    
    }
    
    void fsmc_init(void)
    {
    FSMC_BCR1=0x00004059;
    FSMC_BTR1=0x10000501;
    FSMC_BWTR1=0x10000501;
    }
    
    void write_data(unsigned short int data)
    {
    FSMC_BCR1=0x00005059;
    *(volatile unsigned short int *)(0x6c000200) = data;
    }
    
    void write_address(unsigned short int address)
    {
    FSMC_BCR1=0x00005059;
    *(volatile unsigned short int *)(0x6c000000) = address;
    }
    
    
    unsigned char read_data(unsigned short int address)
    {
    write_address(address);
    FSMC_BCR1=0x00004059;
    unsigned char s;
    s=*(volatile unsigned short int *)(0x6c000200);
    
    return s;
    }
    
    
    
     void main()
     {
     clk_init();
     gpio_init();
     fsmc_init();
     //write_address(0x00000000);
     
     while(1)
      {
      unsigned short int k=0;
      k=read_data(0x00);
     // int k=0x0;
      if(k==0)
      {
       GPIOB_ODR_bit.ODR0=1;
       GPIOF_ODR_bit.ODR11=1;
      delay(10000);
       GPIOB_ODR_bit.ODR0=0;
       GPIOF_ODR_bit.ODR11=0;
       delay(10000);
      }
      else if(k==0x9325) 
      {
       GPIOB_ODR_bit.ODR0=1;
       GPIOF_ODR_bit.ODR11=1;
      }
     else
      {
       GPIOB_ODR_bit.ODR0=1;
       GPIOF_ODR_bit.ODR11=1;
      delay(100000);
       GPIOB_ODR_bit.ODR0=0;
       GPIOF_ODR_bit.ODR11=0;
       delay(100000);
      }
      
       //write_data(0x0101);
     }
     
    }
    خطاب به داعش:
    ای وای اگر پا به حرم بگذاری/یک تکه ز دیوار حرم برداری/شیعه به بین الحرمین حساس است/گفتم که به گوش سگیت بسپاری
    ما از سبوی شاه دین مجنون و مستیم/برگرد تا سربند یا زهرا(س) نبستیم
  6. #6
    2012/12/28
    32
    12

    پاسخ : راه اندازی LCD N96 با چیپ ILI9325 در IAR برای STM32f10xx

    اینم عکس از اتفاق عجیبی که تو پست قبل گفتم: oo: oo: oo: oo:
    خطاب به داعش:
    ای وای اگر پا به حرم بگذاری/یک تکه ز دیوار حرم برداری/شیعه به بین الحرمین حساس است/گفتم که به گوش سگیت بسپاری
    ما از سبوی شاه دین مجنون و مستیم/برگرد تا سربند یا زهرا(س) نبستیم
  7. #7
    2009/06/06
    شيراز
    357
    87

    پاسخ : راه اندازي LCD N96 با چيپ ILI9325 در IAR براي STM32f10xx

    سلام دوست عزيز. اول راجب مشکلت بايد بگم که همينجوري نميشه که مقدار يه رجيستر رو عوض کرد.مخصوصن رجيستر هاي RCC رو که ممکن هست توي SYSTEM INIT يه جور ديگه کانفيگ شده باشن يا حتي بعضي از قسمت ها رزرو باشن.براي اين کار معملا OR ميکنن که ما بقي محتوا تغيير نکنه و بيت هاي که ميخوان يک بشه.

    براي FSMC هم بايد بگم که در کل توي ميکرو هاي 100 پين خطوط ادرس و خطوط ديتا روي 16 پين يکسان هستند و از 144 پين اين خطوط جدا ميشن که حالا کاري نداريم ولي LCD رو هم اگه مثل رم در نظر بگيريم خطوط ادرس و ديتاش روي پين هاي يکسان هستند(در نتيجه نيازي به استفاده از خطوط ادرس FSMC ندارند).اين قضايا از چند بانک استفاده ميکنه و توي برنامه ها معمولا از اين قضيه براي راه اندازي LCD استفاده ميکنند که پين RS رو به انتخاب بانک ميدن و توي دو اشاره گر که معمولا هم 0x60020000 و 0x60020000 انتخاب ميشن با توجه به تفاوت بانک(البته از ادرس هم ميشه استفاده کرد) و تغيير پين RS ، ديتا يا رجيستر سلکت ميشن.(رجيستر انتخاب بشه يا محتواي رجيستر LCD(

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  8. #8
    2012/12/28
    32
    12

    پاسخ : راه اندازی LCD N96 با چیپ ILI9325 در IAR برای STM32f10xx

    تشکر از پاسختون.
    اما باید بگم اگه تاپیک FSMC رو دیده باشید این نکات رو اونجا گفتیم و البته درست فرمودید اما درباره رجیسترها باید بگم که من مقادیر رزرو رو با مقدار ریست پرکردم و این توی دیتاشیت گفته شده بود.مشکل اینجاست که مقادیر غیر رزرو به طور اتوماتیک تغییر میکنن.حالا اونا زیاد مهم نیست.مشکل دومی که گفتم دربارش تو تاپیک FSMC توضیح دادم اگه میتونید اونجام یه سر بزنید خیلی ممنون میشم.
    خطاب به داعش:
    ای وای اگر پا به حرم بگذاری/یک تکه ز دیوار حرم برداری/شیعه به بین الحرمین حساس است/گفتم که به گوش سگیت بسپاری
    ما از سبوی شاه دین مجنون و مستیم/برگرد تا سربند یا زهرا(س) نبستیم
نمایش نتایج: از 1 به 8 از 8

موضوعات مشابه

  1. پاسخ: 3
    آخرين نوشته: 2016/08/23, 23:08
  2. پاسخ: 25
    آخرين نوشته: 2015/07/21, 07:25
  3. مشکل در اجرای کد stm32f10xx
    توسط mo.ag در انجمن STM
    پاسخ: 1
    آخرين نوشته: 2015/05/18, 19:09
  4. راه اندازی lcd N96 با درایور ili9325 به کمک atmega32
    توسط --نیلوفر-- در انجمن میکروکنترلرهای AVR
    پاسخ: 4
    آخرين نوشته: 2013/10/03, 21:38
  5. سورس برای سری Cortex-M3 میکرو STM32F10XX
    توسط puya_ms در انجمن NXP
    پاسخ: 0
    آخرين نوشته: 2010/09/20, 17:32

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •