سلام و عرض ادب خدمت مهندسین و همکاران گرامی
یک برد توسعه با STM32F103RET چند وقت پیش ساختم و تست هاشم یکماهه به انواع و انهار مختلف گرفتم و ازش راضیم خدا رو شکر.
داستان اینه که حدود یک هفتس دارم برنامه ای مینویسم برای ماژول R800C که اونم خودم ساختم بردش رو و تست هاش رو هم با پورت سریال کامپیوتر، هم PLC و هم LABView و هم یک برد توسعه Blue Pill گرفتم و خیلی خوب و روان کار میکرد.
رو برد توسعه میکرویی که بالاتر عرض کردم ارتباط با ماژول مذکور رو توسط DMA Circular روی uart2 با یک آرایه بافر بزرگ 500 عضوی گرفتم که برا دریافت پیامک های حجیم جا داشته باشه و سرریز نکنه و هیچ مشکلی نبود تا امروز که بمحض ورودی اطلاعات به بافر (وقتی ماژول زنگ میخوره یا پیام میدم) میکرو میره تو هنگ اما در حالتی که at command با میکرو بهش میدم بدون هنگ و سریع برمیگردونه.
برد میکرو و ماژول در فاصله نزدیک به هم هستند و با یک زوج سیم بهم تابیده شبکه در طول حدودا 10CM به هم ارتباط دارند و یکبار برای اطمینان با مقاومت 10K و یکبار 4,7K بصورت پول آپ با 5V وصل کردم.
Baud Rate = 9600 بصورت پیش فرضه و مدار تغذیم رو عین مدل پیشنهادی دیتاشیت ماژول با قطعات اورجینال بستم و هیچ نوسانی سرش ندارم و رو 4V فیکسه و برا اطمینان یک خازنم گذاشتم دو سرش.
کلاک میکرو هم بدون افزایش و تقویت PLL CS بصورت مستقیم روی HSE 16MHZ معادل کریستالی که گذاشتم هست.
تعجب اینه که تو این یک هفته رو چند نسخه برنامه که نوشتم هیچ مشکلی نبود حتی وقتی نسخ قبلی برنامه رو بعد از فرمت میکرو ریختم تست گرفتم باز این مشکل بود، برا اطمینان کل برنامه رو پاک کردم و فقط پورت رو مانیتور کردم اما بازم بمحض زنگ خوردن ماژول یا دریافت پیامک توسط ماژول میکرو میره تو هنگ!
دیگه دارم به خودم شک میکنم فقط ! دلم میخواد هااااای هااااای مثل ابر بهار عین تو کارتونها زجه بزنم
بخش اولویت اینتراپت هات رو بررسی کن
ممکنه نسخه IDE که داری باهاش کد میزنی رو بروزرسانی کرده باشی؟
مثلا اگر از IDE همچون STM32CubeIDE داری استفاده میکنی نسخش رو تغییر داده باشی؟ (چه به نسخه قدیمی رفته باشی یا به نسخه جدیدتر)
گاهی اوقات که در مورد STM32CubeIDE زیاد این مورد دیده شده این هست که بعد از تغییر نسخه در قسمت توضیحات نسخه جدید اعلام میکنه فلان بخش از تنظیمات رو تغییر دادیم اگر شما خواستید به حالت قبل برگردونید تنظیمات در فلان جا را تغییر بدین
و گاهی اوقات این تغییرات در بخش اولویت ها (NVIC) هست که در شرایط خاص با ورود به وقفه ها در یک زمان تاخیر خیلی طولانی قرار میگیریم که از لحاظ عملکردی انگار میکرو هنگ کرده.
با سلام ، مدارتون رو روی برد بورد بستید؟
شاید همین اتصالات ضعیف برد بورد باعث مشکل شما شده باشه.
سلام
بله رو برد برد بستم اما همه اتصالات رو تست بازر گرفتم برقرار بود و از سیم مفتول استفاده کردم بجا سیم های نازک برد بردی بازاری که بدرد نمیخورن.
تنها کاری که مونده لحیم مستقیم پایه های حساس مثل سریاله، فاصله برد توسعه میکرو و ماژول SIM رو از 10 سانت به نصف یا تا جایی که راه داره کمتر برسونم هم بد نیست ببینم چی میشه فردا.
بد نیست به پایه های تغذیه هم توجه کنید.
سلام ، متاسفانه نرم افزار کیل با آرایه ها مشکل داره ، حتما قبل از هر بار ذخیره پیام درون ارایه ، تمام دیتای آرایه و ایندکس مورد نظر یکبار ریست کنید و در انتها بعد از پر کردن ارایه با دیتای مورد نظر انتهای آرایه رو با کاراکتر null ( ‘\0’) ببندید، به احتمال زیاد مشکلتون حل میسه
بله درست میفرمائید از اونجا که مضنون اول در این موارد همیشه تغذیه است توجه زیادی بهش داشتم و ولتاژ و جریان و توان مصرفی ماژول و میکرو روی نمایشگر نشون داده میشه و پایه هاش رو بخوبی فیکس کردم و قبل از هر بار راه اندازی با مولتی متر چک میکنم.
سلام و عرض ادب، این مشکل رو که اشاره فرمودید چند ماه پیش حین کار با DMA روی مد Circular داشتم موقع دریافت و تحلیل محتوای پیامهای SIM800 که با توابع کنترلی HAL_DMA و ریست به صورتی که اشاره کردید حل کردم خداروشکر.
چند ساله از keil u vision V5 استفاده میکنم آپدیتشم نکردم، از سه روز پیش تابحال که این پست رو گذاشتم برا خودش عشقی کار میکنه یک وقتهایی بدون مشکل و یک وقتهایی تو همون شرایط یکسان شروع میکنه به اذیت.
رعایت اصول وقفه انجام شده و برنامه بیش از یکسال رو برد دیگه امتحانش رو پس داده.
فقط داره شکم میره به کتابخانه HAL که برای این سری توسعه داده شده و بحث نویز روی خطوط سریال چون رفتار غیر خطی داره ممکنه اصلا نصف روز بدون هنگ کار کنه اما از جایی به بعد که دقیقا نمیشه گفت کی شروع کنه به هنگ های پشت سر هم.
حالا باز خداروشکر حدود 1 تومن هزینه نکردم برای چاپ بردش با سولدر مسک و مونتاژ و قبلش گفتم بزار یک تست رو برد برد بگیرم !
به استیصال افتادم از دستش
سلام دوست عزیز، پیشنهاد میکنم این نکات رو بررسی کنید :
1- همیشه از نرم افزار های open source استفاده کنید
2- برای سوالاتی از این قبیل که پارامترهای زیادی درگیر هستند، بهتر هست در ابتدای عوان پرسش، شماتیک این ارتباط، تغذیه و کد پورت com که نوشتید رو ضمیمه کنید. معمولا بحث بررسی مفیدتر میشه در ادامه
3- با تریس کردن و debug کد بهتره ببنید دقیقا کجای کد و در چه خطی این هنگ یا hard fault یا هر چیزی که هست اتفاق می افته، شاید این یکی از مهم ترین بخش های پیدا کردن باگ ها باشه
4- اگر از سورس تغذیه مشترکی استفاده میکنید برای ماژول GSM و میکرو، بهتره یک بار هم جدا کنید و تست کنید
5- تصور من از توضیحتون این هست که در حالت ارتباط عادی شما مشکلی ندارید و اما وقتی یک urc از ماژولدریافت میکنید این اتفاق می افته. بنابراین اگر فرض رو بزاریم روی مشکل سمت کد، با توجه به این اینکه این پک ها عموما حجم دیتا کمی دارند، احساس میکنم توی بخش اینتراپت ها و اولویت هاشون باید بیشتر بررسی داشته باشید.
سلام
در قسمت NVIC پورت سریال DMA اولویت 0 بالاترین سطح اولویت رو داره، بعد از اون چند تا ورودی دارم که لبه هاشون با اولویت 1 چک میشند که فعلا اصلا ازشون با وجود این مشکل استفاده ندارم، بعدش یک تایمره ثانیه شماره با اولویت 2.
بله همینطوره، در حالت عادی برنامه درست کار میکنه و ماژول هم جواب AT Command هاش رو بخوبی میده اما وقتی بهش زنگ بزنم یا پیامی بدم یا میکرو میره تو هنگ یا در بهترین حالت آت و آشغال میاد رو پورتم (آزار دهندست چون تفسیر پکت رو غیر ممکن میکنه) و گهگداری اگر دلش بخواد درست کار میکنه.
تغذیه ماژول و میکرو جداست، میکرو از پورت ST Link تغذیه میشه و ماژول از مدار خودش که بالاتر در موردش توضیح دادم.
امروز انشا… اگر برسم روش کار کنم یک فکرهایی دارم که باید تست کنم، نتیجه رو اینجا اعلام میکنم.
سپاس از مشارکتتان
سلام مجدد
اومدم دلیل ایراد فوق رو که براش موضوع باز کرده بودم به سمع و نظرتون برسونم بلکه در آینده چنین مشکلی از کسی انقدر وقت نگیره.
دلیل هنگ میکرو هنگام دریافت پیام از ماژول SIM800 و یا تماس این بود که من از آنتن 5 سانت 3db با پایه sma بروی ماژول بصورت افقی استفاده کرده بودم و فاصله ماژول تا میکرو هم کوتاه در حد 5 الی 8 سانت بود و این باعث میشد بمحض کار کردن مدار RF میکرو نویزی بشه.
ماژول رو فاصله دادم مشکل حل شد، در بردهای صنعتی که میخواید طول ترک UART از میکرو تا ماژول برای داشتن Baud rate بالا کم بشه و مجبورید ماژول رو کنار میکرو قرار بدید حتما از آنتن های سیم بلند استفاده کنید تا قسمت گیرنده آنتن خارج از برد باشه. هر چه نوک آنتن دور تر بهتر.
از مشارکت همه دوستان سپاسگذارم