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

ๆฆ‚่ฟฐ

ไธป่ฆ็‰นๆ€ง

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

ๅทฅไฝœๆจกๅผ

้€šไฟกๆ—ถๅบ

ๆ•ฐๆฎๅŒ…็ป“ๆž„: ่ตทๅง‹ โ†’ ๅœฐๅ€ๅธง(7/10 ไฝ) โ†’ R/W ไฝ โ†’ 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)้…็ฝฎ,้ชŒ่ฏ็”ตๆบๅŸŸไพ่ต–ๅ…ณ็ณป,ๅนถๆทปๅŠ ๅˆ้€‚็š„ๆŒ‚่ตท/ๆขๅคๅค„็†็จ‹ๅบใ€‚

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

่ต„ๆบ