Perhitungan resistor pullup I2C

10

Saya mencoba menggerakkan layar LCD I2C ini dengan mikrokontroler ATxmega16A4U .

Kedua perangkat terdaftar untuk bekerja dengan frekuensi clock I2C hingga 400 kHz. Kedua perangkat adalah satu-satunya perangkat di bus I2C.

Namun, menghitung perhitungan untuk batas resistor pull-up memberikan beberapa nilai yang agak aneh.

Menghitung nilai resistor pullup minimum I2C:

Rmsayan=Vcc-0,43mSEBUAH=966.7Ω

Melihat lembar data UC, pada halaman 92 daftar kapasitansi input pin maksimum 10pF.

Namun untuk LCD, ada pada halaman 8 sesuatu yang disebut Capacitive load represent by each bus lineberlabel Cb, dan terdaftar pada nilai maksimal 400pF. Saya berasumsi saya hanya harus menambahkan nilai ini ke kapasitansi input UC 10pF, tapi ini tampaknya sangat tinggi dan perhitungannya tidak bagus.

Misalnya, ketika saya mencoba menghitung nilai resistor pullup maksimum untuk clock 400kHz:

RmSebuahx=300ns10halF+400halF=731.7Ω

Apakah saya salah menafsirkan lembar data LCD? Jelas nilai resistor pullup maksimum yang diijinkan tidak boleh lebih kecil dari nilai minimum yang diijinkan.

demikian juga, jika saya mengasumsikan kapasitansi bus bersih maksimum 400pF, saya mendapatkan:

RmSebuahx=300ns400halF=750Ω

masih di bawah nilai maksimum yang diijinkan.

helloworld922
sumber

Jawaban:

11

Ada kesalahan ketik dalam lembar data Atmel, waktu naik untuk kasus 100kHz harus 1000ns, bukan 100ns (tidak perlu lebih rendah dari kasus 400kHz 300ns) maka Anda mendapatkan:

1kamus400halF=2.5kΩ

Lembar data LCD (hampir pasti) berarti kapasitansi bus maksimum, bukan kapasitansi yang ditambahkannya ke bus. Mungkin menambah sekitar 10pF. Anda bisa mengeceknya dengan LCR meter atau hanya mengaturnya dengan resistor 2k dan melihat waktu naiknya.

Banyak perangkat yang tidak sepenuhnya memenuhi spesifikasi resmi 400kHz , jadi yang terbaik untuk merujuk pada ini untuk memahami kondisi di mana 400kHz dapat bekerja (kapasitansi bus, pullup / sumber arus / dll) Lihat bagian 6 dan seterusnya secara khusus (misalnya, lihat perhatikan 4 pada hal.47:

[4] Untuk menggerakkan muatan bus penuh pada 400 kHz, IOL 6 mA diperlukan pada VOL 0,6 V. Bagian yang tidak memenuhi spesifikasi ini masih dapat berfungsi, tetapi tidak pada 400 kHz dan 400 pF)

Selanjutnya, tabel ini cukup membantu, dan terlihat setuju dengan perhitungan Anda:

Penarikan I2C

Oli Glaser
sumber
Ya, saya perhatikan itu tentang lembar data. sinyal 400kHz seharusnya memiliki waktu naik yang lebih pendek daripada sinyal 100kHz: D
helloworld922
1

Perhitungan Anda masuk akal. Ada perhitungan serupa dalam catatan aplikasi TI ini (bagian 4.1) . Perhatikan bahwa mereka menggunakan V cc = 1.8V untuk menghitung R min .

Ini dibayangkan bahwa C b adalah kapasitansi max bus yang LCD dapat bekerja dengan, dan tidak kapasitansi yang LCD menambah bus. Anda dapat menguji kapasitansi input I 2 C dengan mengukur konstanta RC-nya. Itu akan memberikan cek kewarasan urutan-of-magnitude.

Nick Alexeev
sumber