A Guide for Adventurers
Randall Hyde

#I2C
#IIC
#Raspberry_Pi
#GPIO
📘 یک راهنمای جامع و کاربردی برای اتصال دستگاههای دنیای واقعی به میکروکنترلرها با استفاده از باس محبوب I2C.
👋 اگه تو حوزه Embedded Systems (سیستمهای نهفته) کار میکنی، امکان نداره گذرت به پروتکل همهجا حاضرِ Inter-Integrated Circuit (که بهش IIC یا I2C میگن) نیفتاده باشه؛ یه پروتکل سریال برای اتصال مدارهای مجتمع توی سیستمهای کامپیوتری. توی کتاب The Book of I2C، که اولین راهنمای جامع برای این باس هست، نویسندهی پرفروش رندال هاید (Randall Hyde) از ۴۰ سال تجربهی صنعتیش استفاده کرده تا تو رو وارد دنیای طراحی و برنامهنویسی سیستمهای I2C کنه.
🛠️ با کمک بیشتر از ۱۰۰ تا نمودار دقیق و لیستینگهای سورسکد که کلی توضیح دارن، پیادهسازیهای I2C رو روی سیستمهایی مثل Arduino، Teensy و Raspberry Pi یاد میگیری. همچنین با انواع مختلف I2C و آیسیهای جانبی (Peripheral) رایجِ این پروتکل، همراه با مثالهای برنامهنویسی آشنا میشی. چه هکر سختافزار باشی، چه علاقمند به الکترونیک و چه مهندس نرمافزار با هر سطح مهارتی، پوشش گستردهی این کتاب باعث میشه هر وقت بخوای دستگاههای دنیای واقعی رو به میکروکنترلرهای I2C وصل کنی، این کتاب بشه مرجع همیشگیت.
📑 فهرست مطالب
بخش اول: پروتکلهای سطح پایین و سختافزار
فصل ۱: سختافزار سطح پایین I2C
فصل ۲: پروتکل I2C
فصل ۳: یک پیادهسازی نرمافزاری از باس I2C
فصل ۴: ابزارهایی برای تحلیل و دیباگ انتقالهای I2C
فصل ۵: انواع و گونههای I2C
بخش دوم: پیادهسازیهای سختافزاری
فصل ۶: I2C روی کامپیوترهای تکبرد رایج (SBC)
فصل ۷: I2C روی باسهای اختصاصی فروشندگان
بخش سوم: برنامهنویسی باس I2C
فصل ۸: برنامهنویسی I2C در آردوینو
فصل ۹: برنامهنویسی I2C در رزبری پای (و لینوکس)
فصل ۱۰: برنامهنویسی I2C در سیستمعاملهای بلادرنگ (RTOS)
فصل ۱۱: برنامهنویسی کنترلر I2C به صورت Bare-Metal (بدون سیستمعامل)
بخش چهارم: مثالهای برنامهنویسی تجهیزات جانبی I2C
فصل ۱۲: گسترشدهنده باس TCA9548A I2C
فصل ۱۳: گسترشدهندههای GPIO مدل MCP23017 و MCP23008
فصل ۱۴: مبدلهای آنالوگ به دیجیتال ADS1015 و ADS1115
فصل ۱۵: مبدل دیجیتال به آنالوگ MCP4725
فصل ۱۶: برنامهنویسی تجهیزات جانبی به صورت Bare-Metal
✍️ درباره نویسنده
👨💻 رندال هاید (Randall Hyde) نویسندهی کتاب معروف The Art of Assembly Language و سری کتابهای Write Great Code (جلدهای ۱، ۲ و ۳) هست (که همگی توسط انتشارات No Starch Press چاپ شدن)، و همچنین کتابهای Using 6502 Assembly Language و P-Source (انتشارات Datamost). ایشون همچنین در نوشتن کتاب Microsoft Macro Assembler 6.0 Bible همکاری داشته. هاید در طول ۴۰ سال گذشته به عنوان مهندس سختافزار/نرمافزار امبدد کار کرده و ابزارهایی برای راکتورهای هستهای، سیستمهای کنترل ترافیک و سایر دستگاههای الکترونیکی مصرفی توسعه داده. اون همچنین توی دانشگاه پلیتکنیک ایالتی کالیفرنیا (Pomona) و دانشگاه کالیفرنیا (Riverside) علوم کامپیوتر تدریس کرده. وبسایت ایشون هم اینجاست: http://www.randallhyde.com.
An extensive practical guide to connecting real-world devices to microcontrollers with the popular I2C bus.
If you work with embedded systems, you’re bound to encounter the ubiquitous Inter-Integrated Circuit bus (IIC or I2C) – a serial protocol for connecting integrated circuits in a computer system. In The Book of I2C, the first comprehensive guide to this bus, bestselling author Randall Hyde draws on 40 years of industry experience to get you started designing and programming I2C systems.
Aided by over 100 detailed figures and annotated source-code listings, you’ll learn the I2C implementations of systems like Arduino, Teensy, and Raspberry Pi, as well as variants of the I2C and common I2C peripheral ICs complete with programming examples. For hardware hackers, electronics hobbyists, and software engineers of every skill level, the extensive coverage in this book will make it a go-to reference when it comes to connecting real-world devices to I2C microcontrollers.
Table of Contents
Part I: Low-Level Protocols and Hardware
Chapter 1: 12C Low-Level Hardware
Chapter 2: 12C Protocol
Chapter 3: A Software Implementation of the 12C Bus
Chapter 4: Tools for Analyzing and Debugging 12C Transmissions
Chapter 5: 12C Variants
Part II: Hardware Implementations
Chapter 6: 12C On Common Single-Board Computers
Chapter 7: 12C On Vendor Buses
Part Ill: Programming the 12c Bus
Chapter 8: Arduino 12C Programming
Chapter 9: Raspberry Pi {and Linux) 12C Programming
Chapter 10: 12C Programming in Real-Time Operating Systems
Chapter 11: Bare-Metal 12C Cont roller Programming
Part IV: 12c Peripheral Programming Examples
Chapter 12: The TCA9548A 12C Bus Expander
Chapter 13: The MCP23017 and MCP23008 GPIO Expanders
Chapter 14: The ADS1015 and ADS1115 Analog-to-Digital Converters
Chapter 15: The MCP4725 Digital-to-Analog Converter
Chapter 16: Bare-Metal Peripheral Programming
Randall Hyde is the author of The Art of Assembly Language and Write Great Code, Volumes 1, 2, and 3 (all from No Starch Press), as well as Using 6502 Assembly Language and P-Source (Datamost). He is also the coauthor of Microsoft Macro Assembler 6.0 Bible (The Waite Group). Over the past 40 years, Hyde has worked as an embedded software/hardware engineer developing instrumentation for nuclear reactors, traffic control systems, and other consumer electronics devices. He has also taught computer science at California State Polytechnic University, Pomona, and at the University of California, Riverside. His website is http://www.randallhyde.com.









