NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2992 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 16 از 16

موضوع: تنظیم بایت ریت برای ارتباط سریال lpc2378

  1. #1
    عضو جدید
    تاریخ عضویت
    May 2013
    نوشته ها
    6
    تشکر
    16
    تشکر شده 5 بار در 5 پست

    Icon16 تنظیم بایت ریت برای ارتباط سریال lpc2378

    سلام
    این تنظیمات و انجام دادم
    nsel = 1
    msel = 12
    cclksel = 6
    pclk=cclk/4
    کریستال هم 14.7456 mhz
    کد هم اینه:
    کد:
    #include "LPC23xx.h" 
    
    unsigned int putchar (unsigned int data);
    void delay(long i){
    while(i--);
    }
    int main (){
        
    PINSEL4=0xa; 
    U1LCR=0x83;            //set frmae=8n1 and DLAB=1
    U1DLL=0x96;            //baud rate=9600bps @14.7456MHz crystal
    U1DLM=0x0;            
    U1LCR=0x03;            //DLAB=0
    U1FCR=0x07;            // enable RX fifo and TX fifo
    
    
        while(1){
        
        putchar(0xaa);
      delay(2000000);
        putchar(0x55);
        delay(2000000);
    }
    
    
    }
    
    unsigned int putchar (unsigned int data){
    while(!(U1LSR & (1<<5)));
    return (U1THR=data);
        
    }
    بعد وقتی به comwizard وصل میکنم عدد بی ربط نشون(fe و 6c ) میده فکر کنم بایت ریتش دورست نیست.
    u1dll رو باید چند بزارم ؟
    لطفا با توجه به کریستال و بایت ریت 9600 یه سری اعداد و تنظیمات جدید بدید.
    من با دیتا شیت چک کردم دقیقا یه مثال با همین اعداد تو یوزر منوال 2378 هست که همین اعداد هست صفحه 431
    ممنون میشم پاسخ بدید

  2. تشکرها از این نوشته :


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  4. #2
    کاربر علاقه مند adibsp آواتار ها
    تاریخ عضویت
    Jul 2012
    نام
    ادیب صدری
    نوشته ها
    50
    تشکر
    50
    تشکر شده 39 بار در 25 پست

    پیش فرض

    سلام. میتونین از این کد برای مقدار دهی رجیستر هاتون استفاده بکنین و هر بادریتی که میخاین تنظیم کنین:

    کد:
    #define UART_BAUD(baud) (unsigned  int)((FOSC*PLL_M) / (baud * 16 * 4))
    U1LCR = 0x83 ;                   /* 8 bits, no Parity, 1 Stop bit            */
      U1DLM=(unsigned char)(Baud>>8);
      U1DLL = (unsigned char)Baud;                     
      
      U1LCR = 0x03;                   /* DLAB = 0     */

  5. کاربران : 2 تشکر کرده اند از شما adibsp برای ارسال این پست سودمند:


  6. #3
    عضو جدید
    تاریخ عضویت
    May 2013
    نوشته ها
    6
    تشکر
    16
    تشکر شده 5 بار در 5 پست

    پیش فرض

    راستش اصلا نفهمیدم
    baud = 9600 باید بزارم؟
    pll_m = ؟
    fosc = فرکانس کریستال ؟ یعنی 14.7456*10^6 رو چه طوری بنویسم
    و ....
    اگه ممکنه کد و با متغیر ها رو با یه مثال از خودت که تست کردی بزار ممنون میشم
    ویرایش توسط aleyasin : 23-07-2013 در ساعت 12:17

  7. تشکرها از این نوشته :


  8. #4
    کاربر علاقه مند adibsp آواتار ها
    تاریخ عضویت
    Jul 2012
    نام
    ادیب صدری
    نوشته ها
    50
    تشکر
    50
    تشکر شده 39 بار در 25 پست

    پیش فرض

    خب من معذرت میخام که خلاصه نوشتم. ببین فرمول محاسبه بادریت رو همینجوری بنویس:
    کد:
    #define UART_BAUD(baud) (unsigned  int)((FOSC*PLL_M) / (baud * 16 * 4))
    و در تابع راه اندازی UARTت ورودی تابع رو مقدار baud بذار مثل کد زیر(البته برای UART1):
    کد:
    void Init_Uart0(unsigned int Baud)
     {
       /* initialize the serial interface   */
      PINSEL0 = 0x00000005;           /* Enable RxD0 and TxD0                     */
      U0LCR = 0x83 ;                   /* 8 bits, no Parity, 1 Stop bit            */
      U0DLM=(unsigned char)(Baud>>8);
      U0DLL = (unsigned char)Baud;                     
      
      U0LCR = 0x03;                   /* DLAB = 0     */
     }
    بعد تو تابع main این تابع رو با هرمقداری که میخای (استاندارد) مقدار بده مثل زیر:
    کد:
        Init_Uart0(UART_BAUD(9600));
    موفق باشی

  9. کاربران : 2 تشکر کرده اند از شما adibsp برای ارسال این پست سودمند:


  10. #5
    عضو جدید
    تاریخ عضویت
    May 2013
    نوشته ها
    6
    تشکر
    16
    تشکر شده 5 بار در 5 پست

    پیش فرض

    شما چرا.
    فقط مقدار pll_m چی بزارم؟.اگه با مثال باشه که بهتر.
    fosc = چی بزارم؟ فرکانس کریستالمه ؟ 14745600؟
    بازم ممنون.

  11. تشکرها از این نوشته :


  12. #6
    کاربر علاقه مند adibsp آواتار ها
    تاریخ عضویت
    Jul 2012
    نام
    ادیب صدری
    نوشته ها
    50
    تشکر
    50
    تشکر شده 39 بار در 25 پست

    پیش فرض

    داداش برنامه رو از قصد بت نمیدم تا خودت بنویسیو بالا پایینش دستت بیاد معذرت میخام. اما تو قسمت اول که define رو نوشتم منظورم از FOSC و PLL_M همون مقدار کریستال و MSEL+1 ت بود که میتونی define ش کنی یا همونجا مقدارشو بنویسی.
    البته لازم به گفتن نیس که انشاءا... تنظیمات PLL رو از configuration wizard انجام میدی دیگه نه؟

  13. تشکرها از این نوشته :


  14. #7
    کاربر علاقه مند adibsp آواتار ها
    تاریخ عضویت
    Jul 2012
    نام
    ادیب صدری
    نوشته ها
    50
    تشکر
    50
    تشکر شده 39 بار در 25 پست

    پیش فرض

    داداش برنامه رو از قصد بت نمیدم تا خودت بنویسیو بالا پایینش دستت بیاد معذرت میخام. اما تو قسمت اول که define رو نوشتم منظورم از FOSC و PLL_M همون مقدار کریستال و MSEL+1 ت بود که میتونی define ش کنی یا همونجا مقدارشو بنویسی.
    البته لازم به گفتن نیس که انشاءا... تنظیمات PLL رو از configuration wizard انجام میدی دیگه نه؟

  15. کاربران : 2 تشکر کرده اند از شما adibsp برای ارسال این پست سودمند:


  16. #8
    عضو جدید
    تاریخ عضویت
    May 2013
    نوشته ها
    6
    تشکر
    16
    تشکر شده 5 بار در 5 پست

    پیش فرض

    دمت گرم.
    NSEL+1 رو چی نمیخواد ؟
    اره تنظیمات configuration wizard رو انجام دادم nsel هم یک گذاشتم

  17. تشکرها از این نوشته :


  18. #9
    کاربر علاقه مند adibsp آواتار ها
    تاریخ عضویت
    Jul 2012
    نام
    ادیب صدری
    نوشته ها
    50
    تشکر
    50
    تشکر شده 39 بار در 25 پست

    پیش فرض

    N رو هم میتونی مقدار بدی یا همون یک هم امکانش هست. خواهش میکنم

  19. کاربران : 2 تشکر کرده اند از شما adibsp برای ارسال این پست سودمند:


  20. #10
    عضو جدید
    تاریخ عضویت
    May 2013
    نوشته ها
    6
    تشکر
    16
    تشکر شده 5 بار در 5 پست

    پیش فرض

    درست شد.
    کد:
    #include "LPC23xx.h"
    
    void sendChar(unsigned char data)
    {
      while((U1LSR & 0x20)==0);
      U1THR=data;
      U1TER=0x80; 
    }
    int main(){
    	PINSEL4|=0xA;
      U1LCR=0x83;//no parity / 1 stop / 8 bit data / DLBA=1
      U1DLL=0x72; //70mhz clk / 17.5Mhz clk usart1 / 9600 bps
      U1DLM=0;
      U1FCR=0x7;//enable and clear fifo
      U1LCR=0x3;
    	  SCS|=0x01;
    	while(1);
    }
    اشکال این بود که من عدد آخر برای رجیستر رو به هگز تبدیل نمیکردم همون دسیمال و قرار میدادم.همین.

  21. تشکرها از این نوشته :


  22. #11
    عضو جدید
    تاریخ عضویت
    May 2013
    نوشته ها
    6
    تشکر
    16
    تشکر شده 5 بار در 5 پست

    پیش فرض

    یادم رفت بگم
    msel= 19
    nsel= 2
    cclk=4

  23. #12
    کاربر علاقه مند adibsp آواتار ها
    تاریخ عضویت
    Jul 2012
    نام
    ادیب صدری
    نوشته ها
    50
    تشکر
    50
    تشکر شده 39 بار در 25 پست

    پیش فرض

    بله زندگی زیاد سخت نیست :دی

  24. #13
    همکار علمی sarbaz13 آواتار ها
    تاریخ عضویت
    Mar 2011
    نام
    محمد قاسمی
    نوشته ها
    410
    تشکر
    995
    تشکر شده 425 بار در 230 پست

    پیش فرض

    از آقای صدری و آیدی alyasin تشکر می کنم که نتیجه کار و بحث خودشون رو مختصر و مفید برای عموم دوستان گذاشتن.
    و دوست دارم حضوری بیشتری از این دو عزیز ببینم.
    ویرایش توسط sarbaz13 : 08-08-2013 در ساعت 10:07
    شرکت Time Owner

  25. کاربران : 2 تشکر کرده اند از شما sarbaz13 برای ارسال این پست سودمند:


  26. #14
    کاربر علاقه مند adibsp آواتار ها
    تاریخ عضویت
    Jul 2012
    نام
    ادیب صدری
    نوشته ها
    50
    تشکر
    50
    تشکر شده 39 بار در 25 پست

    پیش فرض

    مرسی مهندس قاسمی. ما از شما اساتید الهام میگیریم که برای پیشرفت همدیگه از هیچ تلاشی دریغ نکنیم.

  27. کاربران : 2 تشکر کرده اند از شما adibsp برای ارسال این پست سودمند:


  28. #15
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    نقل قول نوشته اصلی توسط aleyasin نمایش پست ها
    درست شد.
    کد:
    }
    اشکال این بود که من عدد آخر برای رجیستر رو به هگز تبدیل نمیکردم همون دسیمال و قرار میدادم.همین.
    این که هگز یا معادل دسیمالش بذاری نباید فرق کنه.

    ادیب عزیز ممنون بابت کمک به بچه های انجمن.
    ما در انتظار رویت خورشیدیم ...

    اللهم عجل لولیک الفرج

  29. کاربران : 2 تشکر کرده اند از شما Aghaeifar برای ارسال این پست سودمند:


  30. #16
    کاربر علاقه مند adibsp آواتار ها
    تاریخ عضویت
    Jul 2012
    نام
    ادیب صدری
    نوشته ها
    50
    تشکر
    50
    تشکر شده 39 بار در 25 پست

    پیش فرض

    خواهش می کنم استاد. درس پس میدیم

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

  1. تعبیه قابلیت آپدیت برنامه میکرو توسط کاربر عادی
    توسط sjafarim در انجمن میکرو کنترلر های 32 بیتی(arm)
    پاسخ: 9
    آخرين نوشته: 03-11-2013, 21:15
  2. خوندن 1بیت از 1بایت در بیسکام
    توسط hamid6568 در انجمن AVR
    پاسخ: 5
    آخرين نوشته: 03-02-2011, 20:08
  3. ظرفیت دیسک بلوری به 128 گیگابایت افزایش یافت
    توسط arsalan681 در انجمن اخبار کامپیوتر و IT و مسابقات رباتیک
    پاسخ: 0
    آخرين نوشته: 07-04-2010, 11:33

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

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