I2CSET(8) System Manager's Manual I2CSET(8)

i2cset - تنظیم و مقداردهی ثبات‌های I2C

i2cset [-f] [-y] [-m mask] [-r] [-a] i2cbus chip-address data-address [value] ... [mode]
i2cset -V
i2cset -h

دستور i2cset یک برنامه کمکی کوچک برای مقداردهی و تنظیم ثبات‌های قابل مشاهده از طریق گذرگاه I2C است.

نمایش نسخه و خروج.
نمایش راهنما و خروج.
اجبار به دسترسی به دستگاه حتی در صورتی که مشغول باشد. به‌طور پیش‌فرض، i2cset از دسترسی به دستگاهی که تحت کنترل یک درایور هسته است خودداری می‌کند. استفاده از این فلگ خطرناک است و می‌تواند درایور هسته مربوطه را به شدت سردرگم کند. همچنین می‌تواند باعث شود i2cset بدون اخطار در ثبات اشتباهی بنویسد. بنابراین با مسئولیت خود و تنها در صورتی که می‌دانید چه می‌کنید از آن استفاده نمایید.
غیرفعال کردن حالت تعاملی. به‌طور پیش‌فرض، i2cset قبل از دستکاری گذرگاه I2C منتظر تأیید کاربر می‌ماند. با استفاده از این فلگ، عملیات را مستقیماً انجام می‌دهد. این گزینه عمدتاً برای استفاده در اسکریپت‌ها در نظر گرفته شده است.
پارامتر mask، در صورت تعیین، مشخص می‌کند کدام بیت‌های value در عمل در data-address نوشته خواهند شد. بیت‌هایی که در ماسک برابر با ۱ تنظیم شده‌اند از value گرفته می‌شوند، در حالی که بیت‌های تنظیم‌شده روی ۰ از data-address خوانده شده و بنابراین در طول عملیات حفظ می‌گردند. لطفاً توجه داشته باشید که این پارامتر فرض می‌کند عملیات خواندن و نوشتن برای حالت مشخص‌شده روی دستگاهی که به آن دسترسی دارید متقارن است. این موضوع ممکن است همیشه صادق نباشد، زیرا نه I2C و نه SMBus چنین تقارنی را تضمین نمی‌کنند.
خواندن مجدد مقدار بلافاصله پس از نوشتن آن و مقایسه نتیجه با مقدار نوشته‌شده. این رفتار در گذشته رفتار پیش‌فرض بود. همان محدودیت‌های گزینه -m در اینجا نیز اعمال می‌شوند.
اجازه استفاده از آدرس‌های بین 0x00 - 0x07 و 0x78 - 0x7f. توصیه نمی‌شود.

سه پارامتر الزامی برای i2cset وجود دارد. i2cbus شماره یا نام گذرگاه I2C برای پویش را مشخص می‌کند. این شماره باید با یکی از گذرگاه‌های فهرست‌شده توسط i2cdetect -l مطابقت داشته باشد. chip-address آدرس تراشه روی آن گذرگاه را مشخص می‌کند و یک عدد صحیح بین 0x08 و 0x77 است. data-address آدرس مورد نظر روی آن تراشه برای نوشتن را مشخص می‌کند و یک عدد صحیح بین 0x00 و 0xFF است.

پارامتر value، در صورت تعیین، مقداری است که باید در آن مکان روی تراشه نوشته شود. اگر این پارامتر حذف شود، یک نوشتن کوتاه (short write) صادر می‌گردد. برای اکثر تراشه‌ها، این عمل صرفاً یک اشاره‌گر داخلی را روی مکان مورد نظر تنظیم می‌کند، اما در عمل چیزی در آن مکان نمی‌نویسد. هرچند برای تعداد اندکی از تراشه‌ها، به‌ویژه تراشه‌های ساده‌ای که تنها یک ثبات دارند، این نوشتن کوتاه در واقع یک نوشتن واقعی است. اگر پارامتر حالت برابر با s یا i باشد، می‌توان چندین مقدار را مشخص کرد.

پارامتر mode، در صورت تعیین، یکی از حروف b، w، s یا i است که به ترتیب متناظر با اندازه نوشتن یک تک‌بایت، یک کلمه ۱۶ بیتی، نوشتن بلوکی SMBus یا نوشتن بلوکی I2C می‌باشند. برای نوشتن‌های بلوکی SMBus و I2C، اندازه نوشتن با تعداد پارامترهای value تعیین می‌شود. به جز برای نوشتن‌های بلوکی I2C، می‌توان یک p را نیز به انتهای پارامتر mode افزود تا PEC فعال گردد. اگر پارامتر mode حذف شود، i2cset به‌طور پیش‌فرض از حالت بایتی بدون PEC استفاده می‌کند. مقدار value ارائه‌شده باید در محدوده مجاز برای نوع داده مشخص‌شده باشد (0x00 - 0xFF برای نوشتن‌های بایتی و بلوکی، و 0x0000 - 0xFFFF برای کلمه‌ها). حالت ممکن دیگر c است که هیچ مقداری را نمی‌نویسد (به‌اصطلاح نوشتن کوتاه). معمولاً نیازی به تعیین این حالت ندارید، زیرا در صورت عدم ارائه مقدار، این حالت پیش‌فرض است؛ مگر اینکه بخواهید PEC را نیز فعال کنید.

دستور i2cset در صورت استفاده نادرست می‌تواند بسیار خطرناک باشد. این دستور می‌تواند گذرگاه I2C شما را سردرگم کند، موجب از دست رفتن داده‌ها شود، یا اثرات جانبی جدی‌تری داشته باشد. نوشتن روی یک EEPROM سریال در ماژول حافظه DIMM (آدرس‌های تراشه بین 0x50 و 0x57) ممکن است حافظه شما را نابود کند و سیستم شما را غیرقابل راه‌اندازی (Unbootable) سازد! هنگام استفاده از این برنامه به شدت احتیاط کنید.

نوشتن مقدار 0x42 در ثبات ۸ بیتی 0x11 از دستگاه I2C در آدرس ۷ بیتی 0x2d روی گذرگاه ۱ (i2c-1)، پس از تأیید کاربر:

# i2cset 1 0x2d 0x11 0x42

پاک کردن فوری ۳ بیت کم‌ارزش ثبات ۸ بیتی 0x11 از دستگاه I2C در آدرس ۷ بیتی 0x2d روی گذرگاه ۱ (i2c-1) (بدون نیاز به تأیید کاربر):

# i2cset -y -m 0x07 1 0x2d 0x11 0x00

نوشتن مقدار 0x5000 در ثبات ۱۶ بیتی 0x02 از دستگاه I2C در آدرس ۷ بیتی 0x48 روی گذرگاه ۱ (i2c-1)، پس از تأیید کاربر:

# i2cset 1 0x48 0x02 0x5000 w

همچنین برای مشاهده مثال‌هایی از استفاده ترکیبی از i2cset و i2cget، صفحه i2cget(8) را ببینید.

برای گزارش اشکالات یا ارسال اصلاحات، لطفاً به فهرست پستی Linux I2C به نشانی <linux-i2c@vger.kernel.org> همراه با رونوشت (Cc) به نگه‌دارنده فعلی بنویسید: Jean Delvare <jdelvare@suse.de>.

i2cdetect(8), i2cdump(8), i2cget(8), i2ctransfer(8), isaset(8)

Frodo Looijaard، Mark D. Studebaker و Jean Delvare

این صفحه راهنما در ابتدا توسط David Z Maze <dmaze@debian.org> برای سیستم Debian GNU/Linux نوشته شده بود.

مه ۲۰۲۲