Skip to main content
ๆ”น่ฟ›ๅž‹้›†ๆˆ็”ต่ทฏไบ’่ฟž(I3C)ๆŽฅๅฃไธบๆ‰€่ฟžๆŽฅ็š„ I3C ่ฎพๅค‡ๆไพ›ไบ†ไธ€็งๅฟซ้€Ÿใ€ไฝŽๆˆๆœฌใ€ไฝŽๅŠŸ่€—็š„ 2 ็บฟๆ•ฐๅญ—ๆŽฅๅฃใ€‚
I3C ไป…ๆ”ฏๆŒ็”จไบŽ aDSP ไผ ๆ„Ÿๅ™จ้€šไฟกใ€‚ไธๆ”ฏๆŒ็”จไบŽ Linux ็”จไพ‹ใ€‚

ๆฆ‚่ฟฐ

ๆ€ป็บฟ็‰นๆ€ง

  • 2 ็บฟไธฒ่กŒๆŽฅๅฃ(SDA + SCL),ๆ”ฏๆŒ้ซ˜่พพ 12.5 MHz
  • ๅ‘ๅŽๅ…ผๅฎนๅŒไธ€ๆ€ป็บฟไธŠ็š„ไผ ็ปŸ I2C ่ฎพๅค‡
  • ๅœฐๅ€้˜ถๆฎต:400 kHz
  • ๆ•ฐๆฎ้˜ถๆฎต:12.5 MHz

้ซ˜็บง็‰นๆ€ง

  • ๆ”ฏๆŒๅธฆๅ†…ไธญๆ–ญ(IBI)
  • ็ƒญๅŠ ๅ…ฅ(ๅŠจๆ€ๆทปๅŠ ่ฎพๅค‡)
  • ๅŒๆญฅๅฎšๆ—ถไธŽๅผ‚ๆญฅๆ—ถ้—ดๆˆณ
  • ๅ†™ๆ“ไฝœๆœŸ้—ด็š„ 8 ไฝๆ•ฐๆฎๅฅ‡ๅถๆ ก้ชŒ
  • ็›ฎๆ ‡่ฎพๅค‡็š„ๅŠจๆ€ๅฏปๅ€
  • ๅ•ๅ€ๆ•ฐๆฎ้€Ÿ็އ(SDR)ๆจกๅผ
  • ็ฌฆๅˆ MIPI I3C ่ง„่Œƒ็š„ CCC(้€š็”จๅ‘ฝไปคไปฃ็ )

ๆ•ฐๆฎ้˜ถๆฎตๆจกๅผ

ๆ•ฐๆฎๅŒ…ๅธง็ป“ๆž„

ๆ€ป็บฟๅˆๅง‹ๅŒ–

1

ๆŽงๅˆถๅ™จๅˆๅง‹ๅŒ–

I3C ๆŽงๅˆถๅ™จ้ฉฑๅŠจๅˆๅง‹ๅŒ–ๆŽงๅˆถๅ™จ,ๅŒ…ๆ‹ฌๅ›บไปถๅŠ ่ฝฝๅ’Œ้…็ฝฎ่ฎพ็ฝฎใ€‚
2

้…็ฝฎไธŽ่ฎพๅค‡ๆ•ฐๆฎๅบ“่ฏปๅ–

้ฉฑๅŠจ่ฏปๅ– I3C ้…็ฝฎๅ’Œ่ฎพๅค‡ๆ•ฐๆฎๅบ“:
  • I2C ้™ๆ€ๅœฐๅ€่ฎพๅค‡ๅˆ—่กจ
  • I3C ้™ๆ€ๅœฐๅ€่ฎพๅค‡ๅˆ—่กจ
  • ้ข„ๆœŸ็š„ I3C ๅŠจๆ€่ฎพๅค‡(ไพ›ๅบ”ๅ•† IDใ€่ฎพๅค‡ IDใ€้ข„ๅฎšไน‰ๅŠจๆ€ๅœฐๅ€ใ€ๅ…ณ่”้ฉฑๅŠจ)
  • ๅฏ้€‰็š„ๅ…่ฎธ็ƒญๅŠ ๅ…ฅ่ฎพๅค‡
3

่ฎพๅค‡ๆžšไธพ

้ฉฑๅŠจๆžšไธพๆ€ป็บฟไธŠ็š„่ฎพๅค‡ๅนถๅˆ†้…ๆœฌๅœฐๅœฐๅ€ใ€‚
4

ๆ€ป็บฟ้…็ฝฎ

้ฉฑๅŠจๅฐ†ๆ€ป็บฟ้…็ฝฎๅ†™ๅ…ฅๆŽงๅˆถๅ™จ:
  • ๅทฅไฝœ้ข‘็އ
  • ็บฏ I3C/ไผ ็ปŸ I2C ๆจกๅผ
  • SDR/HDR ๅฏ็”จ/็ฆ็”จ
  • ๅ…ทๅค‡ IBI ่ƒฝๅŠ›็š„่ฎพๅค‡ๅŠ้ข„ๆœŸๆ•ฐๆฎๅญ—่Š‚ๆ•ฐ
5

ๅฎขๆˆท็ซฏ่ฝฏไปถ้…็ฝฎ

ๅฎขๆˆท็ซฏ่ฝฏไปถๆŽฅๆ”ถ I2C/I3C ่ฎพๅค‡ๅŠ็ƒญๅŠ ๅ…ฅ่ฎพๅค‡็š„่ฎพๅค‡ๅˆ—่กจๅ’Œ้…็ฝฎใ€‚

่ฝฏไปถ้…็ฝฎ

ๅ›บไปถๅŠ ่ฝฝ

QUP v3 ไธฒ่กŒๅผ•ๆ“Ž็š„ I3C ๅ›บไปถๅœจ aDSP ๅฏๅŠจๆœŸ้—ด้š SSC QUP ไธ€่ตทๅŠ ่ฝฝใ€‚ ้…็ฝฎๆ–‡ไปถ:
ไธฒ่กŒๅผ•ๆ“Ž้…็ฝฎ็คบไพ‹:

GPIO ้…็ฝฎ

ๅ„ไธฒ่กŒๅผ•ๆ“Ž็š„้ป˜่ฎค GPIO ้…็ฝฎไฝไบŽ:
่ฆ†็›–็คบไพ‹:
TLMM_MAP(active_pull, drive_strength, sleep_pull) โ€” I3C ไฝฟ็”จไธŠๆ‹‰ๆฟ€ๆดปใ€2 mA ้ฉฑๅŠจใ€keeper ไผ‘็œ ้…็ฝฎใ€‚

API

่ฐƒ่ฏ•

ๅฏ็”จ่ฐƒ่ฏ•ๆ—ฅๅฟ—

ๆฃ€ๆŸฅ่ฎพๅค‡ๆžšไธพ

ๆฃ€ๆŸฅ GPIO ๅ’Œๆ—ถ้’Ÿ

ๅฏ็”จ I3C ่ทŸ่ธช

ๆ•…้šœๆŽ’้™ค

  • ๆฃ€ๆŸฅ SDA/SCL ็š„็‰ฉ็†่ฟžๆŽฅๅ’ŒไธŠๆ‹‰็”ต้˜ป(1โ€“4.7 kฮฉ)
  • ๆฃ€ๆŸฅ่ฎพๅค‡ๆ ‘ไธญ็š„ I3C ่Š‚็‚น้…็ฝฎ
  • ้€š่ฟ‡ dmesg | grep -i i3c ๆŸฅ็œ‹ๆžšไธพ้”™่ฏฏ
  • ็กฎ่ฎคไพ›ๅบ”ๅ•† ID ๅ’Œ่ฎพๅค‡ ID ไธŽ้ข„ๆœŸๅ€ผๅŒน้…
็—‡็Šถ: ่ฎพๅค‡ๅœจๆžšไธพๆœŸ้—ดๆ— ๅ“ๅบ”ใ€‚็กฎ่ฎคๅœฐๅ€้˜ถๆฎต็š„ SCL ้ข‘็އไธบ 400 kHzใ€‚ๅฆ‚ๆœ‰้œ€่ฆ,ๅœจๅ›บไปถ้…็ฝฎไธญ่ฐƒๆ•ดๆ—ถ้’Ÿๅˆ†้ข‘ๅ™จ่ฎพ็ฝฎใ€‚
็—‡็Šถ: ๆ•ฐๆฎๆŸๅๆˆ–่ฏป/ๅ†™ๅคฑ่ดฅใ€‚ๆฃ€ๆŸฅๆ€ป็บฟ็”ตๅฎน โ€” ๅฟ…่ฆๆ—ถๅ‡ๅฐใ€‚็กฎ่ฎคๆ•ฐๆฎ้˜ถๆฎต็š„ SCL ้ข‘็އไธบ 12.5 MHzใ€‚
  • ็กฎ่ฎค้…็ฝฎไธญๅทฒๅฏ็”จ็ƒญๅŠ ๅ…ฅ
  • ๅฐ†่ฎพๅค‡ๆทปๅŠ ๅˆฐๅ…่ฎธ็ƒญๅŠ ๅ…ฅๅˆ—่กจ(ไพ›ๅบ”ๅ•† ID + ่ฎพๅค‡ ID)
  • ๆฃ€ๆŸฅ IBI ้…็ฝฎๅ’Œ่ฎพๅค‡ไธŠ็”ตๆ—ถๅบ
  • ็กฎ่ฎคๆ€ป็บฟๆจกๅผ(็บฏ I3C ไธŽไผ ็ปŸ I2C)
  • ๆฃ€ๆŸฅ I2C ไธŽ I3C ่ฎพๅค‡ไน‹้—ด็š„ๅœฐๅ€ๅ†ฒ็ช
  • ็กฎ่ฎคๅผ€ๆผไธŽๆŽจๆŒฝๆจกๅผๅˆ‡ๆขๆญฃ็กฎ
  • ๅœจ้…็ฝฎไธญไธบ็‰นๅฎš่ฎพๅค‡ๅฏ็”จ IBI
  • ้…็ฝฎๆญฃ็กฎ็š„้ข„ๆœŸๆ•ฐๆฎๅญ—่Š‚ๆ•ฐ
  • ็กฎ่ฎคไธญๆ–ญๅค„็†็จ‹ๅบๅทฒๆณจๅ†Œ
็—‡็Šถ: ้—ดๆญ‡ๆ€ง้€šไฟกๅคฑ่ดฅใ€‚
  • ๆต‹้‡ SDA ๅ’Œ SCL ไธŠ็š„ไธŠๅ‡/ไธ‹้™ๆ—ถ้—ด
  • ่ฐƒๆ•ดไธŠๆ‹‰็”ต้˜ป็š„้˜ปๅ€ผ
  • ๆทปๅŠ ไธฒ่”็ปˆ็ซฏ็”ต้˜ป
  • ็ผฉ็Ÿญๆ€ป็บฟ้•ฟๅบฆๆˆ–ๅ‡ๅฐ็”ตๅฎน

ๅธธ่ง้”™่ฏฏไปฃ็ 

ไธบๆ”ฏๆŒๅ›ข้˜Ÿๆ”ถ้›†ๆ—ฅๅฟ—

่ต„ๆบ

  • MIPI I3C ่ง„่Œƒ
  • Qualcomm Linux ๆŽฅๅฃๆŒ‡ๅ—
  • QUP v3 ไธฒ่กŒๅผ•ๆ“Žๆ–‡ๆกฃ