گھر > خبریں > مواد

ٹائمنگ مثال

Apr 26, 2019

2.2.4 وقت کی نمائش: 60Hz پر 480x272

60Hz میں ایک ڈسپلے کو اپ ڈیٹ کرنے کے لئے فی فریم 48000000/60 = 800000 تیز رفتار گھڑی ہیں.

PCLK ڈویژن REG_PCLK کو 5 سیٹ کرنے کے لئے پی سی ایل کے فریکوئنسی 9.6 میگاہرٹج اور اس کی پیشکش کرتا ہے

800000/5 = 160000PCLK فی فی فریم.

480 x 272 ڈسپلے کے لئے، عام افقی دور 525 گھڑی ہے، اور عمودی دور ہے

286 لائنیں. ایک چھوٹی سی تلاش سے ظاہر ہوتا ہے کہ 548 x 292 سائز 160016 گھڑیوں کی مدت دیتا ہے،

ہدف کے بہت قریب لہذا REG_HCYCLE = 548 اور REG_VCYCLE = 292 ڈسپلے کے ساتھ

فریکوئنسی تقریبا بالکل 60 ہیز ہے. دوسری رجسٹریشن کی ترتیبات براہ راست سیٹ سے کی جا سکتی ہیں

ڈسپلے پینل ڈییٹ شیٹ.


2.2.5 ابتداء کی ترتیب

یہ سیکشن مختلف منظر میں ابتداء ترتیب کی وضاحت کرتا ہے.

 بوٹ اپ کے دوران ابتدائی ترتیب

1. ایم ایم یو ایس ایس آئی گھڑی 11MHz سے زائد نہیں استعمال کریں

2. میزبان کمانڈ "CLKEXT" FT800 بھیجیں

3. میزبان کمانڈ "فعال" بھیجیں FT800 پر گھڑی کو فعال کرنے کے لئے.

4. REG_PCLK کے سوا، ویڈیو ٹائم رجسٹریشن کو ترتیب دیں

5. پہلی ڈسپلے کی فہرست لکھیں

6. REG_DLSWAP لکھیں، FT800 فوری طور پر ڈسپلے کی فہرست میں تبدیل

7. ڈسپلے کے لئے واپس روشنی کنٹرول کو فعال کریں

8. REG_PCLK لکھیں، ویڈیو آؤٹ پٹ پہلی ڈسپلے کی فہرست سے شروع ہوتی ہے

9. MCU SPI گھڑی 30MHz سے زائد نہیں استعمال کریں


MCU_SPI_CLK_Freq (<11mhz)؛ 11mhz="" سے="" کم="" mcu="" spi="" گھڑی="" کا="" استعمال="">

host_command (CLKEXT)؛ // FT800 پر "CLKEXT" کو کمانڈ بھیجیں

host_command (ACTIVE)؛ // FT800 پر میزبان کمانڈ "فعال" بھیجیں

/ * ڈسپلے رجسٹریشن کو ترتیب دیں - WQVGA قرارداد کے لئے مظاہرہ * /

wr16 (REG_HCYCLE، 548)؛

wr16 (REG_HOFFSET، 43)؛

wr16 (REG_HSYNC0، 0)؛

wr16 (REG_HSYNC1، 41)؛

wr16 (REG_VCYCLE، 2 2 2)؛

wr16 (REG_VOFFSET، 12)؛

wr16 (REG_VSYNC0، 0)؛

wr16 (REG_VSYNC1، 10)؛

wr8 (REG_SWIZZLE، 0)؛

wr8 (REG_PCLK_POL، 1)؛

wr8 (REG_CSPREAD، 1)؛

wr16 (REG_HSIZE، 480)؛

wr16 (REG_VSIZE، 272)؛

/ * پہلے ڈسپلے کی فہرست لکھیں * /

wr32 (RAM_DL + 0، CLEAR_COLOR_RGB (0،0،0))؛

wr32 (RAM_DL + 4، واضح (1،1،1))؛

wr32 (RAM_DL + 8، ڈسپلے ())؛

wr8 (REG_DLSWAP، DLSWAP_FRAME)؛ // ڈسپلے فہرست تبدیل کریں

wr8 (REG_GPIO_DIR، 0x80 | Ft_Gpu_Hal_Rd8 (phost، REG_GPIO_DIR))؛

wr8 (REG_GPIO، 0x080 | Ft_Gpu_Hal_Rd8 (phost، REG_GPIO))؛ // فعال ڈسپلے تھوڑا سا

wr8 (REG_PCLK، 5)؛ // اس ڈسپلے کے بعد LCD پر نظر آتا ہے

MCU_SPI_CLK_Freq (<30 میگاہرٹز)؛="" mcm="" spi="" گھڑی="" 30mhz="" تک="" استعمال="">

کوڈ کا ٹکڑا 1 ابتدائی ترتیب



 PD_N پن کا استعمال کرتے ہوئے پاور ڈور سے ابتداء کی ترتیب

1. PD_N اعلی پن ڈرائیو

2. کم سے کم 20ms تک انتظار کریں

3. اقدامات "بوٹ یوپی کے دوران" شروع کرنے کے اقدامات پر عمل 1 سے 9 سے

 نیند موڈ سے ابتداء کی ترتیب:

1. میزبان کمانڈ "فعال" بھیجیں FT800 کو گھڑی کو چالو کرنے کے لئے

2. کم سے کم 20ms تک انتظار کریں

3. 5 سے 8 مرحلے سے "بوٹ اپ کے دوران ابتدائی طور پر ترتیب" کو منتخب کریں

 اسٹینڈبی موڈ سے ابتدائی ترتیب:

"سمندری موڈ سے ابتداء کی ترتیب" میں ذکر کردہ تمام اقدامات کو ختم کریں.

اس کے سوا کم از کم 20ms کے مرحلے 2 میں.

نوٹ: پاور طریقوں پر معلومات کے لئے FT800 ڈیٹا شیٹ کا حوالہ دیں. سیکشن 2.3 کے لئے عمل کریں

بجلی کے دوران آڈیو مینجمنٹ اور آپریشن دوبارہ ترتیب دیں.


2.3 صوتی سنتھیززر

xylophone پر C8 کھیلنے کے لئے نمونہ کوڈ:

wr8 (REG_VOL_SOUND، 0xFF)؛ // زیادہ سے زیادہ حجم مقرر کریں

wr16 (REG_SOUND، (0x6C < 8)="" |=""> // x8 xylophone پر MIDI نوٹ

wr8 (REG_PLAY، 1)؛ // آواز کھیلیں

کوڈ کا ٹکڑا 2 صوتی سنتھیزائزر سییل 8 پر xylophone پر


صوتی کھیل کی حیثیت کو چیک کرنے کے لئے نمونہ کوڈ:

Sound_status = rd8 (REG_PLAY)؛ // 1-کھیل چل رہا ہے، 0-کھیل ختم ہوگیا ہے

کوڈ کے ٹکڑا 3 صوتی سنتشیسزر آواز کی حیثیت کی حیثیت کو چیک کریں



آواز کا کھیل روکنے کے لئے نمونہ کوڈ:

wr16 (REG_SOUND، 0x0)؛ // خاموشی کو آواز کے طور پر کھیلنے کے لئے ترتیب دیں

wr8 (REG_PLAY، 1)؛ // کھیل کی آواز

Sound_status = rd8 (REG_PLAY)؛ // 1-کھیل چل رہا ہے، 0-کھیل ختم ہوگیا ہے

کوڈ کے ٹکڑا 4 صوتی سنتشیسسر آواز کو روکنے کے


ری سیٹ یا طاقت ریاست کے تبدیلی پر آڈیو پپ آواز سے بچنے کے لئے، "گونگا" آواز کو ٹرگر،

اور اسے مکمل کرنے کے لئے انتظار کریں (آواز کا کھیل مکمل کرنا جب REG_PLAY ایک قدر ہے

0). یہ 0 کی سطح پر پیداوار کی قیمت مقرر کرتا ہے. ریبوٹ پر آڈیو انجن واپس چلتا ہے

آدھے راستے کی سطح پر پیداوار کو چلانے کے لئے "انمیٹ" آواز.

نوٹ: صوتی سنتشیسزر اور آڈیو پر مزید معلومات کے لئے FT800 ڈیٹا شیٹ کا حوالہ دیں

پلے بیک


2.4 آڈیو پلے بیک

FT800 کی تین قسم کے آڈیو فارمیٹ کی حمایت کرتا ہے: 4 بٹ IMA ADPCM، 8 بٹ پر دستخط PCM، 8 بٹ آپ. IMA ADPCM کی شکل کے لئے، براہ کرم بائٹ آرڈر نوٹ کریں: ایک بائٹ کے اندر، پہلا نمونہ

(4 بٹس) تھوڑا سا 0 سے تھوڑا 3 سے پتہ چلیں گے، جبکہ دوسرا نمونے (4 بٹس) سے پتہ چل جائے گا

تھوڑا سا ساٹھ سے 7.

FT800 رام میں آڈیو ڈیٹا کھیلنے کے لئے، FT800 میں شروع ایڈریس کی ضرورت ہے

REG_PLAYBACK_START جتنا سا 64 بٹ (8 بٹس) منسلک ہے. اس کے علاوہ، آڈیو کی لمبائی

REG_PLAYBACK_LENGTH کی طرف سے متعین کردہ ڈیٹا 64 بٹ (8 بٹس) کی گنجائش ہوتی ہے.

آڈیو ڈیٹا کو کھیلنے کے لئے کس طرح سیکھنے کے لئے، براہ کرم نیچے نمونہ کوڈ چیک کریں:

wr8 (REG_VOL_PB، 0xFF)؛ // آڈیو پلے بیک حجم کو ترتیب دیں

wr32 (REG_PLAYBACK_START، 0)؛ // آڈیو بفر شروع ہونے والے ایڈریس کو ترتیب دیں

wr32 (REG_PLAYBACK_LENGTH، 100 * 1024)؛ // آڈیو بفر کی لمبائی کو ترتیب دیں

wr16 (REG_PLAYBACK_FREQ، 44100)؛ // آڈیو نمونے کی تعدد کو ترتیب دیں

wr8 (REG_PLAYBACK_FORMAT، ULAW_SAMPLES)؛ // آڈیو فارمیٹ کو ترتیب دیں

wr8 (REG_PLAYBACK_LOOP، 0)؛ // ایک بار یا مسلسل پلے بیک ترتیب دیں

wr8 (REG_PLAYBACK_PLAY، 1)؛ // آڈیو پلے بیک شروع کریں

کوڈ کا ٹکڑا 5 آڈیو پلے بیک



AudioPlay_Status = rd8 (REG_PLAYBACK_PLAY)؛ // 1-آڈیو پلے بیک چل رہا ہے،

0-آڈیو پلے بیک ختم ہوگیا ہے

کوڈ کا ٹکڑا 6 آڈیو پلے بیک کی حیثیت کو چیک کریں

wr32 (REG_PLAYBACK_LENGTH، 0)؛ // پلے بیک لمبائی 0 تک ترتیب دیں

wr8 (REG_PLAYBACK_PLAY، 1)؛ // آڈیو پلے بیک شروع کریں

کوڈ کا ٹکڑا 7 آڈیو پلے بیک کو بند کرو


2.5 گرافکس کے معمولات

یہ سیکشن گرافکس کی خصوصیات کی وضاحت کرتا ہے اور چند مثالیں پیش کرتا ہے.

2.5.1 شروع کرنا

یہ مختصر مثال ایک سرخ ڈاٹ کے ساتھ اس پر متن "FTDI" کے ساتھ اسکرین بناتا ہے.

image

اسکرین کو متوجہ کرنے کا کوڈ یہ ہے:

wr32 (RAM_DL + 0، کلی (1، 1، 1))؛ // واضح سکرین

wr32 (RAM_DL 4، BEGIN (BITMAPS))؛ // بطور ڈرائنگ شروع کریں

wr32 (RAM_DL + 8، VERTEX2II (220، 110، 31، 'F'))؛ // ایسسی ایف ایف فونٹ 31 میں

wr32 (RAM_DL + 12، VERTEX2II (244، 110، 31، 'T'))؛ // ایسسیسی ٹی

wr32 (RAM_DL + 16، VERTEX2II (270، 110، 31، 'D'))؛ // ایسسیڈی ڈی

wr32 (RAM_DL + 20، VERTEX2II (299، 110، 31، 'I'))؛ // ایسسی آئی

wr32 (RAM_DL + 24، END ())؛

wr32 (RAM_DL + 28، COLOR_RGB (160، 22، 22))؛ // سرخ رنگ میں تبدیلی کا رنگ

wr32 (RAM_DL + 32، POINT_SIZE (320))؛ // سیٹ پوائنٹ سائز 20 پکسلز میں

ریڈیو

wr32 (RAM_DL + 36، BEGIN (POINTS))؛ // ڈرائنگ پوائنٹس شروع کریں

wr32 (RAM_DL + 40، VERTEX2II (192، 133، 0، 0))؛ // سرخ پوائنٹ

wr32 (RAM_DL + 44، END ())؛

wr32 (RAM_DL + 48، ڈسپلے ())؛ // تصویر دکھائیں

کوڈ کا ٹکڑا 8 شروع کرنا


مندرجہ ذیل ڈرائنگ کے حکموں کے بعد ڈسپلے کی فہرست رام میں رجسٹر ہونے کے بعد، رجسٹر

نئی ڈسپلے کی فہرست کو فعال کرنے کے لئے REG_DLSWAP 0x02 پر سیٹ کرنے کی ضرورت ہے

اگلا فریم تازہ کاری پر.

نوٹ:

 ڈسپلے فہرست ہمیشہ RAM_DL پر شروع ہوتا ہے

 ایڈریس ہمیشہ سے بڑھتی ہوئی 4 (بائٹ) ہر کمانڈ کے طور پر 32 بٹ چوڑائی ہے.

 کمانڈ کلیر کسی دوسرے ڈرائنگ سے پہلے استعمال کرنے کی سفارش کی جاتی ہے

آپریشن، ایک مشہور ریاست میں FT800 گرافکس انجن ڈالنے کے لئے.

 ڈسپلے کی فہرست کا اختتام ہمیشہ کمانڈ DISPLAY کے ساتھ پرچم لگایا جاتا ہے

2.5.2 سمت طیارہ

نیچے دی گئی اعداد و شمار گرافکس کوآرٹیٹیٹ طیارے اور اس کے ظاہر علاقے کی وضاحت کرتا ہے.

درست X اور Y ہم آہنگی سے 1024 سے 1023 تک پکسل صحت سے متعلق، یعنی، سے

-1 / 16 ویں پکسل صحت سے متعلق میں 16384 سے 16383


image

2.5.3 ڈرائنگ پیٹرن

ڈرائنگ کیلئے عام پیٹرن یہ ہے:

 ابتدائی اقسام میں سے ایک کے ساتھ بیٹھیں

 ان پٹ ایک یا زیادہ عمودی، جس پر پرائمری کی جگہ کا تعین

سکرین

 پرائمری کے اختتام کو نشان زد کرنے کے لئے END

(نوٹ: کئی مثالوں میں END کمانڈ واضح طور پر درج نہیں کیا گیا ہے)

پرائمری اقسام جو گرافکس کے انجن کی حمایت ہیں:

 BITMAPS - آئتاکار پکسل arrays، مختلف رنگ فارمیٹس میں

 پوزیشن - اینٹی غیر مرتب شدہ پوائنٹس، نقطہ نظر 1-256 پکسلز ہے

 لائنز - اینٹی غیر مرتب شدہ لائنیں، چوڑائی 0 سے 4095 1/16 ویں پکسل یونٹس کے ساتھ ہیں.

(چوڑائی حد تک لائن کے مرکز سے ہے)

 LINE_STRIP - اینٹی غیر متعلقہ لائنز، منسلک سر سے دم

 ریپیس - راؤنڈ کونے والے آئتاکار، کونے کی وکر ایڈجسٹ کیا جا سکتا ہے

LINE_WIDTH کا استعمال کرتے ہوئے

 EDGE_STRIP_A / B / L / R - کنارے سٹرپس

مثال


مختلف رنگوں کے ساتھ 5 پکسلز سے 13 پکسلز سے مختلف ردعمل کے ساتھ پوائنٹس ڈرائیو:

ڈی ایل (COLOR_RGB (128، 0، 0))؛

ڈی ایل (POINT_SIZE (5 * 16))؛

ڈی ایل (بیجین (پوائنٹس))؛

ڈی ایل (VERTEX2F (30 * 16،17 * 16))؛

ڈی ایل (COLOR_RGB (0، 128، 0))؛

ڈی ایل (POINT_SIZE (8 * 16))؛

ڈی ایل (VERTEX2F (90 * 16، 17 * 16))؛

ڈی ایل (COLOR_RGB (0، 0، 128))؛

ڈی ایل (POINT_SIZE (10 * 16))؛

ڈی ایل (VERTEX2F (30 * 16، 51 * 16))؛

ڈی ایل (COLOR_RGB (128، 128، 0))؛

ڈی ایل (POINT_SIZE (13 * 16))؛

ڈی ایل (VERTEX2F (90 * 16، 51 * 16))؛

image

VERTEX2F کمانڈ دائرہ مرکز کے مقام فراہم کرتا ہے.

مختلف رنگوں کے ساتھ 2 پکسلز سے 6 پکسلز سے مختلف سائز کے ساتھ لائنز ڈرائیو (لائن چوڑائی

سائز لائن کے مرکز سے حد تک ہے):

ڈی ایل (COLOR_RGB (128، 0، 0))؛

ڈی ایل (LINE_WIDTH (2 * 16))؛

ڈی ایل (بیجین (لائنز))؛

ڈی ایل (VERTEX2F (30 * 16،38 * 16))؛

ڈی ایل (VERTEX2F (30 * 1663 * 16))؛

ڈی ایل (COLOR_RGB (0، 128، 0))؛

ڈی ایل (LINE_WIDTH (4 * 16))؛

ڈی ایل (VERTEX2F (60 * 16،25 * 16))؛

ڈی ایل (VERTEX2F (60 * 1663 * 16))؛

ڈی ایل (COLOR_RGB (128، 128، 0))؛

ڈی ایل (LINE_WIDTH (6 * 16))؛

ڈی ایل (VERTEX2F (90 * 16، 13 * 16))؛

ڈی ایل (VERTEX2F (90 * 16، 63 * 16))؛

VERTEX2F حکم دیتا ہے جوڑوں میں لائن کے شروع اور ختم پوائنٹ کی وضاحت کرنے کے لئے.



5x25، 10x38 اور 15x50 طول و عرض کے سائز کے ساتھ آئتاکار ڈرائیو (لائن چوڑائی کا سائز استعمال کیا جاتا ہے

کونے کی ورزش کے لئے، LINE_WIDTH پکسلز کے علاوہ دونوں اطراف پر شامل ہیں

آئتاکار طول و عرض):

image

ڈی ایل (COLOR_RGB (128، 0، 0))؛

ڈی ایل (LINE_WIDTH (1 * 16))؛

ڈی ایل (BEGIN (RECTS))؛

ڈی ایل (VERTEX2F (28 * 16،38 * 16))؛

ڈی ایل (VERTEX2F (33 * 1663 * 16))؛

ڈی ایل (COLOR_RGB (0، 128، 0))؛

ڈی ایل (LINE_WIDTH (5 * 16))؛

ڈی ایل (VERTEX2F (50 * 16،25 * 16))؛

ڈی ایل (VERTEX2F (60 * 1663 * 16))؛

ڈی ایل (COLOR_RGB (128، 128، 0))؛

ڈی ایل (LINE_WIDTH (10 * 16))؛

ڈی ایل (VERTEX2F (83 * 16، 13 * 16))؛

ڈی ایل (VERTEX2F (98 * 16، 63 * 16))؛

VERTEX2F حکم دیتا ہے جوڑے میں سب سے اوپر بائیں اور دائیں دائیں کونوں کی وضاحت کرنے کے لئے

آئتاکار

image

image

image

image

2.5.4 ڈسپلے ڈسپلے کی فہرست

wr32 () کے ساتھ ڈسپلے کی فہرست کی اندراجات لکھنا وقت سازی اور غلطی کا شکار ہے، اس کے بجائے ایک

تقریب کا استعمال کیا جا سکتا ہے:

image

image

image

COLOR_RGB کمانڈ موجودہ ڈرائنگ کا رنگ تبدیل کرتا ہے، جس میں بٹ میپ رنگ ہے.

COLOR_A کمانڈ شفافیت کو تبدیل کرنے، موجودہ ڈرائنگ الفا کو تبدیل کرتا ہے

ڈرائنگ کے: 0 کا الفا مکمل طور پر شفاف ہے اور 255 کا الفا مکمل طور پر ہے

اوپیرا. یہاں 150 کی قدر ایک جزوی طور پر شفاف اثر فراہم کرتی ہے.

image

2.5.7 VERTEX2II اور VERTEX2F

مندرجہ بالا استعمال کردہ VERTEX2II کمانڈ صرف مثبت اسکرین کو منظم کرنے کی اجازت دیتا ہے. اگر

بٹ میپ جزوی طور پر اسکرین آف ہے، مثال کے طور پر، اسکرین اسکرین کے دوران، تو یہ ضروری ہے

منفی اسکرین کے نفاذ کی وضاحت کریں. VERTEX2F کمانڈ منفی کی اجازت دیتا ہے

ہم آہنگی یہ جزوی نقطہ نظر کی اجازت دیتا ہے، کیونکہ یہ اسکرین (x، y) کی وضاحت کرتا ہے

ایک پکسل کے 1/16 کے یونٹ.

مثال کے طور پر، VERTEX2F کا استعمال کرتے ہوئے اسکرین کی حیثیت (-10، -10) پر ایک ہی باماپ کا ڈرائنگ کریں:

image

image

image

2.5.9 کارکردگی

گرافکس کے انجن میں کوئی فریم بفر نہیں ہے: یہ ہر ایک کی تعمیر کے لئے متحرک مرکب کا استعمال کرتا ہے

اسکین کے دوران ڈسپلے لائن. اس کی وجہ سے، وہاں دستیاب وقت کی ایک مکمل مقدار ہے

ہر لائن کو ڈراؤ. یہ وقت باہر پیرامیٹرز اسکین پر منحصر ہے (REG_PCLK اور

REG_HCYCLE) لیکن 2048 سے کم داخلی گھڑی سائیکل نہیں ہے.

کچھ کارکردگی کی حد:

 ڈسپلے کی فہرست کی لمبائی 2048 سے زائد ہدایات لازمی ہے، کیونکہ

گرافکس کے انجن ڈسپلے کی فہرست کو ایک فی گھنٹہ فی کمانڈ دیتا ہے.

 گرافکس کے انجن کی کارکردگی میں اضافہ پکسلز فی گھڑی 4 پکسلز ہے، کسی بھی کے لئے

2048 ڈسپلے کی ترتیب کے ساتھ لائن کا ہونا لازمی طور پر تیار ہونا چاہئے

8192 سے بھی کم

 بٹ بپ فارمیٹس کے لئے، ڈرائنگ کی شرح ایک پکسل فی گھڑی ہے. یہ ہیں

TEXT8X8، TEXTVGA اور پالتو جانور.

 bilinear فلیکس پکسل کے لئے، ڈرائنگ کی شرح ¼ پکسل ہر گھڑی میں کم ہو جاتا ہے.

زیادہ تر بٹمپ فارمیٹس 1 پکسل فی گھنٹہ، اور اوپر فارمیٹس میں ڈرا سکتے ہیں

(TEXT8X8، TEXTVGA اور پالتو جانور) 1 پکسل ہر 4 گھڑیوں پر ڈرا.

image