اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام
    میخواهم توسط میکرو stm32f103 و کتابخانه cmsis تحت spi با dma دیتا ارسال کنم ولی به دلیل سرعت بالای dma و سرعت پایین گیرنده امکان ارسال سریع دیتا پشت سر هم وجود نداره برای اینکار اومدم تریگر dma که به spi وصل بود رو فعال نکردم و تایمر 3 رو روی حالت وقفه آپدیت فعال کردم و اومدم تریگر dma رو روی حالت آپدیت تایمر گذاشتم ( چون دارم از dma1_channel3 استفاده میکنم وقفه آپدیت تایمر سه به این dma وصله) اینکارو که کردم spi درست کار نمیکنه ولی وقتی تریگر رو روی حالت spi میذارم دیتا رو میفرسته ولی به دلیل سرعت بالا دیتا اشتباه ارسال میشه الان وقفه تایمر درست کار میکنه چون به تعدادی که باید DMA دیتا ارسال کنه وقفه صورت میگیره و وقتی ارسال تموم شد وقفه اتمام DMA هم به درستی اجرا میشه . حالا نمیدونم مشکل چیه وقتی تریگر DMA رو روی تایمر میذارم SPI از کار می افته.
    کسی میدونه ؟ خیلی مهمه برام
    فکر میکنم از این روش برای ارسال دیتا به LCD های TFT استفاده میکنن تا دیتا توسط DMA سر زمان مقرر که تایمر تعیین میکنه به GPIO برسه.
    ممنون

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

    ظاهرا مشکلی با DMA ندارید.
    ببینید نیازی نیست که حتما با تایمر ارسال رو با DMA انجام بدی.
    شما بیا و تو وقفه تایمر واحد DMA رو دوباره فعال کن و بهش آدرس شروع حافظه رو بده. خودش به تعداد کافی عملیات انتقال رو انجام میده.
    بعدشم سرعت ارسال با DMA از سرعت حداکثر واحد SPI بیشتر نمی تونه بشه. تنها کاری که DMA می کنه اینه که سر CPU خلوت تر میشه.
    معمولا LCD ها دیتا رو به صوورت موازی می گیرن که سرعت بالا رو هم پشتیبانی می کنند.
    به نظرم اگر سمت گیرنده اذیت می کنه، دو تا راه رو برو جلو:
    1. سرعت واحد SPI ر بیار پایین و از DMA کمک بگیر،
    2. تو وقفه تایمر با زمان دلخواه دستی مقدار رو با SPI انتقال بده.
    ---------
    .
    .
    ...........

    دیدگاه

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