اطلاعیه

Collapse
No announcement yet.

از دست رفتن اطلاعات زمان ارسال با باودریت بالا

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

    از دست رفتن اطلاعات زمان ارسال با باودریت بالا

    دوستان من ارتباط usart رو با lpc1768 راه اندازی کردم و با یک مبدل pl2303 ( مبدل usb به سریال)، دیتا رو می فرستم برای کامپیوتر. وقتی باود ریت پایینه مثلا 9600 مشکلی ندارم. اما همین که باودریت میره بالا، مشکل پیش میاد. مثلا وقتی با باودریت 230400 ( و یا 115200) میام و 15 بایت رو با فاصله 200 میکرو ثانیه پشت سر هم برای کامپیوتر ارسال می کنم یک سری از دیتاها از بین میره. مثلا از 15 بایت تنها 8 بایت یا 11 بایت سالم میرسه به کامپیوتر. به نظرتون مشکل از کجا می تونه باشه ؟ از مبدله یا از خود ارتباط سریاله یا هر چیزه دیگه. در ضمن من پایه های Rx و Tx مبدل (ظاهرا 5 ولت هستند) رو به پایه های میکرو وصل کردم. بازم میگم وقتی با باودریت پایین مثلا 9600 هم می فرستم توی دیتای پشت سر هم مشکل دارم. (با فاصله زمانی 500 میکروثانیه).
    فاصله زمانی رو هم نمی تونم کم کنم چون نیاز دارم بهش.
    مرسی
    ---------
    .
    .
    ...........

    #2
    پاسخ : از دست رفتن اطلاعات زمان ارسال با باودریت بالا

    سلام دوست عزیز من 4 تا uart v رو هم راه انداختم بادریت هم روی 115200 بود و هیچ مشکلی نداشتم و در هر ارسال 9 کارکتر میفرستادم

    دیدگاه


      #3
      پاسخ : از دست رفتن اطلاعات زمان ارسال با باودریت بالا

      شاید برنامتون مشکل داشته باشه .
      من با باود ریت 115200 با یک فرستنده و گیرنده رادیویی یک فایل متنی رو ارسال کردم .
      برنامتون رو چک کنید . مخصوصا تنظیم رجیسترهاشو . خیلی حساسه .
      چه زشت است کوچکي به هنگام نياز و سرکشي به هنگام بي نيازي ...

      دیدگاه


        #4
        پاسخ : از دست رفتن اطلاعات زمان ارسال با باودریت بالا

        این مربوط به تنظیمات رجیسترا هستش :
        [code=c]#define FPCLK 100000000
        //#define Baudrate2 115200
        //#define Baudrate2 500000

        void UART2_init(uint32_t Baudrate) {
        uint16_t temp;

        LPC_GPIO0->FIODIR &= !(1<<20) ;
        LPC_GPIO0->FIODIR |= 1<<22 ;
        LPC_PINCON->PINSEL0 |= (1 << 20); /* Pin P0.10 used as TXD2 (Com2) */
        LPC_PINCON->PINSEL0 |= (1 << 22); /* Pin P0.11 used as RXD2 (Com2) */
        LPC_SC->PCONP |= 1<<24 ; // Turn on USART2 Power
        LPC_UART2->LCR = 0x83 ;
        temp = (FPCLK/16) / Baudrate ;
        // LPC_UART2->DLM = temp / 256 ;
        // LPC_UART2->DLL = temp % 256 ;
        LPC_UART2->DLM = 0x00;
        LPC_UART2->DLL = 0x1f;
        LPC_UART2->FDR = 0x43 ;
        LPC_UART2->LCR = 0x03 ;
        LPC_UART2->FCR = 0x06 ;
        LPC_UART2->IER |= 1 ;
        NVIC_EnableIRQ(UART2_IRQn) ;
        }

        void Send_Byte(uint8_t Data) {
        while (!(LPC_UART2->LSR & 0x20));
        LPC_UART2->THR = Data ;
        }[/code]
        این قسمت هم مربوط به ارسال داده هام هستش به کامپیوتر :
        15 بایت با فاصله زمانی 500 میکرو ثانیه با باودریت 230400 ( یا حداقل 115200) .

        [code=c]for (i=0;i<=14;i++) {
        Send_Byte(a[i]) ;
        }[/code]
        زمانی که یک پایه مخصوص صفر میشه، دیتا توی متغیر a ذخیره میشه و بعد برای کامپیوتر ارسال میشه.
        ---------
        .
        .
        ...........

        دیدگاه


          #5
          پاسخ : از دست رفتن اطلاعات زمان ارسال با باودریت بالا

          از این استفاده کن . به جای UART2_BPS 9600 جای 9600 باودریت دلخواه بذار

          [code=c]#define FOSC 12000000 /* Oscillator frequency */

          #define FCCLK (FOSC * 8) /* Master clock frequency <= 100Mhz */
          /* Multiples of FOSC */
          #define FCCO (FCCLK * 3) /* PLL frequency (275Mhz ~ 550Mhz) */
          /* And FCCLK the same or an even multiple of its */
          #define FPCLK (FCCLK / 4) /* Peripheral clock frequency, FCCLK 1 / 2, 1 / 4*/
          /* The same or FCCLK */


          #define UART2_BPS 9600 /* 2 serial communication baud rate */[/code]

          [code=c]void UART2_Init (void)
          {
          uint16_t usFdiv;
          /* UART2 */
          LPC_PINCON->PINSEL0 |= (1 << 20); /* Pin P0.10 used as TXD2 (Com2) */
          LPC_PINCON->PINSEL0 |= (1 << 22); /* Pin P0.11 used as RXD2 (Com2) */

          LPC_SC->PCONP = LPC_SC->PCONP|(1<<24); /*Open UART2 power control bit */

          LPC_UART2->LCR = 0x83; /* Allows you to set the baud rate */
          usFdiv = (FPCLK / 16) / UART2_BPS; /* Set baud rate */
          LPC_UART2->DLM = usFdiv / 256;
          LPC_UART2->DLL = usFdiv % 256;
          LPC_UART2->LCR = 0x03; /* Locked baud rate */
          LPC_UART2->FCR = 0x06;
          }[/code]
          چه زشت است کوچکي به هنگام نياز و سرکشي به هنگام بي نيازي ...

          دیدگاه


            #6
            پاسخ : از دست رفتن اطلاعات زمان ارسال با باودریت بالا

            بین کد شما و من فرقی نیست، میشه بگید چرا کدتون رو پیشنهاد می کنید ؟
            ممنون.
            ---------
            .
            .
            ...........

            دیدگاه


              #7
              پاسخ : از دست رفتن اطلاعات زمان ارسال با باودریت بالا

              منم مشکل شما رو داشتم . هرچی کد میزدم کار نمی کرد .
              این کد رو از جایی گرفتم .
              فک کنم مال یه برد آموزشی خارجی بود .
              با اینکه یکی بود ولی این کار کرد .
              البته من ازمبدل cp2102 استفاده می کنم . تو باود ریت های بالا یکم درصد خطا بالا میره ولی معمولا زیر یک درصد هست ؟
              چه زشت است کوچکي به هنگام نياز و سرکشي به هنگام بي نيازي ...

              دیدگاه


                #8
                پاسخ : از دست رفتن اطلاعات زمان ارسال با باودریت بالا

                البته شما FPCLK رو 100000000 میشه ولی تو کد من می شه 24000000 .
                چه زشت است کوچکي به هنگام نياز و سرکشي به هنگام بي نيازي ...

                دیدگاه


                  #9
                  پاسخ : از دست رفتن اطلاعات زمان ارسال با باودریت بالا

                  مبدل سریالتون رو چک کنید حداکثر باود ریتش چقدره
                  گمونم 115k باشه
                  هميشه به ياد خدا باش !

                  دیدگاه


                    #10
                    پاسخ : از دست رفتن اطلاعات زمان ارسال با باودریت بالا

                    دیتاشیت مبدل گفته باودریت تا 12Mbps رو پشتیبانی می کنه.
                    ---------
                    .
                    .
                    ...........

                    دیدگاه


                      #11
                      پاسخ : از دست رفتن اطلاعات زمان ارسال با باودریت بالا

                      نوشته اصلی توسط ajapyy
                      دیتاشیت مبدل گفته باودریت تا 12Mbps رو پشتیبانی می کنه.
                      دوست عزیز با چه نرم افزاری مانیتور میکنی؟
                      مشکل اصلی از بافرهای نرم افزارهای مورد استفاده برای مانیتورینگ هستش.
                      منم همین مشکل رو داشتم.فقط با افزایش فاصله زمانی ارسال ها درست میشه.
                      یا اینکه یه برنامه مانیتورینگ پورت سریال حرفه ای خودت بنویسی یا پیدا کنی.

                      البته بخش خیلی خیلی کمی هم به مبدلت بستگی داره ولی مشکل اصلی همونیه که گفتم.

                      دیدگاه


                        #12
                        پاسخ : از دست رفتن اطلاعات زمان ارسال با باودریت بالا

                        من از ترمینال خود کدویژن و نرم افزار labview استفاده می کنم. افزایش بین فاصله ها برام مقدور نیست. چون با یک نرخ ثابت از یک سیگنالی نمونه برداری می کنم و دیتا رو خام (بدون هیچ عملیاتی روش) برای کامپیوتر ارسال می کنم تا اونجا روش پردازش بشه.
                        ---------
                        .
                        .
                        ...........

                        دیدگاه


                          #13
                          پاسخ : از دست رفتن اطلاعات زمان ارسال با باودریت بالا

                          دوستان من کارکتر میفرستم و میگیرم اشتباه میکنه مثلا ام میفرستم آی نشون میده تمام کارکتر ها هم اشتباه میکنه بود ریتم هم 9600است

                          دیدگاه

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