Genel Bakış
STM8S903K3, STMicroelectronics tarafından üretilen ve STM8S serisinin bir parçası olan 8 bitlik bir mikrodenetleyicidir. Bu mikrodenetleyici serisi, yüksek performansı, sağlamlığı ve uygun maliyetli olması nedeniyle piyasada oldukça popülerdir. STM8S903K3, sistem maliyetlerini düşürmeye ve uygulama geliştirme sürelerini kısaltmaya yardımcı olduğu için özellikle çeşitli endüstriyel kontrol ve ev aletleri uygulamaları için uygundur.
Önemli Özellikler:
- Yüksek Performans: Yeni nesil STM8 çekirdeğine dayalı olarak gelişmiş işlem yetenekleri sunar.
- Düşük Güç Tüketimi: Bekleme, Aktif Durdurma ve Durdurma modları dahil olmak üzere çok sayıda düşük güç modu ve ayrıca çevresel saatleri ayrı ayrı devre dışı bırakma özelliği sunar.
- Yüksek Entegrasyon: 300.000'e kadar yazma/silme döngüsüne sahip gerçek veri EEPROM'u, dahili saat osilatörü, izleme zamanlayıcısı ve güç açıldığında sıfırlama işlevini entegre eder.
- Saat Güvenlik Sistemi: Sistemin istikrarlı çalışmasını sağlamak için bir saat monitörü içerir.
- Kesme Yönetimi: 32 adede kadar kesme ve 28 adede kadar harici kesmeyi destekleyen iç içe kesme denetleyicisi ile donatılmıştır.
- Zamanlayıcılar: Gelişmiş kontrol zamanlayıcıları, genel amaçlı zamanlayıcılar ve otomatik uyanma zamanlayıcıları içerir.
- İletişim Arayüzleri: I2C, IrDA, LIN bus, SPI, UART/USART gibi çeşitli iletişim protokollerini destekler.
- Çalışma Gerilimi: 2,95 ila 5,5 V, farklı güç ortamları için esneklik sağlar.
- Sıcaklık Aralığı: -40°C ila 85°C arasında çalışma sıcaklığı aralığı, geniş bir yelpazede çevre koşulları için uygun hale getirir.
Uygulama Örnekleri:
Yüksek performansı ve düşük maliyeti sayesinde STM8S903K3, çeşitli alanlarda yaygın olarak kullanılmaktadır. Örneğin, elektrikli araç kontrolör tasarımlarında, sensörsüz fırçasız DC motorları çalıştırmak için ana kontrol yongası görevi görür; böylece motor maliyetlerini düşürür ve kontrolörün kararlılığını artırır.
STM8S903K3'ü STVD ve STVP ile programlama
Bu örnekte, ST Visual Develop ve ST Visual Programmer'ı kullanarak, ortam yapılandırmasından proje oluşturmaya, derlemeden test etmeye kadar STM8S903K3 UART programlama kılavuzunu ele alacağız.
Gerekli Araçlar
Donanım:
- STM8S903K3 Mikrodenetleyici
- ST-Link Hata Ayıklayıcı/Programlayıcı
- Hedef Kart (İsteğe Bağlı)
- UART Seri İletişim Arayüzü (İsteğe Bağlı)
Yazılım:
- ST Visual Develop (STVD) (yazma, derleme ve hata ayıklama için IDE aracı)
- ST Visual Programmer (STVP) (programlama aracı)
- ST-Link USB Sürücüsü
- STM8 Cosmic Derleyici Araç Zinciri (projeyi derlemek ve HEX dosyasını oluşturmak için)
- Terminal Emülatörü Yazılımı (İsteğe bağlı)
Adım Adım Süreç
1. ST Visual Develop'da Yeni Çalışma Alanı Oluşturun
ST Visual'ı açın ve yeni bir çalışma alanı oluşturun. Bu alan, proje dosyalarınızı ve yapılandırmalarınızı barındıracak.
2. Yeni Çalışma Alanı ve Proje Oluştur
Çalışma alanında yeni bir proje oluşturun. Bu proje, kodunuzu yazıp derleyeceğiniz ana geliştirme ortamı olacaktır.
3. Çalışma Alanı Dosya Adı ve Konumunun Ayarlanması
Çalışma alanının kaydedileceği dosya adını ve konumu belirtin. Proje dosyalarını saklamak için bilgisayarınızda uygun bir dizin seçin.
4. Yeni Proje Araç Seti STM8 Cosmic
Proje için STM8 Cosmic araç setini seçin. Cosmic araç seti, STM8 mikrodenetleyicisi için kodu derlemek ve çalıştırılabilir dosyayı oluşturmak amacıyla kullanılır.
5. STM8S903K3 MCU'yu seçin
Proje ayarlarında, hedef cihaz olarak STM8S903K3 mikrodenetleyiciyi (MCU) seçin. Bu, projenin çalıştığınız donanıma göre doğru şekilde yapılandırılmasını sağlar.
6. main.c Dosyasına UART Kodu Ekleme
Projenizin main.c dosyasına, seri iletişimi etkinleştirmek için aşağıdaki UART kodunu ekleyin. Bu kod, UART ayarlarının yapılandırılmasının yanı sıra veri gönderme ve alma işlevlerini de içerir.
#include "stm8s903k3.h"
#include "stdio.h"
#define _COSMIC_
/*
Since different compilers (RAISONANCE, COSMIC, IAR) have slightly different parameter and return value conventions for putchar and getchar,
we use macros to define them accordingly. These macros are automatically added by the compiler.
*/
#ifdef _RAISONANCE_
#define PUTCHAR_PROTOTYPE int putchar (char c)
#define GETCHAR_PROTOTYPE int getchar (void)
#elif defined (_COSMIC_)
#define PUTCHAR_PROTOTYPE char putchar (char c)
#define GETCHAR_PROTOTYPE char getchar (void)
#else /* _IAR_ */
#define PUTCHAR_PROTOTYPE int putchar (int c)
#define GETCHAR_PROTOTYPE int getchar (void)
#endif /* _RAISONANCE_ */
// Function to send a character to UART1
PUTCHAR_PROTOTYPE
{
UART1_DR = c; // Send a character 'c' to UART1 data register
while (!(UART1_SR & 0x40)); // Wait for transmission to complete (TXE flag)
return (c);
}
// Function to receive a character from UART1
GETCHAR_PROTOTYPE
{
#ifdef _COSMIC_
char c = 0;
#else
int c = 0;
#endif
// Wait for new data to be received (RXNE flag)
while (!(UART1_SR & 0x20));
// Read received data
c = UART1_DR;
return (c);
}
// Clock initialization function
void CLK_Init(void)
{
// Enable the internal high-speed oscillator (HSI)
CLK_ICKR |= 0x01;
CLK_CKDIVR = 0x00; // No clock division (16MHz)
while (!(CLK_ICKR & 0x02)); // Wait for HSI to be ready
CLK_SWR = 0xE1; // Use HSI as the system clock source
}
// UART1 initialization function
void UART1_Init(void)
{
UART1_CR3 = 0x00; // Disable LIN mode, one stop bit, no SCK
UART1_CR2 = 0x00; // Disable TX interrupt, RX interrupt, and others
UART1_CR3 = 0x00; // Disable interrupts, no break frames
UART1_BRR2 = 0x02; // Set baud rate (9600)
UART1_BRR1 = 0x68; // Set baud rate (9600)
UART1_CR2 = 0x0C; // Enable TX and RX
}
// Simple delay function (not very accurate, could be improved with a timer)
void delay(unsigned int x)
{
unsigned int i, j;
for (i = x; i > 0; i--)
for (j = 300; j > 0; j--);
}
void main()
{
unsigned char c;
CLK_Init(); // Initialize system clock
UART1_Init(); // Initialize UART1
while(1)
{
printf("\n\rPlease enter a key: ");
while (!(UART1_SR & 0x20)); // Wait for data to be received (RXNE flag)
c = UART1_DR; // Read received character
printf("\n\rYou entered: %c.", c); // Send the received character back to the user
}
}
main.c kodunu ekledikten sonra, projenin "Include Files" klasörüne stm8s903k3.h başlık dosyasını ekleyebiliriz. Bu dosya, STM8S903K3 MCU için gerekli tanımları ve yapılandırmaları içerir; böylece derleyici, cihaza özgü kayıtları ve işlevleri tanıyabilir.
7. Projeyi derleyin
Kod yazıldıktan sonra, projeyi derleyerek kaynak kodunu STM8S903K3'ün anlayabileceği makine koduna dönüştürün. Bu adımda hatalar kontrol edilecek ve bir çıktı dosyası (genellikle bir .hex dosyası) oluşturulacaktır.
8. Hata Ayıklama Hedefi: Swim ST-Link
Hedef MCU ile iletişim kurmak için ST-Link hata ayıklama cihazını seçerek hata ayıklama ortamını kurun. ST-Link, STM8 mikrodenetleyicisine kod yüklemek ve hata ayıklama yapmak için kullanılan USB tabanlı bir programlayıcı/hata ayıklama cihazıdır.
9. Derleme Sonrası Aşamasında Proje Ayarlarını Düzenleme Komutları
Proje ayarlarında, derleme sonrası komutları düzenleyerek, çıktı dosyasının kopyalanması veya ek işlemlerin gerçekleştirilmesi gibi derleme sonrasında yapılması gereken gerekli adımları otomatikleştirin.
10. Metin dosyasını kaydedin ve projeyi yeniden derleyin
Projeyi ve yapılandırma veya derleme komutları içeren tüm metin dosyalarını kaydedin. Kaydettikten sonra, tüm ayarların doğru şekilde uygulandığından ve çıktı dosyasının oluşturulduğundan emin olmak için projeyi yeniden derleyin.
11. ST Visual Programmer STM8 için STM8S903K3 ST-LINK'i yapılandırın
Programlama için ST-Link'i STM8S903K3 mikrodenetleyicisiyle kurun. Programlama ve hata ayıklama işlemlerini kolaylaştırmak için ST-Link hem bilgisayara hem de STM8S903K3'e bağlanmalıdır.
12. ST Visual Programmer ile Programlama
ST Visual Programmer yazılımını kullanarak uart.HEX derleme işlemi tarafından oluşturulan dosyayı açın. Bu dosya, STM8S903K3 mikrodenetleyiciniz için derlenmiş kodu içerir. ST Visual Programmer'da uygun programlama seçeneklerini seçin ve oluşturulan .hex dosyayla programlayın.




