HOLTEK HT32 MCU UART Uygulama Notu Kullanım Kılavuzu
HOLTEK HT32 MCU UART Uygulama Notu

giriiş

Evrensel Asenkron Alıcı/Verici – UART, esnek asenkron tam çift yönlü veri iletimi sağlayan, yaygın olarak kullanılan bir seri iletim arayüzüdür. Bu uygulama notunda sağlanan "Module_UART" uygulama kodu, ilgili işlevleri aşağıda açıklanan API'ler aracılığıyla basit UART gönderme/alma işlevlerini uygulamak için yazılım halka arabellekleriyle TX/RX kesintilerini kullanır. Bu, tüm veri aktarım sürecini basitleştirecek ve kullanıcıların UART iletişim uygulamalarını hızlı bir şekilde anlamasına ve uygulamasına olanak tanıyacak.

  • İletim/alma işlevleri: bayt okuma, bayt yazma, arabellek okuma, arabellek yazma vb.
  • Durum fonksiyonları: arabellek uzunluğunu, TX durumunu vb. elde edin.

Bu belge öncelikle kullanıcıların UART iletişimini prensipten uygulamaya kadar daha iyi anlamalarına yardımcı olacak UART iletişim protokolünü tanıtacaktır. Bunu, ürün yazılımı kitaplığı, uygulama kodu indirme, uygulama kodu indirme dahil olmak üzere uygulama kodu için gerekli kaynakların indirilmesi ve hazırlanması takip eder. file ve dizin konfigürasyonunun yanı sıra uygulama notunda kullanılan terminal yazılım aracına giriş. İşlevsel Açıklama bölümünde uygulama kodu dizin yapısı, parametre ayarları ve API açıklaması tanıtılacaktır. API kullanımı “Module_UART” uygulama kodu kullanılarak açıklanacak ve API'ler için gereken Flash/RAM kaynak tüketimi de listelenecektir. Kullanım Talimatları bölümü, uygulama kodunun düzgün çalışacağını doğrulamak için kullanıcıya çevresel hazırlık, derleme ve test adımlarında rehberlik edecektir. Daha sonra API'lerin kullanıcının projelerine nasıl entegre edileceğini açıklayan talimatlar sağlayacak ve son olarak da karşılaşılabilecek değişiklikler ve genel sorunlar için bir referans sağlayacaktır.

Kullanılan kısaltmalar: 

  • - UART: Evrensel Asenkron Alıcı / Verici
  • Uygulama API'si: Uygulama Programlama Arayüzü
  • - En az anlamlı bit
  • MSB: En Önemli Bit
  • Bilgisayar: Kişisel Bilgisayar
  • SK: Başlangıç ​​Kiti, HT32 geliştirme kartı
  • İDE: Entegre Geliştirme Ortamı

UART İletişim Protokolü

UART, vericisinde paralelden seriye veri dönüşümünü uygulayan ve daha sonra benzer bir alıcıyla seri olarak iletişim kuran seri iletişim tipi bir arayüzdür. Alıcı daha sonra veri alımından sonra seriden paralele veri dönüşümü gerçekleştirir. Şekil 1, verilerin bit düzeyinde nasıl aktarıldığını gösteren seri iletişimin şematik bir diyagramını göstermektedir. Bu nedenle, verici ve alıcı arasındaki çift yönlü iletişim için, verileri birbirleri arasında seri olarak aktarmak için yalnızca TX ve RX olmak üzere iki kabloya ihtiyaç vardır. TX, UART'ın seri veriyi ilettiği ve alıcının RX pinine bağlanan pindir. Bu nedenle verici ve alıcı cihazların UART iki yönlü iletişimini gerçekleştirmek için TX ve RX pinlerini şekilde gösterildiği gibi çapraz bağlamaları gerekir. Figür 2.

Şekil 1. Seri İletişim Şeması
Seri İletişim Şeması

Şekil 2. UART Devre Şeması
UART Devre Şeması

UART seri iletişimi sırasında veri iletimi asenkrondur. Bu, verici ile alıcı arasında saat veya başka bir senkronizasyon sinyali olmadığı anlamına gelir. Burada seri veri gönderme/alma hızı olan ve veri aktarımlarından önce her iki tarafça belirlenen baud hızı kullanılır. Ayrıca tam bir UART veri paketi oluşturmak için veri paketinin başına ve sonuna başlangıç ​​ve bitiş bitleri gibi özel bitler eklenir. Şekil 3, UART veri paketi yapısını gösterirken, Şekil 4, eşlik biti olmayan bir UART 8 bitlik veri paketini göstermektedir.
Şekil 3. UART Veri Paketi Yapısı
UART Veri Paketi Yapısı

Şekil 4. UART 8-bit Veri Paketi Formatı
Veri Paketi Formatı
UART veri paketinin her bir kısmı aşağıdaki sırayla tanıtılmaktadır.

  • Başlangıç ​​Biti: Bu, bir veri paketinin başlangıcını gösterir. UART TX pini genellikle iletim başlamadan önce yüksek mantık seviyesinde kalır. Veri iletimi başlarsa, UART vericisi TX pinini yüksekten düşüğe, yani 1'den 0'a çekecek ve ardından bir saat döngüsü boyunca orada tutacaktır. UART alıcısı, RX pininde yüksekten düşüğe geçiş tespit edildiğinde verileri okumaya başlayacaktır.
  • Veri: Bu, 7, 8 veya 9 bitlik veri uzunluğuyla aktarılan gerçek veridir. Veriler genellikle önce LSB ile aktarılır.
  • Parite Biti: Verilerdeki lojik “1” sayısı iletim sırasında herhangi bir verinin değişip değişmediğini belirlemek için kullanılır. Çift eşlik için verideki toplam lojik “1” sayısı çift sayı olmalı, tek eşlik için ise verideki toplam lojik “1” sayısı tek sayı olmalıdır.
  • Biti Durdur: Bu, UART vericisinin TX pinini düşükten yükseğe, yani 0'dan 1'e çekeceği ve ardından 1 veya 2 bitlik bir süre boyunca orada tutacağı veri paketinin sonunu belirtir.

Daha önce de belirttiğimiz gibi UART devresinde saat sinyali olmadığından hatasız iletimin gerçekleşebilmesi için verici ve alıcı arasında baud hızı olarak bilinen aynı seri veri gönderme/alma hızının tanımlanması gerekir. Baud hızı, bps (saniye başına bit) cinsinden saniyede aktarılan bit sayısıyla tanımlanır. Bazı standart ve yaygın olarak kullanılan baud hızları 4800bps, 9600bps, 19200bps, 115200bps vb.'dir. Tek bir veri bitinin aktarımı için gereken karşılık gelen süre aşağıda gösterilmiştir.
Tablo 1. Baud Hızı ve 1-Bit İletim Süresi Karşılaştırması 

Baud Hızı 1-Bit İletim Zaman
4800bps 208.33µs
9600bps 104.16µs
19200bps 52.08µs
115200bps 8.68µs

Kaynak İndirme ve Hazırlama

Bu bölümde uygulama kodu ve kullanılan yazılım aracının yanı sıra dizinin nasıl yapılandırılacağı ve file yol.

Ürün Yazılımı Kitaplığı 

Öncelikle uygulama kodunu kullanmadan önce Holtek HT32 ürün yazılımı kitaplığının indirildiğinden emin olun. İndirme bağlantısı aşağıda gösterilmiştir. Burada iki seçenek vardır: HT32F0xxxx serisi için HT32_M5p_Vyyyymmdd.zip ve HT32F3xxxx serisi için HT32_M1_Vyyymmdd.zip. İstediğinizi indirin ve açın file.

Fermuar file Belge, Ürün Yazılımı Kitaplığı, Araçlar ve diğer öğeler olarak sınıflandırılabilecek çeşitli klasörler içerir; yerleştirme yolu Şekil 5'te gösterilmiştir. HT32 ürün yazılımı kitaplığı zip file bir ile file HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip adı Firmware_Library klasörü altında bulunur.

Şekil 5. HT32_M0p_Vyyyyammdd.zip İçeriği
İçindekiler

Uygulama Kodu
Uygulama kodunu aşağıdaki bağlantıdan indirin. Uygulama kodu bir zip dosyasına paketlenmiştir file bir ile file HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip'in adı. Görmek Şekil 6 için file isim kuralları.

Şekil 6. Uygulama Kodu File İsim Giriş 

İndirme bağlantısı: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Uygulama Kodu

File ve Dizin Yapılandırması
Uygulama kodu HT32 ürün yazılımı kitaplığını içermediğinden files, uygulama kodu ve ürün yazılımı kitaplığının sıkıştırılmış hali fileDerlemeye başlamadan önce s doğru yola yerleştirilmelidir. Uygulama kodu zip'i file Şekil 7'de gösterildiği gibi genellikle uygulama ve kitaplık gibi bir veya daha fazla klasör içerir. İşlemi tamamlamak için uygulama klasörünü HT32 ürün yazılımı kitaplığı kök dizininin altına yerleştirin. file yol yapılandırmasını Şekil 8'de gösterildiği gibi yapın. Alternatif olarak, aynı yapılandırma sonuçlarını elde etmek için uygulama kodunu ve HT32 ürün yazılımı kitaplığını aynı anda aynı yola açın.

Şekil 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip İçeriği
İçindekiler

Şekil 8. Dekompresyon Yolu
Dekompresyon Yolu

Terminal Yazılımı
Uygulama kodu, işlev seçimini veya durum ekranını uygulamak için mesajları COM bağlantı noktası üzerinden aktarabilir. Bu, ana bilgisayar tarafının terminal yazılımının önceden kurulmuş olmasını gerektirir. Kullanıcılar uygun bağlantı yazılımını seçebilir veya Tera Term gibi ücretsiz lisanslı yazılımı kullanabilir. Uygulama kodunda UART kanalı 8 bitlik kelime uzunluğunda, paritesiz, 1 stop bitli ve 115200bps baud hızıyla yapılandırılmıştır.

İşlevsel Açıklama

Bu bölüm, dizin yapısı, API mimarisi, ayar açıklaması vb. hakkında bilgiler de dahil olmak üzere uygulama kodu için işlevsel bir açıklama sağlayacaktır.

Dizin Yapısı
Uygulama kodu file bir uygulama klasörü içerir. Bir sonraki katman “UART_Module_Ex” adlı iki uygulama programını içeren “Module_UART” klasörüdür.ample” ve “UART_Bridge”. İlgili fileaşağıda listelenmiş ve açıklanmıştır.
Tablo 2. Uygulama Kodu Dizin Yapısı

Dosya / File İsim Tanım
\\application\Module_UART\UART_Module_Example*1
_CreateProject.bat Proje oluşturmak için toplu komut dosyaları files
_ProjectSource.ini Başlatma file projelere kaynak kodu eklemek için
ht32_board_config.h Kurmak file IC çevre birimi G/Ç atamasıyla ilgili
ht32fxxxx_01_it.c Kesinti servis programı file
ana.c Ana programın kaynak kodu
\\application\Module_UART\UART_Bridge*2
_CreateProject.bat Proje oluşturmak için toplu komut dosyaları files
_ProjectSource.ini Başlatma file projelere kaynak kodu eklemek için
ht32_board_config.h Kurmak file IC çevre birimi G/Ç atamasıyla ilgili
ht32fxxxx_01_it.c Kesinti servis programı file
ana.c Ana programın kaynak kodu
uart_bridge.h uart_bridge.c UART köprü başlığı file ve kaynak kodu file
\\utilities\middleware
uart_module.h*3 uart_module.c*3 API başlığı file ve kaynak kodu file
\\yardımcı programlar\ortak
ringbuffer.h ring_buffer.c Yazılım halka arabellek başlığı file ve kaynak kodu file

Not: 

  1. “UART_Module_Ex” içindeamp".le" uygulama kodunda API okuma ve yazma işlemleri geridöngü şeklinde gerçekleştirilir, bkz. "API Kullanımı Örneği"ampDaha fazla ayrıntı için les” bölümüne bakın.
  2.  “UART_Bridge” uygulama kodunda UART CH0 ve UART CH1 olmak üzere iki UART kanalı etkinleştirilir ve iki UART cihazı arasında COMMAND yapıları üzerinden özel iletişim protokolü uygulanır. Daha fazla bilgi için "API Kullanımı Örn.amples” bölümü.
  3. Uygulama kodunun uart_module.c/h dosyasını kullanması gerekiyor fileÜrün yazılımı kitaplığı sürümü gereksinimi olan yazılımlar. Güncellemeye göre gereksinim zaman zaman değişebilir. Mevcut ürün yazılımı kitaplığı sürümü gereksinimini doğrulamak için ana menüde "Bağımlılık kontrolü" anahtar kelimesini arayarak bağımlılık kontrolü içeriğine bakın. file. Firmware kitaplığı sürümü gereksinimleri karşılamıyorsa, “Firmware Library” bölümünde verilen bağlantıdan en yeni sürümü indirin.

API Mimarisi
Her API'nin UART Kanalı olan önemli bir CH parametresi vardır. Bu, hangi UART kanalının kontrol edileceğini belirler. Şu anda dört adede kadar UART kanalı desteklenmektedir ve bu nedenle dört sabit sembol aşağıdaki gibi tanımlanmaktadır. Bunlar, API'lere kontrolün temelini sağlayan CH parametresi olarak kullanılır.

  • UARTM_CH0: giriş parametresi – UART CH0'ı kontrol edin veya yapılandırın
  • UARTM_CH1: giriş parametresi – UART CH1'ı kontrol edin veya yapılandırın
  • UARTM_CH2: giriş parametresi – UART CH2'ı kontrol edin veya yapılandırın
  • UARTM_CH3: giriş parametresi – UART CH3'ı kontrol edin veya yapılandırın

Yalnızca bir UART kanalı kullanılırsa bellek alanı israf edilmeyecektir. Bunun nedeni, desteklenen UART kanallarının sayısının ayarlanabilmesi ve kullanılabilir bellek alanını artırmak için kullanılmayan UART kanal kodunun ön işlemci tarafından kaldırılmasıdır. API mimarisi şurada gösterilmiştir: Şekil 9.

Şekil 9. API Mimarisi Blok Şeması
Mimari Blok Şeması

Her API, dört grup UART kanalıyla ilgili ayar veya kontrolden oluşur; böylece kullanıcıların yalnızca istenen CH parametresini girmesi gerekir. İlgili API'yi yapılandırmak için yalnızca USART_InitTypeDef yapı formuna sahip ek bir UART temel yapılandırma parametre tablosuna sahip olmak gerekir. API, tablodaki parametre içeriklerine göre UART temel yapılandırmasını uygulayacaktır. UART temel konfigürasyon yapısı tablosu için “API Açıklaması” bölümüne bakın.

uart_module.c/.h fileUART iletişimi için gerekli tüm ayarlar ht32_board_config.h tarafından sağlanırken, her bir UART kanalının yalnızca kesme (CHx_IRQ) ​​ve durum tablosunu (CHx Durumu) içerir. ht32_board_config.h dosyasındaki donanımla ilgili parametreler file aşağıdaki tabloda gösterilmektedir. Daha fazla ayrıntı “Ayar Açıklaması” bölümünde verilmektedir.

ht32_board_config.h dosyasındaki donanımla ilgili parametreler, aşağıdaki gibi G/Ç ayarlarını ve fiziksel UART bağlantı noktası ayarlarını içerir.

Tablo 3. ht32_board_config.h dosyasındaki Tanım Sembolleri

Sembol Tanım
HTCFG_UARTM_CH0 Fiziksel UART bağlantı noktası adı; Eskiampdosya: UART0, UART1…
HTCFG_UARTM0_TX_GPIO_PORT CH0 için TX'in port adını tanımlar; Eskiample: A, B, C…
HTCFG_UARTM0_TX_GPIO_PIN CH0 için TX'in pin numarasını tanımlar; Eskiample: 0~15
HTCFG_UARTM0_RX_GPIO_PORT CH0 için RX'in bağlantı noktası adını tanımlar; Eskiample: A, B, C…
HTCFG_UARTM0_RX_GPIO_PIN CH0 için TX'in pin numarasını tanımlar; Eskiample: 0~15
HTCFG_UARTM0_TX_BUFFER_SIZE CH0 için TX arabellek boyutunu tanımlar; Eskiampben: 128
HTCFG_UARTM0_RX_BUFFER_SIZE CH0 için RX arabellek boyutunu tanımlar; Eskiampben: 128

UART kanalı AFIO yapılandırmasını değiştirmek için ilgili cihazın veri sayfasına bakın. Ht0_board_config.h dosyasında yalnızca UART CH0 yapılandırıldığından şu anda yalnızca UART CH32 için G/Ç tanımları geçerli olur. UART CH1~3 eklemek için UART CH0 tanımına veya “Ayar Değişikliği ve SSS” bölümüne başvurarak I/O tanımlarının tamamlanması gerekir.

Üç API mimarisi ana özelliği vardır: 

  1. Dört adede kadar UART kanalı desteklenir. Giriş parametreleri UARTM_CH0, UARTM_CH1, UARTM_CH2 ve UARTM_CH3'tür.
  2.  UART kanallarının sayısı ayarlanabilir ve kullanılmayan kanallar kullanılabilir bellek alanını azaltmaz.
  3. Tüm UART ayarları ve I/O tanımları API'lerden tamamen ayrılmıştır. Bu, değerleri ayarlamanın yönetim kolaylığını artırır ve yanlış veya eksik ayar olasılığını azaltır.

Ayar Açıklaması 

Bu bölümde ht32_board_config.h ve uart_module.h'deki parametre ayarları tanıtılacaktır. files.

  1. ht32_board_config.h: Bu file Başlangıç ​​Kiti (SK) tarafından kullanılan UART IP kanalını (UART0, UART1, USART0…), karşılık gelen TX/RX pin konumlarını ve TX/RX arabellek boyutunu içeren pin tanımları ve geliştirme kartıyla ilgili ayarlar için kullanılır. Şekil 10, HT32F52352 Başlangıç ​​Kitinin ayar içeriğini göstermektedir. Geliştirmenin fonksiyonel entegrasyonuna bağlı olarak kullanıcılar, pin tanımlarını uygulamak için kullanılan cihazın veri sayfasının “Pin Ataması” bölümüne başvurabilirler. Ayar değişikliğine ilişkin daha fazla ayrıntı "Ayar değişikliği ve SSS" bölümünde açıklanacaktır.
    Şekil 10. ht32_board_config.h Ayarları (HT32F52352)
    Ayarlar
  2. uart_module.h: Bu API başlığıdır file İlgili varsayılan ayarları, işlev tanımlarını vb. içeren uygulama kodu tarafından kullanılır. Şekil 11'de gösterildiği gibi, varsayılan ayar içerikleri, ht32_board_config.h dosyasındaki ayarlar gibi harici yapılandırmalar tarafından üzerine yazılabilir. file.
    Şekil 11. uart_module.h'deki Varsayılan Ayarlar
    Varsayılan Ayarlar
API Açıklaması
  1. Uygulama kodu veri türü açıklaması.
    • USART_InitTypeDef
      Aşağıda gösterildiği gibi BaudRate, WordLength, StopBits, Parity ve Mode konfigürasyonlarından oluşan UART temel konfigürasyon yapısıdır.
      Değişken İsim Tip Tanım
      USART_BaudHızı u32 UART iletişim baud hızı
      USART_Kelime Uzunluğu u16 UART iletişim kelime uzunluğu: 7, 8 veya 9 bit
      USART_StopBits u16 UART iletişimi durdurma bit uzunluğu: 1 veya 2 bit
      USART_Parite u16 UART iletişim paritesi: çift, tek, işaret, boşluk veya eşlik yok
      USART_Mode u16 UART iletişim modu; API'ler yalnızca normal modu destekler
  2. API işlevlerini kullanmadan önce ana programdaki UART temel yapılandırmasını tamamlayın. Bu uygulama kodu için UART temel konfigürasyonu Şekil 12'de gösterilmektedir. Burada baud hızı 115200bps, kelime uzunluğu 8 bit, stop bit uzunluğu 1 bittir ve eşlik yoktur.
    Şekil 12. UART Temel Yapılandırması
    Temel Yapılandırma
  3. Şekil 13, uart_module.h dosyasında bildirilen API işlevlerini göstermektedir. file. Aşağıdaki tablolarda API işlevlerinin işlevi, giriş parametreleri ve kullanımı açıklanmaktadır.
    Şekil 13. uart_module.h'deki API İşlev Bildirimleri 
    API İşlev Bildirimleri
İsim void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
İşlev UART modülü başlatma
  Giriş CH UART kanalı
pUART_Init UART temel yapılandırma yapısı işaretçisi
 uRxTimeOutValue UART RX FIFO zaman aşımı değeri. RX FIFO yeni veri aldığında sayaç sıfırlanacak ve yeniden başlayacaktır. Sayaç önceden ayarlanan zaman aşımı değerine ulaştığında ve karşılık gelen zaman aşımı kesintisi etkinleştirildiğinde, bir zaman aşımı kesintisi oluşturulacaktır.
 Kullanım UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//UART temel yapılandırmasını yürütün//USART_InitStructure yapılandırması için Şekil 12'ye bakın
İsim u32 UARTM_WriteByte(u32 CH, u8 uData)
İşlev UART modülü yazma bayt işlemi (TX)
Giriş CH UART kanalı
uVeri Yazılacak veriler
Çıktı BAŞARI Başarılı
HATA Arızalı
Kullanım UARTM_WriteByte(UARTM_CH0, 'A'); //UART 1 bayt yazıyor – 'A'
İsim u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
İşlev UART modülü yazma işlemi (TX)
 Giriş CH UART kanalı
pTampon Tampon işaretçisi
uUzunluk Yazılacak verinin uzunluğu
Çıktı BAŞARI Başarılı
HATA Arızalı
 Kullanım u8 Test[] = “Bu bir testtir!\r\n”; UARTM_Write(UARTM_CH0, Test, sizeof(Test) -1); //UART pBuffer verilerini yazıyor
İsim u32 UARTM_ReadByte(u32 CH, u8 *pData)
İşlev UART modülü okuma bayt işlemi (RX)
Giriş CH UART kanalı
pVeri Okunan verinin yerleştirileceği adres
Çıktı BAŞARI Başarılı
HATA Başarısız (veri yok)
   Kullanım u8 TempData; if (UARTM_ReadByte(UARTM_CH0, &TempData) == SUCCESS){UARTM_WriteByte(UARTM_CH0, TempData);}//UARTM_ReadByte() işlevi SUCCESS değerini döndürürse UART bu veri baytını yazar
İsim u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
İşlev UART modülü okuma işlemi (RX)
 Giriş CH UART kanalı
pTampon Tampon işaretçisi
uUzunluk Okunacak verinin uzunluğu
Çıktı Okuma sayısı Verinin uzunluğu okundu
     Kullanım u8 Test2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() 5 bayt veri okur ve verileri Test2'ye depolar ve okuma bayt sayısını atar Len//Test2'den alınan verileri yazın
İsim u32 UARTM_GetReadBufferLength(u32 CH)
İşlev Okuma arabelleği uzunluğunu (RX) edinin
Giriş CH UART kanalı
Çıktı uUzunluk Tampon uzunluğunu oku
  Kullanım UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //UART modülünün başlatılması while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//UARTM_ReadBuffer 5 bayt veri alana kadar bekleyin
İsim u32 UARTM_GetWriteBufferLength(u32 CH)
İşlev Yazma arabelleği uzunluğunu (TX) edinin
Giriş CH UART kanalı
Çıktı uUzunluk Tampon uzunluğunu yaz
İsim u8 UARTM_IsTxFinished(u32 CH)
İşlev TX durumunu edinin
Giriş CH UART kanalı
Çıktı DOĞRU Teksas durumu: tamamlandı
YANLIŞ TX durumu: tamamlanmadı
      Kullanım UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 gerekliwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Bu API, yukarıda gösterildiği gibi TX durumunu kontrol etmek için kullanılabilir; UARTM_WriteByte() API'sinin bitmesini bekleyin, yani TX durumu TRUE oluncaya kadar bekleyin ve ardından sonraki işlemlere devam edin.//Uart_module.c'deki SVN sürüm numarası 525 olana kadar bu fonksiyon eklenmediğinden bir kısıtlama eklendi.
İsim geçersiz UARTM_DiscardReadBuffer(u32 CH)
İşlev Okuma arabelleğindeki verileri atın
Giriş CH UART kanalı

API Kullanımı Örneğiamples 

Bu bölümde eski API yazma ve okuma işlemleri gösterilecektir.ampBaşlatma işlemini ve "UART_Module_Ex"i kullanan "Module_UART" uygulama kodunun dosyalarıample” uygulama kodu işlemi. API'leri kullanmadan önce kullanıcıların API başlığını eklemeleri gerekir file ana programın kaynak koduna file (#”middleware/uart_module.h”yi dahil edin).

Şekil 14'te gösterildiği gibi başlatma işlemine girerken öncelikle UART temel konfigürasyon yapısını tanımlayın. Ardından BaudRate, WordLength, StopBits, Parity ve Mode dahil olmak üzere UART temel yapılandırma yapısı üyelerini yapılandırın. Son olarak, tamamlanması, başlatma işleminin sonunu gösteren API başlatma işlevini çağırın. Bundan sonra kullanıcılar, önceden ayarlanmış UART temel konfigürasyonuna göre yazma ve okuma işlemlerine devam edebilirler.

Şekil 14. Başlatma Akış Şeması
Başlatma Akış Şeması

“UART_Module_Examp".le" uygulama kodu, API okuma ve yazma işlemlerini geri döngü şeklinde gösterir. Bunun akış şeması Şekil 15'te gösterilmektedir. Kullanılan API işlevleri arasında UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() ve UARTM_GetReadBufferLength() yer almaktadır. Açıklamaları “API Açıklaması” bölümünde verilmiştir.

Şekil 15. Ex Yazma ve Okuma Akış Şemasıamples
Ex Yazma ve Okuma Akış Şemasıamples

İlgili “Module_UART” klasörü altında başka bir “UART_Bridge” uygulama kodu bulunmaktadır. file açıklaması “Dizin Yapısı” bölümünde tanıtılmıştır. "UART_Bridge" uygulama kodu, iki UART kanalını (UART CH0 ve UART CH1) etkinleştirir ve ardından iki UART cihazı arasındaki iletişim protokolünü COMMAND yapıları (gCMD1 ve gCMD2) aracılığıyla özelleştirir. Bunlar aşağıda gösterildiği gibi uart_bridge.c'de tanımlanmıştır. UARTBridge_CMD1TypeDef gCMD1:

Değişken İsim Tip Tanım
uBaşlık u8 Başlık
uCmd u8 Emretmek
uVeri[3] u8 Veri

UARTBridge_CMD2TypeDef gCMD2:

Değişken İsim Tip Tanım
uBaşlık u8 Başlık
uCmdA u8 Komut A
uCmdB u8 Komut B
uVeri[3] u8 Veri

“UART_Bridge” uygulama kodunda, verileri bir komut paketi olarak almak ve ardından analiz etmek için gCMD1'i kullanın. Daha sonra özelleştirilmiş iletişim protokolüne göre gCMD2'yi yanıt paketi olarak ayarlayın ve iletin. Aşağıdaki eski birampbir komut paketi gCMD1) ve bir yanıt paketinin (gCMD2) dosyası. Komut Paketi (UARTBridge_CMD1TypeDef gCMD1):

Bayt 0 Bayt 1 Bayt 2 ~ Bayt 4
uBaşlık uCmd uVeri [3]
"A" "1" “x, y, z”

Yanıt Paketi (UARTBridge_CMD2TypeDef gCMD2):

Bayt 0 Bayt 1 Bayt 2 Bayt 3 ~ Bayt 5
uBaşlık uCmdA uCmdB uVeri [3]
"B" "A" "1" “x, y, z”

Kaynak Mesleği
HT32F52352'yi eski olarak almakampDosyada UART modülünün kapladığı kaynaklar aşağıda gösterilmiştir.

HT32F52352
ROM Boyutu 946 Bayt
RAM Boyutu 40*1 + 256*2 Baytlar

Not:

  1. Tek bir kanalın bayrakları ve durumunu içeren genel değişkenler 40 bayt RAM kaplar.
  2.  Bu, tek bir kanalın kullanıldığı ve TX/RX arabellek boyutunun 128/128 bayt olduğu bir durum içindir. Tampon boyutu uygulama gereksinimlerine göre ayarlanabilir.

Tablo 4. Uygulama Kodu Kaynak Mesleği 

  • Derleme ortamı: MDK-Arm V5.36, ARMCC V5.06 güncelleme 7 (derleme 960)
  • Optimize etme seçeneği: Seviye 2 (-O2)

Kullanım Talimatları

Bu bölümde “Module_UART” uygulama kodu için çevresel hazırlığın yanı sıra derleme ve test adımları tanıtılacaktır.

Çevresel Hazırlık
“Module_UART” uygulama kodu için gerekli donanım ve yazılımlar aşağıda listelenmiştir.
Tablo 5. Donanım/Yazılım Ortam Hazırlığı 

Donanım/Yazılım Saymak Not
Başlangıç ​​Seti 1 Bu uygulama notu, eski bir ürün olarak HT32F52352 Başlangıç ​​Kitini kullanır.ample
USB kablosu 1 Mikro USB, PC'ye bağlı
Uygulama Kodu İndirme yolu, file ve dizin yapılandırması “Kaynak İndirme ve Hazırlama” bölümünde tanıtılmaktadır. Yol: “\\application\Module_UART\UART_Module_Example”
Tera Dönemi “Terminal Yazılımı” bölümüne bakın
Keil IDE Keil uVision V5.xx

İlk olarak, UART uygulamasının tanıtımı için e-Link32 Lite'ın Sanal COM Bağlantı Noktası (VCP) işleviyle birlikte HT52352F32 Başlangıç ​​Kitini kullanın. Bu, aşağıdaki çevresel hazırlığın uygulanmasını gerektirir:

  1. Kart üzerinde iki adet USB arayüzü bulunmaktadır. PC'yi ve kart üzerindeki eLink32 Lite arayüzünü Şekil 16-(a)'da gösterildiği gibi bağlamak için USB kablosunu kullanın.
  2. Uygulama kodunun e-Link32 Lite Sanal COM Bağlantı Noktası (VCP) işlevini kullanması gerektiğinden, UART Jumper-J2*2'in PAx*1 ve DAP_Tx'inin bir atlama teli kullanılarak kısa devre yapıldığından emin olun. J2 konumu Şekil 16-(b)'de gösterilmektedir.

Not

  1. Başlangıç ​​Kitindeki J2'nin iki seçeneği vardır: PAx ve DAP_Tx kısa devreli veya PAx ve RS232_Tx kısa devreli. Ayrıntılı ayar işlevleri için Başlangıç ​​Kiti kullanım kılavuzuna bakın.
  2. Farklı Başlangıç ​​Kitlerindeki MCU UART RX pin konumu farklıdır. Bu eskiampDosya, RX pinini belirtmek için PAx'ı kullanır.

Şekil 16. HT32 Başlangıç ​​Kiti Blok Şeması
Kit Blok Şeması

Şimdi UART uygulamasının tanıtımı için e-Link32 Pro'nun Sanal COM Bağlantı Noktası (VCP) işleviyle birlikte kullanıcı hedef kartını kullanın. Bu, aşağıdaki çevresel hazırlığın uygulanmasını gerektirir:

  1. e-Link32 Pro'nun bir tarafı Mini USB kablosu kullanılarak bir bilgisayara, diğer tarafı ise 10 bitlik gri kablosu aracılığıyla kullanıcı hedef kartına bağlanır. Kablonun SWD arayüzleri ile hedef panel arasındaki bağlantı, Şekil 17-(a)'da gösterildiği gibi Dupont hatları kullanılarak gerçekleştirilir.
  2. e-Link32 Pro'nun seri iletişim pinleri Pin#7 VCOM_RXD ve Pin#8-VCOM_TXD'dir. Bunlar Şekil 17-(b)'de gösterildiği gibi kullanıcı hedef kartının TX ve RX pinlerine bağlanmalıdır.
    Şekil 17. e-Link32 Pro + Kullanıcı Hedef Kartı Blok Şeması
    Kullanıcı Hedef Panosu

Derleme ve Test
Bu bölüm “application\Module_UART\UART_Module_Ex” dosyasını alacaktır.ampeski sevgilim olarak le”ampDerleme ve test süreçlerini tanıtmak. Bundan önce önceki bölümde açıklanan tüm hazırlıkların yapıldığından ve Tera Term terminal yazılımının indirildiğinden emin olun.

Ayrıntılı işlem adımları aşağıda özetlenmiştir.
Adım 1. Açılış testi

Donanım ortamını önceki bölümde anlatıldığı gibi ayarlayın. Güç açıldıktan sonra Başlangıç ​​Kitinin sol alt kısmındaki D9 güç LED'i yanacaktır. USB numaralandırma tamamlandıktan sonra e-Link1 Lite'ta sağ üstteki D32 USB LED'i yanacaktır. Uzun bir süre sonra D1 yanmazsa USB kablosunun iletişim kurabildiğini doğrulayın. Değilse, çıkarın ve tekrar takın.

Adım 2. Bir proje oluşturun
Uygulamayı açın\Module_UART\UART_Module_Example klasöründe _CreateProject.bat dosyasına tıklayın file Şekil 18'de gösterildiği gibi bir proje oluşturmak için. Bu uygulama notu HT32F52352 Başlangıç ​​Kitini kullandığından, MDK_ARMv52352 klasörü altında bulunan “Project_5.uvprojx” Keil IDE projesini açın.

Şekil 18. Proje Oluşturmak için _CreateProject.bat dosyasını çalıştırın
Proje Oluştur

Adım 3. Derleyin ve programlayın
Proje açıldıktan sonra, önce “Oluştur”a tıklayın (veya “F7” kısayolunu kullanın), ardından “İndir”e tıklayın (veya “F8” kısayolunu kullanın). Bundan sonra derleme ve indirme sonuçları Oluşturma Çıktısı penceresinde görüntülenecektir. Bkz. Şekil 19.

Şekil 19. Oluşturma ve İndirme Sonuçları
Sonuçları Oluşturun ve İndirin

Adım 4. Tera Term yazılımını açın ve seri bağlantı noktasını yapılandırın
Tera Term yazılımını ve COM bağlantı noktasını açın. Başlangıç ​​Kitinin oluşturduğu COM port numarasının doğru olup olmadığına dikkat edin. Daha sonra konfigürasyon arayüzüne girmek için “Kurulum >> Seri Port”a tıklayın. “Module_UART” uygulama kodunun UART arayüz konfigürasyonu “Terminal Yazılımı” bölümünde anlatılmıştır. Kurulum sonucu Şekil 20'de gösterilmektedir.

Şekil 20. Tera Term Seri Port Kurulum Sonucu
Kurulum Sonucu
5. Adım. Sistemi sıfırlayın ve test edin
SK sıfırlama tuşuna basın – B1 Sıfırlama. Bundan sonra bir “ABCBu testtir!” mesaj olacak
API aracılığıyla iletilecek ve Şekil 21'de gösterildiği gibi Tera Term penceresinde görüntülenecektir. Alma işleviyle ilgili olarak, Tera Term penceresine veri girilirken alma arabelleği uzunluğunu belirlemek için ilgili API kullanılacaktır. PC'ye alınan veri 5 byte'a ulaştığında, alınan 5 byte'lık veri sırayla gönderilecektir. Şekil 22’de görüldüğü gibi sıralı olarak girilen veriler API üzerinden alınan ve belirlenen “1, 2, 3, 4, 5” şeklindedir. Bundan sonra beş girişten sonra “1, 2, 3, 4, 5” verileri yazdırılacaktır.

Şekil 21. “Module_UART” Uygulama Kodu İşlevsel Testi – İletim
Uygulama Kodu İşlevsel Testi

Şekil 22. “Module_UART” Uygulama Kodu İşlevsel Testi – Alma
Uygulama Kodu İşlevsel Testi

Nakil Talimatları
Bu bölümde API'lerin kullanıcının projelerine nasıl entegre edileceği anlatılacaktır.
Adım 1. uart_module.c'yi ekleyin file projeye. Kullanıcı klasörüne sağ tıklayın. “Mevcut Ekle”yi seçin File'Kullanıcı'yı Gruplandırın…”, ardından uart_module.c'yi seçin. file ve Şekil 23'te gösterildiği gibi "Ekle"ye tıklayın. Dizin Yapısı bölümüne bakın. file yol açıklaması.

Şekil 23. uart_module.c'yi ekleyin File projeye
File projeye

Adım 2. Ring_buffer.c'yi ekleyin file projeye. Kullanıcı klasörüne sağ tıklayın. “Mevcut Ekle”yi seçin File'Kullanıcı'yı Gruplandırın…”, ardından ring_buffer.c'yi seçin. file ve Şekil 24'te gösterildiği gibi “Ekle”ye tıklayın.\ Dizin Yapısı bölümüne bakın. file yol açıklaması.
Şekil 24. Ring_buffer.c'yi ekleyin File projeye 
File projeye

Adım 3. API başlığını dahil et file Şekil 25'te gösterildiği gibi main.c'nin başlangıcına. (Dahili: #include “middleware/uart_module.h”)
Şekil 25. API Başlığını Ekle File ana.c'ye
API Başlığını Ekle File

Adım 4. Ht32_board_config.h'yi kullanarak UART iletişimi için gereken ayarları uygulayın. file. Bu, “Ayar Açıklaması” ve “Ayar Değişikliği ve SSS” bölümlerinde ayrıntılı olarak anlatılmaktadır.

Değişiklikleri ve SSS'leri Ayarlama 

Bu bölümde UART ayarlarının nasıl değiştirileceği anlatılacak ve kullanım sırasında karşılaşılan bazı genel sorular açıklanacaktır.

UART Pin Atamasını Değiştir 

  1. HT32F52352 Veri Sayfası "Pin Ataması" bölümüne bakarak, cihaz tipinin AFIO işlevlerini listeleyen Alternatif İşlev Eşleme tablosuna bakın. UART ile ilgili pinler için Şekil 6'da gösterildiği gibi “AF26 USART/UART” sütununa bakın.
    Şekil 26. HT32F52352 Alternatif Fonksiyon Eşleme Tablosu
    Alternatif Fonksiyon Eşleme Tablosu
  2. Bu adım, kullanıcılara yukarıdaki tabloyu kullanarak ilgili UART pinlerini bulma konusunda rehberlik edecektir. HT32F52352 eskiampdosya USART1'i varsayılan kanal olarak kullanır. Burada TX ve RX pinleri USR1_TX ve USR1_RX olup sırasıyla PA4 ve PA5 üzerinde bulunmaktadır. Şekil 27'de “ht32_board_config.h” dosyasındaki pin yazışmaları ve pin tanımları gösterilmektedir. Pin atama tablosundaki boş "Paket" alanları, bu pakette ilgili GPIO'ların olmadığı anlamına gelir. UART pinlerini değiştirmek için hedef pin konumlarını bulun ve “ht32_board_config.h”yi kullanarak pinleri yeniden tanımlayın. file.
    Şekil 27. Pin Uyumluluğu ve Ayar Değişikliği
    Ayar Değişikliği

UART Kanalı ekleyin
HT32F52352 HTCFG_UARTM_CH1'i eski olarak alıyorumampBurada yeni bir UART kanalının nasıl ekleneceği anlatılmaktadır.

ht32_board_config.h dosyasını değiştirin file
HT32F52352 Veri Sayfası "Pin Ataması" bölümüne bakarak, cihaz tipinin AFIO işlevlerini listeleyen Alternatif İşlev Eşleme tablosuna bakın. USART1, HTCFG_UARTM_CH0 olarak kullanıldığından, yeni eklenen HTCFG_UARTM_CH1, USART0'ı seçebilir. Burada, TX ve RX pinleri, Şekil 2'in üst yarısında gösterildiği gibi sırasıyla PA3 ve PA28'te bulunur. İlgili değişiklikler, Şekil'de kırmızı noktalı kutuyla gösterildiği gibi, ht120_board_config.h'deki 126~32 kod satırları kullanılarak uygulanır. 28.

Şekil 28. UART Kanalı Ekleme
UART Kanalı

SSS
Q: Derleme ve Test bölümünün 5. adımında iletim işlevsellik testi normaldir. Burada “ABCBu bir testtir!” mesaj başarıyla görüntülendi, ancak alma işlevi için neden beş giriş değeri döndürülmüyor ve görüntülenmiyor?
A: UART Jumper-J2'nin MCU UART RX ve DAP_Tx pinlerinin bir jumper kullanılarak kısa devre yapılıp yapılmadığını kontrol edin. “Module_UART” uygulama kodunun e-Link32 Lite'ın Sanal COM Bağlantı Noktasını (VCP) kullanması gerektiğinden, kısa devre ayarı Şekil 2'da gösterildiği gibi UART Jumper-J29'nin sol iki pinine uygulanmalıdır.

Şekil 29. UART Jumper-J2 Ayarı
UART Jumper'ı

S:Sonra “Oluştur” (veya “F7” kısayolu) yürütülürken, ürün yazılımı kitaplığı sürümünün gerekli olandan daha eski olduğunu belirten bir hata mesajı görünüyor mu? Bkz. Şekil 30.
A: "Module_UART" uygulama kodunun uygulanmasının uart_module.c/h dosyasını içermesi gerekir fileBelirli bir ürün yazılımı kitaplığı sürümü için gereksinime sahip olan. Böyle bir hata mesajının çıkması, halihazırda kullanılan donanım yazılımı kitaplığının daha eski bir sürüm olduğu anlamına gelir. Bu nedenle “Firmware Library” bölümünde verilen bağlantıdan en yeni sürümün indirilmesi gerekmektedir.

Şekil 30. Donanım Yazılımı Kitaplığı Sürümü Hata Mesajı
Sürüm Hata Mesajı

Çözüm

Bu belge, kullanıcıların "Module_UART" uygulama kodunu ve UART iletişim protokolünü daha iyi anlamalarına yardımcı olmak için temel bir giriş sağlamıştır. Bunu kaynağın indirilmesi ve hazırlanması izledi. İşlevsel Açıklama bölümü şunları tanıttı: file dizin yapısı, API mimarisi, API açıklaması ve API kullanımıampLes. Kullanım Talimatları bölümü, "Module_UART" uygulama kodunun çevresel hazırlığını, derlenmesini ve test edilmesini gösterdi. Ayrıca, karşılaşılabilecek bazı genel sorunların açıklanmasının yanı sıra kod nakli ve değişiklik ayarına ilişkin talimatlar da sağlandı. Tüm bunların bir araya getirilmesi, kullanıcıların API'leri nasıl kullanacaklarını hızlı bir şekilde anlamalarına ve ardından başlangıç ​​için gereken süreyi azaltmalarına olanak tanıyacak.

Referans Malzemesi

Daha fazla bilgi için Holtek'e bakın. website: www.holtek.com

Sürümler ve Değişiklik Bilgileri

Tarih Yazar Serbest bırakmak Değişiklik Bilgileri
2022.04.30 Chi-Yu Tsai (Chi-Yu Tsai) V1.00 İlk versiyon

Sorumluluk reddi

Bu sayfada görünen tüm bilgiler, ticari markalar, logolar, grafikler, videolar, ses klipleri, bağlantılar ve diğer öğeler website ('Bilgi') yalnızca referans amaçlıdır ve önceden haber verilmeksizin ve Holtek Semiconductor Inc. ve ilgili şirketlerinin takdirine bağlı olarak herhangi bir zamanda değiştirilebilir (bundan böyle 'Holtek', 'şirket', 'biz', ' biz' veya 'bizim'). Holtek, bu konudaki Bilgilerin doğruluğunu sağlamak için çaba sarf ederken, webHoltek tarafından Bilgilerin doğruluğu konusunda açık veya zımni hiçbir garanti verilmemektedir. Holtek herhangi bir yanlışlık veya sızıntıdan dolayı hiçbir sorumluluk kabul etmez.
Holtek, bu ürünün kullanımından veya kullanımıyla bağlantılı olarak ortaya çıkan hiçbir zarardan (bilgisayar virüsü, sistem sorunları veya veri kaybı dahil ancak bunlarla sınırlı olmamak üzere) sorumlu olmayacaktır. webherhangi bir parti tarafından site. Bu alanda siteyi ziyaret etmenizi sağlayan bağlantılar olabilir. webdiğer şirketlerin siteleri.
Bunlar websiteler Holtek tarafından kontrol edilmez. Holtek, bu tür sitelerde görüntülenen hiçbir Bilgiye ilişkin hiçbir sorumluluk ve garanti taşımayacaktır. Diğerlerine köprüler websitelerin riski size aittir.

Sorumluluğun Sınırlandırılması

Holtek Limited hiçbir durumda başka bir tarafa karşı erişiminiz veya kullanımınızla bağlantılı olarak doğrudan veya dolaylı olarak neden olunan herhangi bir kayıp veya hasardan sorumlu tutulamaz. website, içeriği veya herhangi bir mal, malzeme veya hizmet.

Yürürlükteki Hukuk
Burada yer alan Feragatname website, Çin Cumhuriyeti yasalarına göre yönetilecek ve yorumlanacaktır. Kullanıcılar, Çin Cumhuriyeti mahkemelerinin münhasır olmayan yargı yetkisine tabi olacaktır.

Sorumluluk Reddi Güncellemesi
Holtek, Feragatnameyi önceden haber vererek veya bildirmeden herhangi bir zamanda güncelleme hakkını saklı tutar; tüm değişiklikler, webalan.

Belgeler / Kaynaklar

HOLTEK HT32 MCU UART Uygulama Notu [pdf] Kullanıcı Kılavuzu
HT32 MCU, UART Uygulama Notu, HT32 MCU UART, Uygulama Notu, HT32, MCU UART Uygulama Notu, HT32 MCU UART Uygulama Notu

Referanslar

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar işaretlenmiştir *