سلام دوستان
کسی شماتیک امتحان شده برای otgبرای f107vcداره بذاره؟
شماتیکی که مهندس زرکوب توی فیلم شون گذاشتن کسی جواب گرفته؟چون خودشون برای راه اندازی کیبورد به مشکل خوردن میپرسم!!!
سلام دوستان
کسی شماتیک امتحان شده برای otgبرای f107vcداره بذاره؟
شماتیکی که مهندس زرکوب توی فیلم شون گذاشتن کسی جواب گرفته؟چون خودشون برای راه اندازی کیبورد به مشکل خوردن میپرسم!!!
سلام
روالی که در فیلم برای usb در نظر گرفته شده ماند سایر قسمت ها مرحله به مرحله بوده است.
برای یو اس بی دیوایس سری 107 این مرحله به مرحله جواب داده و ابتدا سمپل کیل شرح داده شده و تست شده و بعد از پاسخ عملی روی برد، سمپل سازی گفته شده و نحوه تغییرات مورد نظر و مجدد اجرای عملی.
ولی این روال برای یو اس بی هاست 107 نتیجه عملی نداشت. لذا کلا در سرفصل نیز آورده نشده و در فیلم هم این موضوع عملی نشان داده شده که همیشه یک پروژه منجر به جواب نمی شود! این استثنایی بوده در کل پریفرال های شرح داده شده در فیلم پیشرفته . در کل برای راه اندازی یک پریفرال بایستی قبل از ضبط زمان زیادی طی شود تا یک سمپل ایجاد شود که در عمل کار کند و سپس اقدام به شرح روال کار شود.
در میکروی stm32f429 از یو اس بی otg برای فلش استفاده کرده ام و بعد صرف زمان زیاد پاسخ گرفته شد. همان روالی که در فیلم شرح داده شده در آنجا هم خودم طی کردم. ولی این برد 107 پاسخ دریافت نشد. حتی سمپل همراه برد که در فیلم همراه نشان داده شده بود که کار می کند نیز کار نمی کرد!
به دلیل ضیق وقت دیگر فرصت نشد دلیل اصلی پیدا شود.
بنابراین اگر کسی این موضوع را در عمل جواب گرفته در اینجا مطرح کند.
ویرایش توسط mzarkoob : 31-10-2018 در ساعت 16:20
سلام برمهندس عزیز جناب زرکوب ...
فیلم آموزشی STM32 قسمت پیشرفته مبحث کلاک و پاور >>>یه قسمتی رو کم داره که شاید کسی غیر از من احساس نیاز بهش نکرده باشه ...
مشکل : بنده میخواهم کلاک میکرو بر روی کلاک خارجی قرار بگیره و فرکانس این کلاک توسط اسیلاتوری 4پین و با فرکانس 14.745600مگاهرتز تامین میشه و همچنین اینکار رو میخواهم توسط کتابخانه های CMSIS انجام بدهم ...
اصلا اینکه برای چ کاری میخواهم دیگر مهم نیست و فقط میخواهم اینکار انجام بشود و یادبگیرم چطوری میشه HSE را فعال و واحد PLL Source Mux را در حالت HSE و واحد System Clock Mux را در حالت PLLCLK قرار بدهم >>> مایقی قسمت هاشو شما گفته این ولی این قسمت ها را یا من نفهمیدم یا شما نگفته اید
اینکه کزیستال یا اسیلاتور چگونه به میکرو وصل شود در منوال صفحه 91/1096 یک شکلی گذاشته شده. همچنین در راهنماهای st ببنید آیا راهنمای جداگانه ای برای rcc گذاشته یا خیر.
---------------------------
بنا به نیاز می توان به منابع مختلفی که سایت st برای هر کدام از میکروکنترلرهای خود قرار داده مراجعه نمود. به عنوان نمونه برای stm32f103ve :
Home > Microcontrollers > STM32 32-bit ARM Cortex MCUs > STM32 Mainstream MCUs > STM32F1 Series > STM32F103 > STM32F103VE
STM32F103VE - Mainstream Performance line, ARM Cortex-M3 MCU with 512 Kbytes Flash, 72 MHz CPU, motor control, USB and CAN - STMicroelectronics
----------------------------
با کتابخانه cmsis الان در دهنم نیست که به توابعش اشاره کنم.
وقتی از تابع سیستم اینیشیالز دارید استفاده می کنید این کارها که می خواهید انجام میشه. یعنی کلاک میبره به خارجی و pll فعال می کنه.
مگه میشه نگفته باشیم!؟ تک تک رجیسترهایی که در تابع سیستم اینشیالیز استفاده شده شرح داده شده . و در قسمت 4 دقیقه 1 وارد این تابع شده ایم. این شرح همه موارد هم برای اینکه اگر کسی بخواد تغییر بده بداند کجا چی تغییر بده.
شما وقتی کلاکت از این 8 مگ تغییر می کنه به14.745600 بایستی ضرایب pll را تغییر دهید.
آیا ضرایب pll را تغییر داده اید؟
یک موردی هم که اشاره ای داشتید استفاده در پروژه است. در پروژه ممکن است مواردی به وجود بیاید که اصلا تا الان باهاش مواجه نشده اید. بنابراین چالشی که در اجرای پروژه وجود دارد همین است که بتوانید ایرادات این چنینی را رفع کنید. حتی ممکن است مواردی باشد که فقط شما با آن مواجه شده اید!
ویرایش توسط mzarkoob : 16-11-2018 در ساعت 23:41
با سلام
در قسمت تاچ
برای نگاشت نقطه تاچ شده بر روی ال سی دی از فرمولی استفاده کرده اید
سوال - فرمول اصلی این نگاشت چی هستش که بشه تاچ های با سایز های دیگه را هم راه اندازی کرد ؟
باتشکر
ویرایش توسط mzarkoob : 14-01-2019 در ساعت 00:52
سلام
سوال خیلی خوبیه که در عمل هم باهاش برای استفاده از تاچ 4.3 مواجه شده ام. چون این رابطه برای تاچ 7 اینچ 800 در 480 پیکسل درست کار می کند.
این رابطه تابع switch در سمپل همراه بردی بوده که در اینجا نیز استفاده شده. ممکن است در جاهای دیگر چیز دیگری باشد.
مسلما باید یک رابطه ریاضی باشد برای این کار ولی فرصت نشده در این مورد جستجو داشته باشم و برای تاچ 4.3 هم با کمی سعی و خطا همین زابطه را تغییر دادم تا نتیجه کمی مطلوب شد.
در صورتی که از تاچ خازنی استفاده کنید میبینید که مختصات واقعی را به شما می دهد و نیازی به این کارها نیست!
با سلام خدمت شما مهندس جان ممنون از اموزش های عالیو خوبتون مهندس جان ببخشید ی سوال داشتم خدمتتون در راه اندازی ال سی دی 4.3 اینچ با در نظر داشتن ال سی دی 7 اینچ همونطور که فرمودین گفتین فقط مقادیر دیفاین hdpو...... که در ابتدای تابع ال سی دی هستن رو عوض کنیم با همون توابع قابل استفاده هستن ولی مهندس جانمن ای سی دی 4.3 رو هرچه تست می کنم با تغییر مقادیر ثابت که فرمودین عمل نمی کنه و فقط صفحه سفید روشن میشه اتصالاتم طبق گفته خودتون انجام دادم ممنون میشم راهنماییم کنید تا بتونم راش بندازم با برد شرکت کویر الکترونیک کار می کنم
با سلام دو باره خدمت شما مهندس زرکوب عزیز
ی سوال در قسمت spi و کار با spi flash در هنگام خواندن manufscture id طبق دیتاشیت 9f بفرستیم 4 تا دیتا بهمون خروجی میده ولی شما در هنگام خواندن این قسمت مرتب dummyکه 0xa5 هستش رو میفرستادین ممنون میشم ی توضیح بدین A5که مرتب میفرستادین چیه وچرا باید بفرستیم در حالی که در دیتاشیت گفته بود نیازی نیست
- - - Updated - - -
مهندس زرکوب ببخشید ی سوال دیگه در دیتاشیت که نگاه می کنم دو بار ادرس لازم فرستاده بشه در قسمت buffer read ولی شما در کد 3 تا فرستادین ممنونمیشم ی توضیح بدین
- مهندس جان با سلام دوباره ببخشید مهندس این اطلاعات lcd که در بر نامه تعریف کردین به صورت دیفاین
unsigned int HDP=478; //Horizontal Display Periodدر کدوم قسمت می تونم دسترسی داشته باشم تا پیداشون کنم در دیتاشیت LCD فقط تعداد سطر و ستون را پیدا کردم ممنون میشم راهنماییم کنیم و اینکه مهندس LCD 4.3پس فرستادم 7 تهیه کردم ممنون میشم راهنماییم کنید
unsigned int HT=531; //Horizontal Total
unsigned int HPS=43; //LLINE Pulse Start Position
unsigned int LPS=8; // Horizontal Display Period Start Position
unsigned char HPW=10; // LLINE Pulse Width
unsigned int VDP=271; //Vertical Display Period
unsigned int VT=288; //Vertical Total
unsigned int VPS=12; // LFRAME Pulse Start Position
unsigned int FPS=4; //Vertical Display Period Start Positio
unsigned char VPW=10;
مهندس جانببخشید در قسمت تابع LCD_PutChar
در تابع SETPOINT در قسمت تعیین ستون ابتدا و انتها چرا X انتها رو 479و سطر انتها رو 271گزاشتین مگهاین مقادیربرای LCD 4.3 نبود ممنون میشم راهنماییم کنید
void LCD_PutChar(u16 x,u16 y,u8 c,u16 charColor,u16 bkColor)
{
u16 i=0;
u16 j=0;
u8 tmp_char=0;
for (i=0;i<16;i++)
{
tmp_char=ascii_8x16[((c-0x20)*16)+i];
for (j=0;j<8;j++)
{
if ( (tmp_char >> ((7-j)) & (0x01)) == 0x01)
{
LCD_SetPoint(x+j,y+i,charColor); // ×Ö·ûÑÕÉ«
}
else
{
LCD_SetPoint(x+j,y+i,bkColor); // ±³¾°ÑÕÉ«
}
}
}
}
void LCD_SetPoint(u16 x,u16 y,u16 point)
{
LCD_WR_REG(0x002A);
LCD_WR_Data(x>>8);
LCD_WR_Data(x&0x00ff);
LCD_WR_Data(479>>8);
LCD_WR_Data(479&0x00ff);
LCD_WR_REG(0x002b);
LCD_WR_Data(y>>8);
LCD_WR_Data(y&0x00ff);
LCD_WR_Data(271>>8);
LCD_WR_Data(271&0x00ff);
LCD_WR_REG(0x002c);
LCD_WR_Data(point);
}
این اطلاعات define در سمپل استفاده شده و باید ببینید در چه رجیسترهایی از ssd جایگذاری می کند و کارش چیست.
ولی اینکه چرا این اعداد گذاشته شده!؟ اینها اعدادی است که ممکن است در دیتاشیت ذکر نشده باشد فقط گفته کار این عدد این است که فلان تنظیم را می کند. در سمپل راه انداز این پارامترها مشخص شده و اگر جایی مقداری برای آن ذکر نشده از روی کار آن بر اساس نیاز می توان به آن مراجعه و با کم زیاد کردن مقدار مناسب تر را پیدا کرد.
در تابع SETPOINT هم ما این را نگذاشتیم. شرحش را دادیم!
این تابع شبیه ّFill و clear است که با مشخص کردن نقطه ابتدا و انتها یک چهار چوب مشخص می کند . حال از آن برای تغییر مکان نما استفاده می کند.
ویرایش توسط mzarkoob : 20-04-2019 در ساعت 11:37
مهندس جان ببخشید من ی سوالدارم فرضکنید بخواهیم ی السی دی 5 اینچ با این درایور راه اندازی کنیم با این روش باید جلو برویم حالا سوال من این هست که این مقادیر از کجا به دست می ایند به جز طول و عرض ال سی دی
ممنونمیشم یراهنمایی بکنید توضیح بالا رو نفهمیدم با تشکر
unsigned int HDP=478; //Horizontal Display Period
unsigned int HT=531; //Horizontal Total
unsigned int HPS=43; //LLINE Pulse Start Position
unsigned int LPS=8; // Horizontal Display Period Start Position
unsigned char HPW=10; // LLINE Pulse Width
unsigned int VDP=271; //Vertical Display Period
unsigned int VT=288; //Vertical Total
unsigned int VPS=12; // LFRAME Pulse Start Position
unsigned int FPS=4; //Vertical Display Period Start Positio
unsigned char VPW=10;
unsigned int HDP=478; //Horizontal Display Period
unsigned int HT=531; //Horizontal Total
unsigned int HPS=43; //LLINE Pulse Start Position
unsigned int LPS=8; // Horizontal Display Period Start Position
unsigned char HPW=10; // LLINE Pulse Width
unsigned int VDP=271; //Vertical Display Period
unsigned int VT=288; //Vertical Total
unsigned int VPS=12; // LFRAME Pulse Start Position
unsigned int FPS=4; //Vertical Display Period Start Positio
unsigned char VPW=10;
مهندس جان سلام ببخشید مرتب سوال می پرسم خیلی ممنون از اموزشهای خوبتون ببخشید به منظور تبدل درتابع switch ایا فرمول خاصی داره که در تابع زحمت کشییدین تعریف کردین
ببخشید مهندس جان این عدد 760, 4400,460 از کجا و طبق چه فرمولی زحمت کشیدین نوشتین
void Switch_XY(uint32_t * x,uint32_t * y)
{
uint32_t a,b;
a = (*x)-(res[0][0]+res[2][0])/2;
b = (*y)-(res[2][1]+res[3][1])/2;
(*x)=a*760/((res[1][0]+res[3][0]-res[0][0]-res[2][0])/2)+20;
(*y)=460-b*440/((res[0][1]+res[1][1]-res[2][1]-res[3][1])/2);
{
قبلا ذکر کردم کهدر سمپل راه انداز این پارامترها مشخص شده و چون درست کار می کند از ان استفاده می کنیم.
دو موضوع وجود دارد . 1- اگر بخواهیم کارمان انجام شود مهم نیست که این اعداد از کجا امده. کار ما را راه بیاندازد. 2- اگر این اعداد کار ما را انجام نداد و ایراد داشت. باید دید هر پارامتر برای چه کاریست و آن را کم و زیاد کنیم تا به نتیجه مطلود در عمل برسیم.
در مورد switch یک رابطه ای در یک سمپلی بوده که در عمل هم درست کار می کرده. ولی مسلما این یک رابطه ریاضی دارد که چگونه 4 نقطه داریم و بخواهیم نقطه جدید را نگاشت کنیم به فضای جدید. من فرصت نکردم ببینم این رابطه ریاضی کجا گفته شده ولی با کمی وقت آن را برای ال سی دی 4.3 تغییر دادم
سلام
من با استفاده از کد های کتابخانه 12c_ee.c برنامه ای برای ماژول adxl345 نوشتم ولی برنامه وقتی به کد
while (!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)){}
میرسد متوقف شده و ادامه نمی دهد .
لازم به ذکر است من از هدر برد stm32f103c8 استفاده می کنم و تمام دیفایل ها را که قبلا با آردوینو تست کرده بودم انجام دادم
لطفا راهنمایی فرمایید
سلام
من مدتی هست که دارم با فیلم های آموز ی پیش میرم. الان دارم با ارتباط can کار میکنم ولی مشکلی که وجود داره نمیتونم ارتباط برقرار کنم. داخل شبیه سازی درست کار میکنه ولی داخل عمل نه
به نظرتون مشکل از کجاست ؟؟ کسی چنین مشکلی داشته ؟
برد مربوط به یه پروژه هست که خودم طراحی کردم. مسیرها و اتصال ها رو چندین بار چک کردم. ای سی که روی برد هست sn65hvd230dr هست. حتی گفتم شاید از ای سی ها باشه, اومدم ای سی های روی برد اموزشی رو که مربوط lpc1768 بود رو جدا کردم و اونها رو گذاشتم. ارتباط سریالم اوکی هست طبق مثال ولی از can هیچ رد و بدل دیتایی ندارم.
ممنون میشم برای درست شدنش بهم کمک کنید. وقتی برای تحویل پروژه ندارم زیاد
تشکر
آی سی هایی که جدا کردید قبلا باهاش تست کرده بودید ببینید سالم هست؟
سمپل همراه فیلم تست شده هست.