Skip to main content
้›†ๆˆ็”ต่ทฏๆ€ป็บฟ(IยฒC)ๆ˜ฏไธ€็งๅŒๅ‘ใ€ๅŒ็บฟไธฒ่กŒๆ€ป็บฟ,็”จไบŽ้›†ๆˆ็”ต่ทฏไน‹้—ด็š„็Ÿญ่ท็ฆป้€šไฟก,่ฎพๅค‡ไฝฟ็”จๅˆ†้…็š„ๆ€ป็บฟๅœฐๅ€่ฟ›่กŒ้€šไฟกใ€‚

ๆฆ‚่ฟฐ

ๅ…ณ้”ฎ็‰นๆ€ง

  • ๅŒๅ‘ 2 ็บฟไธฒ่กŒๆ€ป็บฟ(SDA + SCL)
  • 7 ไฝๆˆ– 10 ไฝ็›ฎๆ ‡ๅฏปๅ€
  • ๆ”ฏๆŒๅคšๆŽงๅˆถๅ™จๆจกๅผ

่ฟ่กŒๆจกๅผ

้€šไฟกๅบๅˆ—

ๆ•ฐๆฎๅŒ…็ป“ๆž„: ่ตทๅง‹ไฝ โ†’ ๅœฐๅ€ๅธง(7/10 ไฝ)โ†’ ่ฏป/ๅ†™ไฝ โ†’ ACK/NACK โ†’ ๆ•ฐๆฎๅธง(8 ไฝ)โ†’ ๅœๆญขไฝ ไฟกๅท่ง„ๅˆ™:
  • SCL ไธบ้ซ˜็”ตๅนณๆ—ถ:SDA ๅฟ…้กปไฟๆŒ็จณๅฎš
  • SCL ไธบไฝŽ็”ตๅนณๆ—ถ:SDA ๅฏไปฅๅ˜ๅŒ–
  • ไพ‹ๅค–:START ๅ’Œ STOP ๅบๅˆ—ๅฏๅœจ SCL ไธบ้ซ˜็”ตๅนณๆ—ถๆ”นๅ˜ SDA

ๅ„ๅญ็ณป็ปŸ็š„ไผ ่พ“ๆจกๅผ

ๆŽฅๅฃ็ป„ไปถ

่ฎพๅค‡ๆ ‘ๆบๆ–‡ไปถ

API

่ฝฏไปถ่ฎพๅค‡ๆ ‘้…็ฝฎ

Linux ่ฎพๅค‡ๆ ‘็คบไพ‹

GPIO pinctrl:

QUPAC ่ฎฟ้—ฎๆŽงๅˆถ

็กฎไฟๅœจ QUPAC_Access.c ไธญ่ฎพ็ฝฎไบ†ๆญฃ็กฎ็š„ๅ่ฎฎ:

้…็ฝฎๆญฅ้ชค

1

ๅฏ็”จๅ†…ๆ ธ้…็ฝฎ

็ผ–่พ‘ kernel_platform/kernel/arch/arm64/configs/qcom_defconfig:
2

ๅœจ่ฎพๅค‡ๆ ‘ไธญๅฏ็”จ I2C ่Š‚็‚น

3

็ผ–่ฏ‘ๅนถๅˆทๅ†™

็ผ–่ฏ‘ๅ†…ๆ ธๅ’Œ่ฎพๅค‡ๆ ‘ๆ›ดๆ”น,็„ถๅŽๅฐ†้•œๅƒๅŠ ่ฝฝๅˆฐ่ฎพๅค‡ใ€‚

้ชŒ่ฏ

ๆฃ€ๆŸฅ่ฎพๅค‡่Š‚็‚น

ไฝฟ็”จ i2c-tools

่ฐƒ่ฏ•

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

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

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

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

็—‡็Šถ: i2cdetect ๆœชๆ˜พ็คบไปปไฝ•่ฎพๅค‡;/dev/i2c-X ไธๅญ˜ๅœจใ€‚ๆฃ€ๆŸฅ่ฎพๅค‡ๆ ‘็Šถๆ€:
ๆฃ€ๆŸฅๅ†…ๆ ธๆจกๅ—:
ๆฃ€ๆŸฅๆ—ถ้’Ÿ:
ๆฃ€ๆŸฅ GPIO pinmux:
็—‡็Šถ:
ๅŽŸๅ› ไธŽ่งฃๅ†ณๆ–นๆณ•:
  • ็ผบๅฐ‘ไธŠๆ‹‰็”ต้˜ป โ€” ๅœจ SDA/SCL ไธŠๆทปๅŠ  4.7 kฮฉ ไธŠๆ‹‰็”ต้˜ป
  • ไปŽ่ฎพๅค‡ๆ— ๅ“ๅบ” โ€” ้ชŒ่ฏไปŽ่ฎพๅค‡็š„็”ตๆบๅ’Œๅคไฝ;ๆฃ€ๆŸฅๅˆๅง‹ๅŒ–ๅบๅˆ—
  • ๆ—ถ้’Ÿ้ข‘็އ้”™่ฏฏ โ€” ๅœจ่ฎพๅค‡ๆ ‘ไธญ่ฐƒๆ•ด clock-frequency
  • ๆ€ป็บฟ่ขซๆ‹‰ไฝŽๅกๆญป โ€” ๅฏน่ฎพๅค‡้‡ๆ–ฐไธŠ็”ต,ๆˆ–ๅ‘้€ๆ—ถ้’Ÿ่„‰ๅ†ฒไปฅ้‡Šๆ”พๆ€ป็บฟ
็—‡็Šถ:
ๆญฅ้ชค:
  1. ่ฏ†ๅˆซๆฟๅก็ฑปๅž‹:dmesg | grep "CDT Version"
  2. ๅœจ QUPAC_Access.xml ไธญๆ‰พๅˆฐๅนณๅฐ ID
  3. ้ชŒ่ฏ QUPAC_Access.c ไธญ่ฎพ็ฝฎไบ† QUPV3_PROTOCOL_I2Cใ€AC_HLOSใ€bAllowFifo=TRUEใ€bLoad=TRUE
  4. ๅฆ‚ๆœ‰ๆ›ดๆ”น,้‡ๆ–ฐๆž„ๅปบ TEE ๅ›บไปถ
็—‡็Šถ: ่ฏปๅ–็š„ๆ•ฐๆฎไธๆญฃ็กฎ;้—ดๆญ‡ๆ€งๅคฑ่ดฅใ€‚่งฃๅ†ณๆ–นๆณ•:
  • ้™ไฝŽๆ€ป็บฟ้€Ÿๅบฆ
  • ็ผฉ็Ÿญๅฏผ็บฟ้•ฟๅบฆ;ๆทปๅŠ  22โ€“100 ฮฉ ไธฒ่”็”ต้˜ป
  • ๅœจ่ฎพๅค‡้™„่ฟ‘ๆทปๅŠ ๅŽป่€ฆ็”ตๅฎน
  • ไฝฟ็”จ็คบๆณขๅ™จ้ชŒ่ฏๅปบ็ซ‹ๅ’ŒไฟๆŒๆ—ถ้—ด
็—‡็Šถ:
่งฃๅ†ณๆ–นๆณ•: ้ชŒ่ฏ CONFIG_QCOM_GPI_DMA=m;ๆฃ€ๆŸฅ DMA ้€š้“ๅˆ†้…;็กฎไฟ DMA ๅฎ‰ๅ…จ็š„ๅ†…ๅญ˜ๅฏน้ฝใ€‚ไธไฝฟ็”จ DMA ่ฟ›่กŒๆต‹่ฏ•:
ๆฃ€ๆŸฅ่ฟ่กŒๆ—ถ็”ตๆบ็ฎก็†(runtime PM)้…็ฝฎ,้ชŒ่ฏ็”ตๆบๅŸŸไพ่ต–ๅ…ณ็ณป,ๅนถๆทปๅŠ ้€‚ๅฝ“็š„ๆŒ‚่ตท/ๆขๅคๅค„็†็จ‹ๅบใ€‚

ๅฟซ้€Ÿ่ฏŠๆ–ญๅ‘ฝไปค

่ต„ๆบ