8-Bit Katili: Puya MCU!
Teknoloji ve buna bağlı elektronik cihazlar gün geçtikçe gelişmekte ve bizler koşar adım onu takip etmeye çalışmaktayız. Her gün yeni bir yapay zeka uygulaması, gelişmiş telefonlar ya da bilgisayarlar etrafımızı sarsa da, aslında en büyük gelişme, her gün evde kullandığımız araçlar içerisinde yani mikrodenetleyici dünyasında olmaktadır. Bundan 5 yıl önce bu duruma parmak basıp, uzak doğu üreticisi Nuvoton’un geliştirdiği işlemciler ile ilgili burada bulunan yazı ile Çin’in özellikle 8 bit işlemcilerde, önemli oyuncular arasında olabileceğinden bahsetmiş ve özellikle bilindik işlemci “fanboy”ları tarafından çokça eleştiri almıştım. O yazıyı yazdığım günlerde, Nuvoton işlemcileri kullanıp deneyimleyen tek tük üretici olsa da bugün çoğu büyük firmanın uygulamalarında bu işlemciyi BOM’larına yerleştirdiğini görmek bizler için hiç de şaşırtıcı değil.
Şimdilerde ise bu devrim, özellikle genel geçer işlemci grubu dediğimiz alanda 32bit tarafına hem de inanılmaz fiyat bantlarında sıçramış durumda. Tabi öncelikle bu durumun nasıl yaşandığını bir tasarımcının gözünde görmek gerekiyor…
Yine, Yeni, Yeniden ST…
Aslında Çinli üreticilerin bu yükselişinin hikayesinin başında yine ST firması yer alıyor. ST, 2010’ların başında geliştirdiği STM8 ve ARM’ın büyük kitlelere ulaşmasını sağlayan STM32 (özellikle işlemcilerin kralı STM32F103’ü anmadan olmaz) serileri ile o kadar başarılıydı ki, bugün insanların zihnindeki “mikrodenetleyici eşittir STM32” kavramının mimarı oldu. Bu temeli ise ST, sanılanın aksine muhteşem ötesi işlemcileri ile değil, tasarımcı dostu platformları, kitleri ve kütüphaneleri ile yaptı.
2010’larda da diğer işlemcilerin kitleri ve yazılımları vardı yalnız bunlar aynı ailenin işlemci serilerinde bile değişiyordu, programlayıcılar kötü, üreticilerin sağladıkları kütüphaneler berbattı. ST ise getirdiği standartlaşmış kit yapısı ve en önemlisi iyi dokümante edilmiş ve kullanımı kolay işlemci kütüphanesi ile kullanıcıları datasheet bataklığından kurtarmış oldu. En önemlisi ise MCU tarafında getirdiği standartlaşmayı, kütüphaneye yansıtmasıyla, özellikle tasarımcıların korkulu rüyası olan bir işlemciden diğerine geçmeyi, derleyicide işlemci adını değiştirmek kadar kolay hale getirdi. Bu özellik ST’nin oturttuğu StdPeriph_Library ve sonrasında HAL ve LL Library ile bugün dahi bir çok firmanın ilgisini çekmeyi başardı; evet doğru bildiniz Çinlilerin de!
Ucuz İşlemci Merakı?
Web sayfamı takip edenler benim güç elektroniği ile uğraştığımı ve bu yüzden aslında kullandığım MCU’ların DSP gücü yüksek, bir çok ADC ve PWM kanalı ile CAN/UART gibi bir çok haberleşme birimine sahip görece pahalı işlemciler olduğunu bilirler. Yalnız bir mühendis olarak küçük kaynaklar ile çok iş yapan işlemciler, PIC12F’lerle tanıştığım günlerden beri ilgimi çekmiştir. Bu yüzden STM8S003 ile bir çok proje gerçekleştirmiş, küçük kardeşi STM8S001 dahi bazı uygulamalarımda kendine yer bulmuştur. Bu merakım nedeniyle, ara sıra mikrodenetleyicilere bakarken rastladığım ve sadece 0.10$ fiyatına Cortex M0+ core barındıran işlemci olduğunu gördüğümde, bu işlemcinin de 0.04$’a satılan fakat sadece bir kez programlanabilen Padauk MCU gibi olduğunu düşünüp önemsemedim. Fakat daha sonra incelediğimde içerisinde flash olduğunu görünce çok heyecanlanıp, hemen arkadaşlarımla iletişime geçip ve ilgili işlemciyi edindim!
Tanıştırayım: ARM Cortex M0+ PUYA PY32F002A
Bir işlemcinin flash belleğe sahip olması, onun bir çok kez programlanmasına müsade etmektedir; PUYA PY32F002A’nın 10 cent gibi inanılmaz bir fiyata bunu sağlayabiliyor olması gerçekten inanılmaz. Şu an işlemci sadece “lcsc.com” üzerinden satılmakta ve 6k adette için bugün 8~9cent/adet civarına alınabilmektedir. Sadece 10 cent vererek aldığımız işlemcinin içerisinde barındırdığı özellikleri aşağıda görebilirsiniz (detay için grafiğin üzerine basmanızı öneririm).Sadece 8 pine sahip bir işlemciyi kıyaslamak için şu an digikey’de en ucuz rakibi STM32’nin STM32C011J4 işlemcisini seçtim. Bu iki işlemcinin kıyaslamasını aşağıdaki tabloda görebilirsiniz.Yukarıdaki tablo incelendiğinde STM32’nin bir kaç adım daha önde olduğu görülür. Yalnız Puya’nın büyük pinli versiyonları incelendiğinde özelliklerin benzerliği artmaktadır. Buna rağmen iki işlemci arasındaki fiyat farkının yer yer 5 kat olduğunu da unutmamak gerekir. Puya işlemcisinin en büyük artısı ise 1.70V ile 5.50V arasında çalışabilmesi olarak görülebilir; bu hem 3.3V hem de 5V gibi uygulamaları tek bir işlemci ile yapmayı mümkün kılmaktadır.
Puya’nın Timer birimi PWM özelliğine sahip ve 12bit özelliğe sahip ADC’yi tetikleyebilmektedir. Bu özellik, bizlere küçük çapta güç elektroniği uygulamalarını olanaklı kılmaktadır. Daha yüksek pinli yapılarında ise Puya, UART’tan boot özelliğine kavuşuyor ve bu işlemcilerin sahip olduğu PWM ve ADC yapıları BLDC motor sürücü yapmak için de uygun zemin oluşturuyor.
Uygulama Zamanı
Uygulama için kit ararken, benden önce işlemciden haberdar olup, uygulamalarında kullanan arkadaşlardan edindiğim PCB’yi aşağıda görebilirsiniz.Bilindik markalar dışında işlemcilerle çalışırken en önemli sorunlardan bir tanesi derleyici sıkıntısı oluyor ve bu tasarımcıları biraz korkutabiliyor. Bunun farkında olan bu küçük işlemcinin üreticisi Puya, Gitee üzerinde burada görebileceğiniz kaynakları önceden bizler için yayınlamış. Öncelikle işlemcinin Keil üzerinden derlenebiliyor oluşu mükemmel bir özellik. Bunun için öncelikle yukarıda verdiğim bağlantıya giderek, “Tools and Software” adı altında, “PY32_Packs_MDK” klasörü içindeki “Puya.PY32F0xx_DFP.1.2.0.pack” adlı programı bilgisayarınıza indirip kurmanız gerekiyor. Bu işlemden sonra artık işlemci Keil ile derlenmeye hazır oluyor!
Programlayıcı tarafında ise Segger markasının Jlink ürününü kullanmak gerekiyor. Jlink tüm ARM işlemcilerini programlamak için kullanılan, pahalı ama gerekli bir ürün. Bir not olarak; ST’nin kitleri üzerinde bulunan ST-Link programlayıcılarını Jlink’e dönüştürmek elbette mümkün. Fakat Jlink’e dönüştürülen bu programlayıcılar yalnızca ST işlemcilere program atabiliyor ve Puya ile kullanılamıyor.
Örnek projede, Puya içerisine daha önce yazarı ile röportaj yaptığım cocoOS RTOS’u dahil ederek, bir UART uygulaması yaptım. Özellikle örnek proje dosyalarını indirip, kodları incelediğinizde, kütüphanelerin direkt ST’den alındığını ve referans verildiğini göreceksiniz. Kütüphane fonksiyonlarının bu şekilde tanıdık olması aşağıdaki örnek uygulamayı 1 saat içerisinde yazmamı mümkün kıldı. Bu dahi uzak doğulu arkadaşların, uygulamada bizlere ne kadar kolaylık sağladığının birer kanıtı olarak görülebilir.
Örnek uygulamaya ulaşmak için aşağıdaki GitHub linkine basmanız gerekmektedir. Uygulamayı beğenirseniz bir star (yıldız) bırakmanız beni memnun edecektir.
Keil Puya PY32F002A Örnek Uygulama
Uygulama çıktısı olarak 460.800 baud rate ile aldığım ekran görüntüsünü aşağıda görebilirsiniz.
Sonuç Olarak…
İşlemciler gelecekte güzel arayüzler ve kütüphaneler ile biz tasarımcılara kullanım kolaylığı sağlarken, doğu/batı arasındaki teknoloji savaşı, yukarıda anlattığımız işlemci gibi bizlere çok daha ilginç sonuçlar çıkaracaktır. Puya, Nuvoton gibi denetleyicilerin artması, hali hazırda sabit müşterileri olan köklü firmaları rekabete zorlayacak, bunun sonucu olarak da çıktılar bizler için yararlı olacaktır.
Tüm bu yararlardan faydalanabilmek için ise görüldüğü gibi belli markaların fanı olmamak, her zaman esnek olabilmek, kaynaklara ulaşırken doğru anahtar kelimeleri kullanmak bizlerin elini kuvvetlendirecektir…
Herkese çalışmalarında başarılar dilerim!
Dip Not 1: İşlemci kitini bana ulaştıran Coşkun Ergan‘a çok teşekkür ederim.
Dip Not 2: Bu yazı için herhangi bir reklam vb. alınmamıştır.
Yazılarınız altın değerinde çok teşekürler.
Teşekkürler Hocam. Takip ediyoruz.