Saya punya proyek berdasarkan pic 18f4550. Untuk menulis ke register geser '595, apakah ada keuntungan berbeda menggunakan spi daripada pin io biasa? Saya mendengar spi lebih cepat, tetapi saya tidak yakin bagaimana caranya. Apakah ia menggunakan jam yang berbeda dan lebih cepat daripada sisa chip, atau apakah itu lebih efisien? Saya dapat bit-byte byte melalui pin io biasa dalam sejumlah kecil instruksi. Apakah spi menggunakan lebih sedikit daya pemrosesan? Saya akan sering bergeser keluar selama perhitungan yang cukup intens, jadi saya ingin sebanyak mungkin siklus didedikasikan untuk proses saya dan tidak bergeser keluar.
Alasan utama saya untuk tidak ingin menggunakan spi adalah tata letak saya saat ini akan membuatnya sedikit lebih sulit untuk mengakses pin yang diperlukan karena saya sudah menggunakan beberapa dari mereka untuk hal-hal lain dan harus mengacak-acak hal-hal di sekitar. Saya ingin mengetahui manfaat apa yang ada sebelum saya mulai merobek semuanya dan memindahkannya.
Jawaban:
Dengan asumsi Anda membandingkan "mesin" serial periferal atau sinkron di mikro untuk menghasilkan urutan yang sama melalui "bit-banging", maka ya, itu cenderung agak lebih cepat, tetapi yang lebih penting prosesor dapat menyerahkan seluruh byte ke perangkat untuk mengirim dan kemudian melakukan hal-hal lain ketika sedang dikirim. Dalam kasus bit-banging, prosesor cenderung diikat selama transmisi (meskipun mikro cenderung menjadi master dan sebagian besar perangkat sepenuhnya statis, Anda mungkin dapat mentolerir jeda mid-byte untuk melayani interupsi atau bahkan polling hal-hal - ADC serial antarmuka-jam dan tugas interval sampel menjadi contoh pengecualian).
Pada MCU yang lebih mampu, bahkan mungkin untuk memprogram pengontrol DMA untuk melakukan transfer multi-byte dari memori melalui mesin SPI tanpa perhatian lebih lanjut dari prosesor, terutama jika hanya data dalam satu arah yang penting.
Tetapi banyak proyek mikro-controller akhirnya sangat dioptimalkan untuk tugas mereka; jika Anda dapat mengampuni siklus dan mentolerir pengurangan kecepatan, maka menyulitkan perangkat lunak Anda agar dapat menggunakan GPIO apa pun yang membuat tata letak fisik lebih bersih dengan cara apa pun bukanlah pilihan yang tidak biasa.
sumber
Keuntungan menggigit:
Kerugian dari sedikit-membenturkan:
Keuntungan SPI:
Kerugian SPI:
Bagi saya, keuntungan bit-banging kecil dibandingkan dengan keunggulan SPI. Kerugian dari bit-banging jauh lebih besar daripada SPI. Tiga alasan utama yang bisa saya lihat untuk memilih bit-banging adalah untuk
sumber
Pada PIC, implementasi bit-bang konvensional gaya SPI memakan waktu sekitar lima siklus per bit; dengan sedikit kerja pada bagian 18Fxx, seseorang dapat memotongnya menjadi sekitar empat (dengan biaya sekitar tiga siklus per byte overhead tambahan). Waktu itu merupakan tambahan untuk setiap waktu yang diperlukan untuk mengambil data (biasanya tiga siklus per byte). Jadi bayangkan sekitar 40-43 siklus per byte. Menggunakan perangkat keras SPI, kecepatan meningkat menjadi dua siklus per bit ditambah beberapa siklus ekstra per byte (beberapa lainnya dapat menangani transfer back-to-back, tetapi PIC yang saya lihat tidak bisa), dan sementara SPI mengirim byte prosesor dapat mengambil yang berikutnya, memungkinkan waktu keseluruhan sekitar 18 siklus / byte - kenaikan kecepatan sekitar 2,5x.
sumber
Untuk bit banging (BB) Anda lupa menyebutkan:
sumber