Bagian: 8bit IO expander (PCF8574)

Dalam beberapa kasus pekerjaan memiliki lebih banyak sensor, tombol, atau LED daripada mikrokontroler Anda memiliki pin. PCF8574 adalah metode sederhana untuk menambahkan 8 pin input kecepatan rendah atau output ke mikrokontroler. Alamat yang dapat dikonfigurasi memungkinkan beberapa PCF8574 ada pada bus yang sama persis, sehingga dua pin mikrokontroler dapat mengelola banyak pin IO. Kami akan menunjukkan kepada Anda bagaimana memanfaatkan chip ini di bawah ini.

Ti PCF8574 I2C 8bit IO Expander (Mouser # 595-PCF8574N, $ 1,86)

Kami menemukan jejak kaki PCB untuk chip ini di i2c.lbr serta micro-phillips.lbr di halaman unduhan perpustakaan CADSOFT EAGLE. PCF8574 dikelola dengan protokol I2C kabel 2, jadi kami menggunakan bus bajak laut kami antarmuka serial universal untuk menunjukkan chip ini. Operasi fundamental yang sama persis akan berlaku untuk segala jenis mikrokontroler.

Skema menunjukkan sirkuit uji mudah kami untuk PCF8574, inilah lembar data (PDF). Kami membereskan chip dengan 5volts, serta menggunakan kapasitor decoupling 0,1UF (C1) antara daya serta pin tanah. R1 serta R2 memegang jam I2C serta bus data pada 5Volts. Kami akan memanfaatkan LED untuk menguji fitur output chip; P0 ditautkan ke LED1 dengan resistor pembatas saat ini R3 (330+ ohm). P6 serta P7 terhubung untuk dipahami menentukan sehingga kami dapat dengan cepat menguji kemampuan input chip.

Alamat I2C PCF8574 adalah 0100xxxy, dengan tiga bit (x) yang diidentifikasi oleh tentukan pin alamat A2-0, serta bit final (Y) yang menetapkan mode check out (1) atau menyusun (0). Banyak PFC8574S dapat berbagi bus I2C dengan memanfaatkan pengaturan pin alamat yang berbeda. Karena kami menghubungkan pin alamat ke tanah, alamat Compose adalah 01000000 (0x40).

Keluaran

LED pada P0 dikelola dengan menyusun 1 (ON) atau 0 (MATI) ke bit 0 dari byte yang mematuhi alamat Compose.

I2c> {0x40 0b00000001} <-Command 210 I2C Mulai Kondisi 220 I2C Tulis: 0x40 GOT ACK: Ya <-Write Alamat 220 I2C Tulis: 0x01 Got ACK: Ya <-Output Nilai 240 i2c stop syarat I2C>

{masalah kondisi I2C mulai, dipenuhi oleh alamat compose, 0x40. Nilai output, 0B00000001, menetapkan P0 tinggi serta bit tetap rendah. } Mengirim kondisi stop bus I2C, mengakhiri transaksi. Ketika bit yang sesuai diatur tinggi, LED menyala.

Untuk mematikan LED, ulangi urutan dengan bit output yang sesuai diatur ke 0.

I2c> {0x40 0b00000000} <- perintah 210 I2C Mulai Kondisi 220 I2C Tulis: 0x40 GOT ACK: Ya <-Write Alamat 220 I2C Tulis: 0x00 GOT ACK: Ya <-Output Nilai 240 i2c stop syarat I2C>

Dengan P0 sekarang diatur ke Ground, LED mati.

Memasukkan

Pin yang ditetapkan untuk output tinggi juga dapat digunakan sebagai input (lembar data 1). Dalam contoh, P6 dipegang tinggi (+5 volt) serta P7 diadakan rendah (tanah), namun ini mungkin juga merupakan tombol, sensor, atau logika digital lainnya. Pin lainnya dibiarkan mengambang serta tidak mewakili data yang valid.

I2c> {0x40 0b11000000} <- perintah 210 I2C Mulai Kondisi 220 I2C Tulis: 0x40 GOT ACK: Ya <-Write Alamat 220 I2C Tulis: 0xc0 Mendapat ACK: Ya <-Output Nilai 240 i2c stop syarat I2C>

Pertama, kami mengatur pin input yang disukai menjadi output tinggi dengan menyusun 1 dengan bit yang sesuai dalam nilai output. Bits 6 serta 7 set P6 serta P7 ke output tinggi.

Sekarang, kami dapat memeriksa pin. Kami melakukan operasi ini dengan output bus bajak laut yang diatur ke mode biner untuk memastikan bahwa nilai pin segera jelas.

I2c> {0x41 r} <- perintah 210 I2C Mulai Kondisi 220 I2C Tulis: 0B01000001 GOT ACK: Ya <-Address 230 I2C Baca: 0B01000000 <-PATE 240 i2c stop syarat I2C>

{masalah kondisi awal I2C, 0x41 adalah alamat check-out, serta r membaca satu byte dari perangkat. } Mengirim kondisi stop bus I2C, mengakhiri transaksi.

Balasan, 01000000, mewakili tentukan pin input. Bit yang paling besar adalah 0 karena P7 terhubung ke tanah. Bit berikutnya adalah 1 karena p6 diadakan tinggi bit lain (0) adalah data sampah.

Ini jauh dari satu-satunya IC expander. Sudahkah Anda menggunakan satu chip lagi?

Jangan gagal mengingat untuk mengejar ketinggalan semua jenis pesan bagian yang mungkin Anda lewatkan.

Leave a Reply

Your email address will not be published.