Wednesday, October 16, 2024

CH552 MCU programlama.

CH, WCH tarafından üretilen oldukça ilginç ve ucuz bir MCU serisi. CH552 ise Intel 8051'in CISC mimarisine dayanan bir mikrodenetleyici. 8051’in 12 mhz clock hızına karşılık 24 mhz clock hızıyla daha hızlı ve native USB 2.0, I2C ve GPIO gibi  görece modern özelliklerle donatılmış bir MCU. Bu yüzden CH552 özellikle düşük maliyetli USB projeleri için oldukça ideal görünüyor. Ayrıca WCH, CH32x serisinde ARM Cortex-M ve CH5x serisinde RISC-V mimarisine sahip daha geniş bir yelpazede mikrodenetleyiciler de üretmekte.

CH552'nin Genel Teknik Özellikleri

  • Çalışma Frekansı: 24 MHz
  • RAM: 1.25 KB (1280 byte)
  • ROM (Flash): 16 KB
  • I/O Portları: 18 genel amaçlı GPIO pinleri
  • USB Desteği: USB 2.0 Full-Speed (12 Mbps)
  • ADC: 3x 10-bit çözünürlük
  • DAC: Dahili DAC yok
  • Zamanlayıcılar: 2 adet 16-bit zamanlayıcı
  • İletişim Protokolleri: I2C, SPI, UART

    CH552 Pin Bağlantıları

  • Benim merak edip denemek için aldığım WeAct Studio'nun "CH552 Core Board" adını verdiği geliştirme kartı bu.


    Görüleceği üzere kartın ön yüzünde iki adet buton ve bir LED var. Butonlardan birinde RST, diğerinde P36 yazıyor. P36 download key, karta program yüklerden buna basılı tutuyoruz. Bu arada USB bağlantı soketi USB-C formatında.

    Ayrıca Windows altında kartı kullanabilmek için libusbK sürücüsünü yüklemek gerekiyor. Eğer Device Manager'da kartınız aşığdaki şekilde görünmüyorsa libusbK sürücüsü yüklenmeli. Onu da Zadig ile halletmek mümkün.

    Zadig.

    Doğru driver yapılandırımış.

    Aduino IDE'de program geliştirebilmek için
    File ->  Preferences -> Additional board manager URLs
    alanına aşağıdaki linki giriyoruz:

    https://raw.githubusercontent.com/WeActTC/ch55xduino/ch55xduino/package_ch55xduino_mcs51_index.json

    OK deyip kapatınca Tools menüsü altındaki ilgili kısma CH55xDuino menüsü eklenmeli


    Şimdi adet olduğu üzere blink kodunu yazıp derleyelim :) 

    #define LED_BUILTIN 30
    
    // the setup function runs once when you press reset or power the board
    void setup() {
      // initialize digital pin LED_BUILTIN as an output.
      pinMode(LED_BUILTIN, OUTPUT);
    }
    
    // the loop function runs over and over again forever
    void loop() {
      digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
      delay(1000);                       // wait for a second
      digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
      delay(1000);                       // wait for a second
    }
    
    
    CH552'yi programlayabilmek yani Arduino IDE'de derlenmiş binary'yi karta upload edebilmek için için kartın programlama modunda olması gerekiyor. Bunun için de kart PC'ye bağlıysa söküp P36 tuşuna basılı tutarak tekrar takıyoruz. Basılı tutarken taktıktan sonra artık tutmaya gerek yok.

    Programlama videosunu Arduino IDE status'un doğru programlama anında nasıl gözüktüğünüe dair fikir vermesi için ekliyorum.


    Sonuç