Berapa laju perubahan tegangan untuk I2C?

10

Saya mengkonfigurasi I 2 C pada PIC18 menggunakan fungsi built-in dari kompiler C18 seperti yang dijelaskan dalam bagian 2.4 dari dokumentasi :

void OpenI2C2( unsigned char sync_mode,
    unsigned char slew );

Saya tidak yakin apa yang harus saya lakukan slew. Saya dapat memilih dari dua opsi, didefinisikan dalam i2c.h:

  • SLEW_OFF: Tingkat perubahan tegangan dinonaktifkan untuk mode 100 kHz
  • SLEW_ON: Tingkat perubahan tegangan diaktifkan untuk mode 400 kHz

Dalam lembar data dalam register 15-1, halaman 257, kedua opsi dijelaskan dengan sedikit lebih detail:

  • 1 = Kontrol laju perubahan tegangan dinonaktifkan untuk mode kecepatan standar (100 kHz dan 1 MHz)
  • 0 = Kontrol laju perubahan tegangan diaktifkan untuk mode kecepatan tinggi (400 kHz)

Saya tidak mengerti - Saya punya beberapa pertanyaan:

  1. Apa itu laju perubahan tegangan?

  2. Bagi saya, dua opsi tidak masuk akal - bagaimana jika saya ingin menonaktifkan laju perubahan tegangan untuk 400kHz dan mengaktifkannya untuk 100kHz? Kenapa ini?

  3. Kapan saya harus memilih SLEW_OFFdan kapan SLEW_ON?


sumber

Jawaban:

8

Slew rate adalah seberapa cepat sinyal berubah dari rendah ke tinggi, atau sebaliknya. Dengan membatasi transisi mendadak ini, Anda dapat mengurangi dering dari pantulan sinyal, dan membatasi crosstalk di antara garis sinyal.

Namun, cara kerjanya adalah pada 100kHz, laju sinyal sangat lambat sehingga laju perubahan tegangan tidak terlalu penting; pada 400kHz Anda mungkin dapat memperbaiki sirkuit yang bermasalah dengan membatasi; tetapi kemudian ketika Anda sampai ke 1MHz Anda benar-benar membutuhkan semua kecepatan transisi yang bisa Anda dapatkan, sehingga Anda hanya perlu melakukan pencocokan sinyal yang baik dan merutekan jalur Anda dengan lebih hati-hati.

Bit yang dipermasalahkan tidak lebih dari mengaktifkan atau menonaktifkan fitur. Sisanya hanyalah saran. Kecepatannya dalam tanda kurung, karena itu hanya saran.

Gbarry
sumber
Terima kasih! Tampaknya menjadi opsi yang bagus - mengapa saya tidak menggunakan kontrol laju perubahan tegangan?
2
@CamilStaps - Pemahaman saya, sepertinya Anda mungkin salah membaca jawabannya. Memiliki transisi yang tajam (SLEW_ON) menyebabkan kebisingan dan dering EMI ekstra. Memiliki transisi yang lambat (SLEW_OFF) mengurangi EMI tetapi mengurangi frekuensi maksimum tautan yang dapat digunakan. Ini pertukaran.
Tim
@gbarry: Ah, jadi dengan membunuh kontrol tingkat off sinyal adalah sebagai dekat dengan gelombang persegi sebagai UC dapat membuatnya. Dengan kontrol laju perubahan tegangan pada transisi tinggi / rendah gelombang lebih miring (= kurang vertikal) daripada yang seharusnya?
angelatlarge
1
Itu benar, meskipun saya tidak yakin seberapa dramatisnya pada PIC (saya harus memeriksanya). Catatan sejarah: Spesifikasi RS232 memiliki batasan laju perubahan tegangan, jadi seseorang keluar dengan chip driver yang memiliki sinyal keluaran slope-y yang bagus. Dan kemudian kita semua mulai menggunakan kecepatan bps yang lebih cepat dan lebih cepat sehingga kita tidak dapat menggunakan chip itu ...
gbarry
1
Tiga tahun kemudian, dan saya memiliki pertanyaan yang sama, tetapi saya benar-benar mengukurnya. Untuk referensi di masa mendatang, pada PIC16F1454 dengan 4.7k pull-up dan satu budak di bus, waktu jatuh adalah 2,9 ns tanpa pembatasan laju perubahan tegangan (mungkin dibatasi oleh probe 150 MHz saya), dan 151 ns dengan pembatasan laju perubahan tegangan. Itu tidak mempengaruhi waktu naik.
pipa