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

ๆฆ‚่ฟฐ

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

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

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

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

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

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

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

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

API

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

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

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

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

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

1

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

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

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

3

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

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

้ชŒ่ฏ

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

ไฝฟ็”จ i2c-tools

่ฐƒ่ฏ•

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

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

ๅŽŸๅ› : ็ผบๅฐ‘ไธŠๆ‹‰็”ต้˜ปใ€ไปŽ่ฎพๅค‡ๆ— ๅ“ๅบ”ใ€ๆ—ถ้’Ÿ้ข‘็އ้”™่ฏฏใ€ๆ€ป็บฟ่ขซๆ‹‰ไฝŽๅกๆญปใ€‚ๅœจ SDA/SCL ไธŠๆทปๅŠ  4.7 kฮฉ ไธŠๆ‹‰็”ต้˜ป;่ฐƒๆ•ด่ฎพๅค‡ๆ ‘ไธญ็š„ clock-frequencyใ€‚
็—‡็Šถ: geni_i2c a94000.i2c: Invalid proto 1็กฎ่ฎค QUPAC_Access.c ไธญ่ฎพ็ฝฎไบ† QUPV3_PROTOCOL_I2Cใ€AC_HLOSใ€bAllowFifo=TRUEใ€bLoad=TRUEใ€‚
็กฎ่ฎค CONFIG_QCOM_GPI_DMA=m;ๆฃ€ๆŸฅ่ฎพๅค‡ๆ ‘ไธญ็š„ dmas ๅ’Œ dma-namesใ€‚่ฆๅœจไธไฝฟ็”จ DMA ็š„ๆƒ…ๅ†ตไธ‹่ฟ›่กŒๆต‹่ฏ•:

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

่ต„ๆบ