Sekarang saya tahu untuk memiliki alamat I2C yang disediakan untuk diri sendiri, Anda harus membayar sejumlah uang kepada orang-orang I2C. Tetapi saya tidak ingin melakukan ini.
Saya meminta saran tentang alamat apa yang harus saya pilih untuk budak dan MCU master saya pada proyek saya. Juga akan ada EEPROM di papan tulis. Jadi saya akan menghindari menggunakan alamat EEPROM. Saya berencana agar master terhubung ke berbagai sensor, termasuk gyro dan akselerometer, dan mungkin perangkat memori tambahan. Apakah ada blok alamat yang harus saya hindari? Saya berpikir untuk hanya menggunakan 0x00 untuk master dan 0x01 untuk slave, karena itu sepertinya jarang digunakan.
Pertanyaan lain: apakah itu ide yang buruk untuk mencampur perangkat 10-bit dan perangkat 7-bit di bus yang sama? Saya sedang mempertimbangkan kemungkinan MCU saya berkomunikasi dengan pengalamatan 10-bit, tetapi hanya menggunakan alamat 7-bit untuk sensor.
Jawaban:
Pertama, jangan gunakan 0x00 dan 0x01, itu sudah dipesan! Tabel 3 dari Spesifikasi Bus I2C mencantumkan alamat yang dipesan (dan alasannya):
Anda juga harus menghindari 0x00 karena tidak memiliki transisi tepi, dan mungkin merupakan kondisi kesalahan (dan sulit untuk di-debug).
Selain itu, saya akan mengatakan "Buat saja itu dapat dikonfigurasi." Jika Anda ingin dapat menyambungkan berbagai sensor, maka Anda dapat membayar NXP untuk suatu alamat, atau memberikannya alamat yang bisa disesuaikan. Modifikasi perangkat lunak harus jelas jika Anda ingin mendistribusikan kode sumber. Opsi perangkat keras untuk beralih satu atau dua bit dari alamat yang Anda pilih (jumper solder pada pin digital) murah dan mudah, atau jaringan tangga resistor dengan jumper yang terhubung ke pin A / D dapat memberi Anda kontrol penuh pada perangkat keras.
sumber
Pilih perangkat yang Anda yakin tidak akan digunakan dalam desain Anda dan gunakan alamat I2C itu. Misalnya, jika Anda tidak membutuhkan RTC, Anda dapat menggunakan 0xA2 dan 0xA3, yang digunakan oleh NXP PCF8563 (dan mungkin RTC lainnya).
sumber
Berikut adalah daftar alamat yang dialokasikan pada tahun 1999: http://www.nxp.com/acrobat_download2/selectionguides/SELGUIDE.PDF
Mereka tidak merilis daftar lengkap dengan alasan ini:
Dari http://www.nxp.com/products/interface_control/i2c/faq/
Sekarang, jika semuanya akan menjadi internal untuk proyek Anda, tidak ada alasan Anda tidak bisa hanya memilih alamat yang Anda inginkan asalkan tidak bertentangan dengan apa pun yang Anda rencanakan untuk terhubung.
sumber
Seperti yang dikatakan Kellenjb, Anda tidak akan mendapatkan daftar lengkap alamat perangkat slave.
Namun ada beberapa alamat yang dipesan yang tidak dapat Anda gunakan (0x00 misalnya adalah alamat panggilan umum).
Daftarnya ada di sini
Mencampur 10 dan 7 bit menangani baik-baik saja selama 7bit budak mematuhi standar I2C dan mengabaikan 10 bit alamat.
sumber