Secara pribadi, saya bukan penggemar aturan main yang sangat besar, tetapi ada beberapa aturan yang sangat akurat yang bahkan saya buat pengecualian.
Salah satu aturan itu adalah sebagai berikut:
Mikrokontroler ADC peripheral selalu mengerikan.
Selalu. Bukan jenis mengerikan yang baru saja Anda derate. Jenis mengerikan yang membuat Anda menangis dalam posisi janin di kamar mandi.
Aku nak, tapi hanya sedikit. Untuk menjawab pertanyaan Anda, ya, ADC sebenarnya hanya seburuk itu, dan ya, Anda harus menerimanya. Perhatikan penafian besar yang menyatakan "Ketentuan Operasi Berlaku." dalam lembar data.
Anda harus ingat bahwa untuk bagian-bagian tertentu (seperti MCU), lembar data juga merupakan materi pemasaran, dan MCU umumnya bersaing dalam periferal, atau konsumsi daya (atau keduanya). Jadi angka untuk hal-hal seperti ADC akan sering secara teknisbenar, selama Anda menggunakan ADC dalam keadaan konyol dan tidak praktis yang sama mereka mengambil pengukuran untuk lembar data. Favorit yang sering saya lihat adalah mengukur ENOB dengan semua periferal lain serta inti prosesor yang sebenarnya sepenuhnya dimatikan dalam tidur nyenyak. Lainnya adalah menggunakan perangkat lunak pasca-pemrosesan yang signifikan dan teknik serupa seperti oversampling untuk mendapatkan pengukuran. Saya tidak berpikir saya pernah melihat lembar data MCU yang tidak menentukan ADC dalam hal 'ini adalah yang terbaik yang pernah Anda capai, dan kami mungkin atau bahkan tidak memberitahu Anda bagaimana kami mengelolanya' daripada 'Ini adalah spesifikasi sebelum Anda mencoba untuk membersihkan sinyal dalam perangkat lunak'.
Dan, untuk lebih jelasnya, sepertinya bagian ini memiliki ADC yang cukup bagus, setidaknya dibandingkan dengan semua MCC ADC mengerikan lainnya. 8,5 bit? Kemewahan seperti itu! Borjuis begitu! Sebagian besar waktu Anda mungkin akan mendapatkan 6 bit dari 10 bit ADC dalam MCU. Ingat, ketika mereka mengatakan resolusi 12-bit, artinya ada 12 bit yang dapat Anda baca dari beberapa register di suatu tempat. Tidak ada implikasi bahwa mereka tidak akan menjadi 12 bit noise yang tidak berguna. Satu-satunya janji adalah bahwa akan ada 12 bit sesuatu .
Sekarang, pada titik ini, Anda mungkin sedikit skeptis bahwa periferal analog ini akan selalu mengerikan, atau paling tidak, bertanya-tanya mengapa beberapa perusahaan chip tidak hanya merilis MCU dengan front end analog setengah jalan yang layak.
Yah, mereka tidak bisa. Tidak masalah seberapa bagus referensi itu, itu bukan masalah stabilitas. Itu kebisingan. Dan fisika.
Secara fisik tidak mungkin untuk membuat ADC kinerja tinggi (atau benar-benar hanya kinerja biasa-biasa saja) pada silikon yang sama mati sebagai MCU. Dan itu hanya membutuhkan satu gotchya untuk mengacaukan kinerja analog. Dalam hal ini, tidak ada satu gotchya, tetapi beberapa.
Pertama, hanya satu CMOS transistor switching yang akan membuang semua jenis harmonisa dan noise langsung ke, well, semuanya, dan akan memasangkan ke (Anda dapat menebaknya) semuanya, ketika switch. Kita cenderung berpikir dari CMOS sebagai daya rendah (dan itu), tetapi layak disimpan dalam pikiran bahwa kekuatan CMOS tidak digunakan secara efektif nol - kecuali ketika transistor berubah negara. Dan mereka berubah sangat cepat, dalam urutan puluhan hingga ratusan picoseconds. Ketika Anda mengambil selusin milliamp dikonsumsi oleh sesuatu yang pada dasarnya tidak mengkonsumsi daya statis, dan semua arus yang berubah sepenuhnya menjadi intens, 100ps lonjakan saat ini dari jutaan bajingan kecil kecilswitch, beralih secara agregat ... yah, itu harus membingkai ulang sedikit hal. Beberapa milliamp itu jauh lebih jahat daripada yang terlihat, setidaknya untuk barang-barang analog. Daya rendah, kebisingan rendah. CMOS adalah daya rendah karena hanya membutuhkan daya untuk beralih. Tapi itu beralih lebih keras daripada drop bass dubstep.
Paku-paku itu semua harus merobek melalui substrat, substrat yang dibagikan ADC, dan cukup resistif untuk menyebabkan pentalan ground yang terlokalisasi dalam substrat yang tidak berarti bagi sirkuit digital, tetapi memang sangat menyusahkan sirkuit analog mana pun.
Dan benar-benar tidak ada jalan lain untuk itu. Itu hanya satu masalah. Yang lain adalah bahwa sebenarnya secara fisik tidak mungkin untuk membuat tata letak analog berkinerja tinggi yang dapat hidup berdampingan dengan MCU, yang akan perlu menggunakan pin tersebut sebagai GPIO juga, dan pertimbangan lain yang fatal mengganggu peluang bagian analog yang baik tata letak.
Sekarang, ada beberapa MCU khusus dengan ADC agak ditingkatkan yang mencapai ini dengan benar-benar memiliki dua silikon mati sepenuhnya terpisah dalam satu paket, dihubungkan oleh kabel ikatan, sehingga memberikan isolasi substrat. Anda akan membayar untuk fitur ini, dan hasilnya masih akan lebih buruk daripada ADC khusus karena kedekatannya.
Oh, dan saya bahkan belum menyentuh bagaimana semua ini mengasumsikan Anda memiliki tata letak eksternal yang sempurna dan situasi pentanahan dan pelepasan dalam semua cara yang berkaitan dengan bagian analog dan digital Anda. Itu saja tidak trivial, tanyakan saja pada Henry Ott .
Jadi, sebagai kesimpulan, saya khawatir bahwa ADC pada chip Anda benar-benar mengerikan. Persis seperti setiap MCU ADC lainnya. Maaf. Entah itu cukup baik - dan untuk banyak banyak aplikasi (dibantu oleh beberapa sumber perangkat lunak yang cukup pintar - pun!) - itu. Sungguh menakjubkan apa yang benar-benar dapat dilakukan bahkan dengan kinerja analog yang buruk tersedia selama Anda pintar. Tapi pintar hanya bisa membawamu sejauh ini. jika Anda ingin dingin, jumlah bit yang efektif dan keras, Anda benar-benar hanya perlu menggigit peluru dan menggunakan ADC khusus bersama dengan tata letak dan decoupling PCB yang cermat, atau melihat menggunakan bagian yang lebih khusus (seperti paket multi-die).