STM32F0x1 komparator (COMP) dan ADC pada pin yang sama secara bersamaan?

8

Saya menyusun proyek yang mengambil keuntungan dari perangkat komparator pada mikrokontroler STM32F051. Saya telah membaca dalam dokumentasi bahwa agar komparator berfungsi pin input perlu dikonfigurasi untuk analog ... yang merupakan pengaturan yang sama jika Anda menggunakan pin sebagai input ADC.

Dapatkah saya menggunakan pin tunggal, katakan PA1, sebagai input dan konfigurasikan sebagai input komparator jendela dan sebagai input ADC pada ADC_IN1?

Apakah ada gotcha dengan konfigurasi ini seperti noise tambahan yang harus saya pertimbangkan?

Lembar Data (p 19)

Referensi Manual (p 295)

Referensi yang menarik, menyarankan bahwa ini harus dimungkinkan: masukkan deskripsi gambar di sini Diambil dari AN4232: Memulai dengan komparator analog untuk seri STM32F3

Daniel
sumber
1
Bisakah Anda menautkan ke dokumentasi yang relevan? The datasheet saya menemukan tidak menyebutkan pembanding tapi ini adalah pertanyaan yang menarik
David
Tentunya yang ingin saya katakan adalah STM32F0 * 5 * 1 ...
Daniel
Dari pengalaman saya itu bisa dilakukan, tetapi saya tidak bisa mengatakan dengan pasti dan saya ragu Anda akan menemukan info ini di sumber resmi. Hal terbaik yang dapat Anda lakukan IMO adalah bereksperimen - dapatkan papan nucleo STM32F07x yang cukup murah (~ 10 USD) dan ujilah. Atau dapatkan papan penemuan F051, harganya tidak jauh lebih mahal. ST menggunakan core IP periferal yang sama di MCU yang berbeda sehingga Anda dapat mengharapkannya berperilaku serupa antara F07x dan F051.
Jan Dorniak
@ JanDorniak Ya, itu akan menjadi cara terbaik. Sayangnya itu akan memakan waktu lama (beberapa hari untuk bermain-main) untuk mengetahui hal ini dengan pasti dan saya perlu menghabiskan waktu itu menyiapkan PCB untuk produksi prototipe. Jika tidak ada yang kembali dengan apa pun pada akhirnya saya akan melakukannya.
Daniel
1
@Daniel Satu masalah yang saya dapat katakan dengan pasti adalah bahwa beberapa periferal terhubung melalui pin - Saya mengalami masalah saat menghubungkan DAC sebagai input COMP karena mereka terhubung melalui pin yang saya coba gunakan sebagai output digital. Tidak berhasil, untungnya saya punya beberapa pin gratis di MCU. Jika Anda ingin melihatnya, itu PA4 pada L053
Jan Dorniak

Jawaban:

4

Ini berfungsi, Anda akan mendapatkan nomor kembali, serta interupsi. Saya sudah memeriksanya, unduh dari .

Akurasi dan glitchiness belum ditentukan, sampai sekarang. Tetapi dijelaskan dengan baik di Appnotes seperti yang ditunjukkan oleh @Bence Kaulics di utas ini (lihat results.txt untuk AppNotes tambahan)

Saya percaya ini akan stabil karena alasan berikut.

a) The circuit diagram in RM0091 shows a direct connection from comparator to pin. i.e. it is indicated that the comparator cannot be disconnected with a switch or MUX, and will thus work as soon as the pin is assigned 'analog in'.

b) The comparator is NOT dependent on a 'Clock' to enable it (it is alow power device).

c) ST would not be able to make this level of change without assigning a new part number.


The good news is that one can continue to use the comparator for high-speed events such as over current and emergency stop etc whilst still using the ADC analog window events for other software control.

Ini juga berfungsi dengan DAC, yaitu Anda dapat mengatur semuanya secara internal dengan DAC atau secara eksternal dengan DAC dan beberapa resistor.

Hanya dengan melihat sirkuit Anda akan menggunakan ADC secara paralel dengan pembanding, pada dasarnya sebuah penguat. Seperti yang kita ketahui ini adalah impedansi perangkat gain besar yang sangat tinggi. Gangguan bukan teman kita.

Sekarang kita akan menggedor tutup kosong ke pin itu sesekali untuk memberi makan ADC.

Seperti yang kita semua tahu, kita perlu mengecoh ADC dan lebih baik menolak pembacaan pertama setelah acara mux switch untuk menghilangkan kemiringan dari dan ke saluran yang berdekatan.

ADC pada STM memiliki impedansi input agak <50K // 5pF tergantung pada bagaimana mereka digunakan. (DM00039193.pdf hal 76ff)

Tabel 53 memberikan 400-> 50KOhm, yang saya temukan beberapa waktu lalu ketika saya mengkalibrasi F373 ADC saya.

Pg 79 menunjukkan sirkuit ADC.

Pg 82 memberikan deskripsi singkat tentang pin pembanding, dibaca bersamaan dengan deskripsi umum pin analog di atas (pg73ff)

Masukkan paralel dengan input komparator Anda dan ADC MUX dan modelkan dalam rempah-rempah. Ingatlah untuk mengisi tutup ADC ke tegangan acak secara teratur.

Apa pun yang terjadi di sirkuit dan perangkat lunak Anda akan mendapatkan gangguan cukup masuk akal pada input komparator Anda. BAD IDEA, bahkan jika Anda menghubungkan pin ke pengikut impedansi rendah dan tutup decoupling (pada garis input input pembanding ????).

Tutup yang digunakan oleh ADC adalah pembunuh. Semoga perangkat masa depan akan sampel menggunakan pengikut / isolator internal pada ADC dan pembanding. Ini mungkin sudah ada di sana sebagai fitur tidak berdokumen (tidak mungkin karena crosstalk mux).

Seperti saya, saya pikir kita begitu terlibat dengan sisi digital dari hal-hal yang ketika kita beralih ke analog dan hibrida kita melupakan dasar-dasarnya.

Bagaimana mengukur arus kecil menggunakan konverter arus ke tegangan? adalah diskusi yang saya lakukan dengan orang lain kemarin. Aku tahu jawabannya karena aku sendiri yang salah. Bahkan pada 3V terbaik menjadi 50K kita mendapatkan AVO 16K / volt. Kapan terakhir kali saya menggunakan AVO / multimeter?

Semua yang dikatakan, melihat pada sirkuit F373 menunjukkan bahwa ST dan ARM tampaknya dimaksudkan untuk bisa mendapatkan hasil yang bisa diterapkan dari kedua komparator dan ADC yang digunakan secara bersamaan dalam perangkat campuran. Penambahan opamps dalam seri 150 dan 300 memberikan petunjuk tentang persyaratan isolasi impedansi.

Saya yakin bahwa seseorang yang lebih pintar daripada saya akan dapat merekayasa ulang lingkungan tempat interkoneksi internal ini dirancang. Saya akan berpikir otomotif atau HVAC .... inverter dan FOC. Perpustakaan FOC dapat memberikan wawasan yang berharga.

Kecuali jika Anda membangun instrumen berkecepatan tinggi dan sangat akurat, penggunaan seperti itu mungkin cukup stabil untuk digunakan secara praktis (dalam peringatan di atas). Ini tentu akan menghemat banyak sirkuit eksternal. Tes yang ketat pada kecepatan tinggi mungkin sebaiknya dibiarkan sebagai latihan untuk siswa (Tempt me to study).

Solusi di sini .

Sepertinya perpustakaan HAL ADC agak rusak untuk multi channel DMA. Saya telah memposting di situs web STM untuk mendapatkan jawaban. Penanganan masalah: -

a) IRQ kedua ADC

b) Polling kedua ADC

c) DMA satu saluran dan polling yang lain

d) Menginisialisasi register level rendah secara manual

Ini adalah satu lagi peringatan untuk solusi di mana kedua pembanding digunakan, sampai solusi yang lebih baik ditemukan.

ChrisR
sumber
Pada STM32F4Discovery ADC2 dan ADC3 berfungsi dengan baik dengan HAL. Saya menggunakan DMA2 Stream1 dengan ADC3 dan DMA2 Stream2 dengan ADC2, ada dua saluran yang dikonfigurasi pada kedua ADC. Mode DMA berbentuk lingkaran. Juga dengan HAL pada STM32F3 saya menggunakan empat ADC berbeda bersama dengan DMA, 3 saluran pada DMA2 dan 1 satu DMA1. Apa yang salah saat Anda mencoba juga menggunakan multi channl DMA?
Bence Kaulics
@ Bence - Saya telah bekerja dengan F1, F3 dan F4 dalam konfigurasi ADC-DMA multichannel - mereka menggunakan mekanisme berbeda untuk menambahkan saluran ke DMA. Saluran dapat dipindai dalam urutan apa pun. Seri STM32L0 memiliki struktur internal yang berbeda, saluran secara otomatis diprioritaskan oleh nomor saluran. Ada beberapa struktur dan panggilan untuk mengaturnya. Setiap saluran hanya dapat muncul sekali dalam pemindaian.
ChrisR
Begitu, dan urutan prioritas ini sudah diperbaiki?
Bence Kaulics
Terima kasih atas jawaban Anda dan berupaya memastikan secara langsung bahwa ini berhasil, serta menemukan penelitian pendukung. Sangat dihargai!
Daniel
1
@Bence - Ya, prioritas dan pesanan diperbaiki - pergi dengan nomor saluran. Satu hal yang hebat adalah Anda dapat melakukan oversample dan rata-rata dalam pemindaian. lihat RM tertaut di atas, ada baiknya dibaca. Seperti banyak saya agak sedih bahwa perpustakaan HAL tidak (dan tidak bisa) transparan di semua perangkat ARM.
ChrisR
4

Pengaturan paling relevan yang dapat saya temukan adalah yang berikut, dari Menggunakan komparator analog STM32F05xx dalam kasus aplikasi , ( AN4112 ), halaman 4:

masukkan deskripsi gambar di sini

Ia mengatakan:

Gambar 1 menunjukkan bagaimana menghubungkan output sensor (sensor suhu, sensor tekanan, detektor inframerah piroelektrik, sensor fotodioda) ke perangkat STM32F05xx dalam aplikasi pemantauan tegangan analog menggunakan komparator 2 (COMP2). COMP2 memonitor tegangan analog dalam mode Stop sementara ADC mengukurnya dalam mode Jalankan.

Di sini ADC dan COMP bekerja secara bergantian tetapi saya pikir keduanya dikonfigurasikan secara bersamaan. Jika kita melanjutkan dalam dokumen ada diagram blok tentang konfigurasi COMP.

masukkan deskripsi gambar di sini

Berdasarkan gambar ini saya berpikir bahwa ADC dan COMP berbagi Saluran ADC yang sama satu-satunya perbedaan adalah jumlah Sumber Ambang Batas Analog yang diaktifkan .

Teks di bawah Gambar 5 dalam pertanyaan menyatakan bahwa

input pembanding adalah saluran ADC

mungkin sama dengan ADC_IN1.

Tujuan seluruh konfigurasi ini adalah untuk menghemat daya, COMP memicu perubahan status MCU (STOP <--> RUN). Jadi ketika input berada di bawah ambang tertentu MCU dan ADC dimatikan dan hanya komparator yang bekerja, dan ketika input berada di atas ambang batas MCU dan ADC bangun ADC mengukur tegangan input. Tetapi jika input turun di bawah ambang batas lagi, COMP mengirim MCU ke status STOP.

masukkan deskripsi gambar di sini

Ini adalah salah satu cara menggunakannya bersama-sama, saya harap ini akan memajukan pertanyaan.

Bence Kaulics
sumber
Terima kasih atas jawaban Anda. Itu menambah banyak diskusi. Pada akhirnya, saya memutuskan untuk memberikan hadiah kepada seseorang yang dapat mengkonfirmasi jawabannya secara langsung, tetapi ini memiliki semangat saya dan sangat dihargai!
Daniel
Itu pertanyaan yang sangat menarik, saya senang berpartisipasi. Selanjutnya, saya setuju dengan itu bahwa Chris telah menerima hadiah :). Dia melakukan banyak pekerjaan, tidak menghabiskan waktu dan tenaga.
Bence Kaulics
3

Saya pikir Anda harus bertanya di forum STM. Ada juga (STM32F1) UART RX dan TIMx pada pin yang sama, kedua input, tetapi Anda tidak dapat menggunakannya bersama-sama, seperti mendeteksi akhir dari penghenti waktu transmisi. Sebaliknya pin TIMx berbeda harus dihubungkan secara paralel untuk memiliki fitur UART RX dan timer interrupt. Saya kira hanya satu fungsi yang dapat aktif secara bersamaan.
Coba unduh MxCube dan lihat konfigurasi apa yang dapat dibangun.

Marko Buršič
sumber
Itu poin yang layak. Saya memilikinya, saya harus melihat apakah itu memungkinkan. Tetapi bahkan jika tidak, itu tidak berarti Anda tidak dapat: /
Daniel
Dengan kata lain, saya berharap dokumentasinya lebih baik dan lebih komprehensif, dan saya dapat memiliki kepercayaan pada jawaban lain selain "Saya pernah mencobanya dan tidak berhasil"
Daniel
@Aniel Anda benar, saya pikir jawaban akhir akan memberi Anda MCU sendiri ketika Anda akan mencoba.
Marko Buršič