R_p(min) = (V_CC − V_OL(max)) / I_OL = (3.3 − 0.4) V / 3 mA = 967 Ω
R_p(max) = t_r / (0.8473 × C_b)
Fast-mode 400 kHz (t_r ≤ 300 ns), บัส 100 pF → 3.54 kΩ
Standard-mode 100 kHz (t_r ≤ 1000 ns), บัส 100 pF → 11.8 kΩ
บัส 400 kHz ความจุ 100 pF จึงเลือกได้ระหว่าง 967 Ω ถึง 3.54 kΩ เช่น 2.2 kΩ (ค่าคงที่ 0.8473 = ln(0.7/0.3))
บัส I2C บน header ของ TESAIoT Dev Kit มีชิป CapSense (PSoC 4000T) ตอบที่ 0x08
1 บิต = 1/115200 = 8.68 µs 1 ไบต์ = 10 บิต = 86.8 µs สูงสุด 11,520 ไบต์/วินาที
ตั้ง baud ผิด decoder วัดบิตผิดจังหวะ
| สิ่งที่เห็น | สาเหตุที่เป็นไปได้ |
|---|---|
| I2C: address ได้ NACK ทุกที่อยู่ | ไม่มีอุปกรณ์ ไฟเลี้ยงไม่มา SDA/SCL สลับกัน หรือ address ผิด |
| I2C: SDA หรือ SCL ค้างต่ำตลอด | อุปกรณ์ค้างกลางธุรกรรม หรือสายลัดกราวด์ |
| UART: ไม่มีอะไรบน RX ทั้งที่อีกฝั่งส่ง | ต่อ TX เข้า TX (ต้องไขว้ TX กับ RX) หรือลืมต่อ GND ร่วม |
หา baud จากภาพ ซูมหาพัลส์ที่แคบที่สุด (หนึ่งบิต) แล้วคำนวณ baud ≈ 1/ความกว้าง — พัลส์ 8.68 µs คือ 115200
1. ต่อสาย GND→GND, CH0→SCL, CH1→SDA
2. อัตราสุ่ม ยังไม่รู้ความเร็วบัส ใช้ 8 MHz ไว้ก่อน (ครอบคลุมถึง 400 kHz)
3. trigger ขอบขาลงของ SDA (เกิดตอน START)
4. เพิ่ม decoder I2C, SCL=CH0, SDA=CH1
5. อ่านผล Start → Address write: 08 → ACK/NACK → Stop ซ้ำไปเรื่อย ๆ
6. ตรวจ 0x08 ควรได้ ACK (ชิป CapSense) นับที่อยู่ที่ ACK ทั้งหมด เทียบกับ "Found N device(s)"
7. ดูไบต์ดิบ address แบบ 8 บิต ที่อยู่ 0x08 แบบเขียนต้องเป็น 0x10
ถ้าจำนวน ACK ไม่ตรงกับจอ ตรวจก่อนว่าจับครบทั้ง 112 ที่อยู่ และอัตราสุ่มเร็วพอไหม
ฝึกเติม
แล็บ ส่วน A สแกนบัส I2C ตามตัวอย่างสมบูรณ์ เติมตาราง (ความถี่ SCL, จำนวนที่ถูกถาม, ที่อยู่ที่ ACK)
แล็บ ส่วน B UART Echo — ตั้ง decoder baud 115200, 8N1 เทียบไบต์ที่ decoder อ่านกับบรรทัด TX: บนจอ แล้ว ทำให้ผิดโดยตั้งใจ เปลี่ยน baud เป็น 57600 และ 9600 ดูว่า decoder แสดงอะไร
อุปกรณ์มี address 7 บิตเป็น 0x30 ไบต์แรกบนสาย SDA เมื่อมาสเตอร์ขอเขียนคืออะไร
ข้อใดถูกต้องเกี่ยวกับสัญญาณ I2C (เลือกได้มากกว่าหนึ่งข้อ)
สัญญาณจริงเป็น 115200 baud แต่ตั้ง decoder ไว้ที่ 9600 จะเห็นอะไร
logic analyzer บอกได้ว่าสัญญาณเป็น 0 หรือ 1 เมื่อไร แต่ไม่บอกว่าแรงดันจริงหน้าตาเป็นอย่างไร บทเรียนถัดไป ออสซิลโลสโคปเบื้องต้น จะให้เราเห็นขอบสัญญาณ แรงดันเกิน และสัญญาณรบกวนที่ logic analyzer มองไม่เห็น
"อิเล็กทรอนิกส์และเครื่องมือวัดสำหรับนักพัฒนาระบบฝังตัว" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย
(Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program
สัญญาอนุญาต CC BY-NC 4.0
แผนภาพในบทเรียนนี้เป็นงานวาดของหลักสูตรนี้เอง (CC BY-NC 4.0)
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0