Arka fon
Mütevazı mikrodenetleyici özellikleri gerektiren bir proje geliştiriyorum:
- 8 12 bit, 10 kHz ADC
- 1kB RAM
- 48-QFN veya daha küçük kaplama alanı
- 20kbps papatyayla zincirlenebilir gürültüye dayanıklı ve hata düzeltici iletişim protokolü
Sinyal işleme gereksinimleri oldukça düşüktür ve çoğu sistemdeki ana işlemciye aktarılabilir. İlk üç spesifikasyonun karşılanması kolaydır ve 2 dolardan daha az miktarda yapılabilir. Bununla birlikte, iletişim çok gürültülü bir ortamda gerçekleşecek, bu nedenle LIN ve I2C gibi gürültüye karşı savunmasız ağlar devre dışı. LIN'e karşı ek bir argüman, her şeyi 5V veya 3.3V'de çalıştırmak istiyorum ve LIN alıcı-vericileri 12V gerektirir ve bu nedenle sensör kartı başına ekstra bir regülatör veya tel gerektirir. Başlangıçta bu görev için CAN'ı seçtim. Bununla birlikte, CAN kontrolörleri önemli bir maliyet ekler ve bunun yazılımda yapılıp yapılamayacağını merak ediyorum.
CAN Fiziksel Katman
CAN spesifikasyonu, OSI ağ referans modelinin Veri Bağlantısı ve Fiziksel katmanlarını tanımlar. Fiziksel katmanı uygulamak için NXP TJA1040 / 50 , Maxim MAX3058 / 59 , Microchip MCP2551 ve TI SN65HVD1050 gibi birçok ucuz 8 pimli IC mevcuttur. Fiziksel katmanı D / A dönüştürücüler veya op-amplerle uygulamak imkansız olmasa bile zor olacaktır, bu nedenle bu IC'ler maliyeti 1 $ ya da daha fazladır.
CAN Veri Bağlantısı / Protokol Katmanı
Veri Bağlantısı katmanı için, bazı mikro denetleyiciler temel UART, I2C ve SPI iletişim katmanlarına CAN protokol modülleri ekler. Bununla birlikte, bunlar temel yongalardan önemli ölçüde daha pahalıdır.
CAN protokol modüllerinin maliyetinin araştırılması
Bu iddiayı doğrulamak için, CAN ve CAN dışı sürümlerde birkaç popüler mikro:
- ATmega16 - ATMEGA16M1 (CAN ile): 3,87 $, ATMEGA168A (CAN yok): 3,23 $
- dsPIC - DSPIC33FJ64MC802 (CAN ile): 6.14 $, DSPIC33FJ64GP202 (CAN yok): 5.48 $
- PIC18 - PIC18F2480 (CAN ile): 6.80 $, PIC18F24J10 (CAN yok): 2.10 $
- Cortex-M3 - STM32F103C4T6A (CAN ile): 6,50 dolar, STM32F100C4T6B (CAN yok): 2,73 dolar
Adil olmak gerekirse, sadece eşdeğer bellek boyutlarına sahip mikro denetleyicileri karşılaştırdım, ancak CAN olmayan sürümlerin çoğu daha küçük bellek boyutlarıyla daha az kullanılabilir. Microchip MCP2515 gibi harici CAN denetleyicileri neredeyse 2 $ ' dır , bu nedenle seçeneğiniz varsa CAN'ın mikro denetleyiciye entegre edilmesi açıktır.
İlginçtir, ATmega kısmı, Digikey'in envanterinde açık ara CAN donanımlı en ucuz parçadır.
CAN protokol katmanının işlevi
DsPIC mikro denetleyicilerinde bulunan CAN modülü aşağıdakileri yapar:
CAN bus modülü bir protokol motoru ve mesaj tamponlama / kontrolünden oluşur. CAN protokol motoru, CAN veri yolunda mesaj almak ve iletmek için tüm işlevleri yerine getirir. Mesajlar ilk olarak uygun veri kayıtları yüklenerek iletilir. Durum ve hatalar uygun kayıtlar okunarak kontrol edilebilir. CAN veriyolunda algılanan tüm mesajlar hatalara karşı kontrol edilir ve daha sonra, alıcı kayıtlarından birinde alınması ve saklanması gerekip gerekmediğini görmek için filtrelerle eşleştirilir.
Bu yazılımda oldukça yapılabilir görünüyor.
Soru
Bir yazılım protokolü katmanı yalnızca düşük maliyetli bir UART donanımlı mikrodenetleyici ve bir CAN alıcı-vericisi ile CAN spesifikasyonunu uygulamak için kullanılabilir mi? Varsa, açık kaynaklı uygulamalar var mı?
Alternatif olarak, alıcı-vericiler UART'larla özel bir protokol uygulamak için kullanılabilir mi? Tek master bir topoloji ile iyiyim; Tahkimin özel bir protokolde doğru bir şekilde elde edilmesinin zor olabileceğini anlıyorum.