با سلام، در این قسمت از آموزشها میریم سراغ RNG در این میکروکنترلر، این واحد خیلی کاربردهای خاص داره ولی مهمترین کاربرد این واحد کاربردهای امنیتی هست. راهاندازی این واحد بسیار ساده هست.
واحد RNG وظیفهای که داره تولید یک عدد رندوم هست، تولید این عدد رندوم توسط شاخصهای رندومی شکل میگیرد، چون ساختن عددی رندوم در دیجیتال مطلق بدون وجود هیچ واحد غیرقابلپیشبینی غیرممکن هست و قابل حدسزدن هست.
بریم اول دیاگرام داخلی این واحد رو داخل WCH ببینیم.
میبینید که یک سری مراحل داره این تولید عدد رندوم به طور خلاصه این عدد رندوم بر اساس برخی مؤلفههایی که برنامهنویس در آنها نقشی ندارد تولید میشود، برای مثال دقیق نبودن فرکانس ورودی، ولتاژ پایه Vref ، دمای میکرو و یک سری مسائل محیطی که واقعاً پیشبینیکردن عددی که میخواد تولید بشه رو بسیار دشوار میکند.
راهاندازی این واحد بسیار ساده است فقط یک نکته دارد که در دیاگرام داخلی آن هم نیز پیداست، آن هم تنظیمکردن کلاک برای این بخش است وگرنه چیز خاص دیگه ای نداره.
ما برای رسوندن کلاک به این بخش از این توابع کمک میگیریم:
نکته اول این است که کلاک ورودی این واحد از AHB میاد بر خلاف بیشتر پریفرال هایی که تا به الان راهاندازی کردیم.
نکته دوم این است که باید یک سورس کلاک برای واحد تولید عدد رندوم انتخاب کنید که Sysclock و PLL3_VCO آپشنهای ما برای انتخابکردن هستند.
در اینجا ما PLL3_VCO رو انتخاب کردیم برای این بخش.
وقفه آن را غیرفعال میکنیم و فعالش میکنم:
ازاینپس از رجیستر رندوم دیتا میتوانید عدد رندوم خود را بردارید، این عدد رندوم یک مدت زمانی لازم دارد تا تولید شود، وقفهای هم که دارد برای همین است که هر وقت عدد رندوم آماده استفاده شد وقفه میدهد. میتوانید از While نیز استفاده کنید اگر سرعت برداشت عدد رندومتون بالا هست؛ ولی در اینجا ما عدد رندوم رو آنقدر سریع بهش نیاز نداریم پس به طور مستقیم بدون درنظرگرفتن اینکه عدد آماده شده است یا نه از آن استفاده میکنیم.
و به این شکل آن را بر روی UART میفرستیم.
در آموزش بعدی سراغ واحد DMA میرویم تا آموزش بعدی خدا نگهدار.
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.